Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 5 from a total of 5 transactions
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
Token
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ERC20Detailed.sol"; import "./ERC20.sol"; contract Token is ERC20Detailed, ERC20 { mapping(address => bool) public liquidityPool; mapping(address => bool) public _isExcludedFromFee; mapping(address => uint256) public lastTrade; uint8 private buyTax; uint8 private sellTax; uint8 private transferTax; uint256 private taxAmount; address private marketingPool; event changeLiquidityPoolStatus(address lpAddress, bool status); event changeMarketingPool(address marketingPool); event change_isExcludedFromFee(address _address, bool status); constructor() ERC20Detailed("AIdoge", "AIdoge", 18) { uint256 totalTokens = 100000000 * 10**uint256(decimals()); _mint(msg.sender, totalTokens); sellTax = 0; buyTax = 0; transferTax = 0; marketingPool = 0xFC0E6473f5A8C21c406013b59c0C0ecf00931111; } function claimBalance() external { payable(marketingPool).transfer(address(this).balance); } function claimToken(address token, uint256 amount) external onlyOwner { ERC20(token).transfer(marketingPool, amount); } function _transfer(address sender, address receiver, uint256 amount) internal virtual override { require(receiver != address(this), string("No transfers to contract allowed.")); if(liquidityPool[sender] == true) { //It's an LP Pair and it's a buy taxAmount = (amount * buyTax) / 100; } else if(liquidityPool[receiver] == true) { //It's an LP Pair and it's a sell taxAmount = (amount * sellTax) / 100; lastTrade[sender] = block.timestamp; } else if(_isExcludedFromFee[sender] || _isExcludedFromFee[receiver] || sender == marketingPool || receiver == marketingPool) { taxAmount = 0; } else { taxAmount = (amount * transferTax) / 100; } if(taxAmount > 0) { super._transfer(sender, marketingPool, taxAmount); } super._transfer(sender, receiver, amount - taxAmount); } function transferToAddressETH(address payable recipient, uint256 amount) private { recipient.transfer(amount); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ERCContext.sol"; import "./IERC20.sol"; import "./ERCOwnable.sol"; import "./SafeMath.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20Mintable}. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is ERCContext, IERC20, ERCOwnable { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ 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; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero") ); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ 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"); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal { 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); } /** * @dev Destroys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See {_burn} and {_approve}. */ function _burnFrom(address account, uint256 amount) internal { _burn(account, amount); _approve( account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance") ); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Optional functions from the ERC20 standard. */ abstract contract ERC20Detailed { string private _name; string private _symbol; uint8 private _decimals; /** * @dev Sets the values for `name`, `symbol`, and `decimals`. All three of * these values are immutable: they can only be set once during * construction. */ constructor( string memory name_, string memory symbol_, uint8 decimals_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; } /** * @dev Returns the name of the token. */ function name() public view returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view returns (uint8) { return _decimals; } }
// SPDX-License-Identifier: MIT 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 GSN 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 ERCContext { // Empty internal constructor, to prevent people from mistakenly deploying // an instance of this contract, which should be used via inheritance. constructor() {} function _msgSender() internal view returns (address payable) { return payable(msg.sender); } function _msgData() internal view returns (bytes memory) { this; return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./ERCContext.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. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract ERCOwnable is ERCContext { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(isOwner(), "Ownable: caller is not the owner"); _; } /** * @dev Returns true if the caller is the current owner. */ function isOwner() public view returns (bool) { return _msgSender() == _owner; } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public onlyOwner { _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). */ function _transferOwnership(address newOwner) internal { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; 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 * * 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); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. * not same */ library SafeMath { /** * @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) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @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 sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. * * _Available since v2.4.0._ */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @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) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts 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) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts 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. * * _Available since v2.4.0._ */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"lpAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"changeLiquidityPoolStatus","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingPool","type":"address"}],"name":"changeMarketingPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"change_isExcludedFromFee","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"claimBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastTrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"liquidityPool","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b506040805180820182526006808252654149646f676560d01b602080840182905284518086019095529184529083015290601260006200005284826200036b565b5060016200006183826200036b565b506002805460ff191660ff929092169190911790555060009050620000833390565b60028054610100600160a81b0319166101006001600160a01b03841690810291909117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000620000e860025460ff1690565b620000f89060ff16600a6200054a565b62000108906305f5e1006200055f565b90506200011633826200014f565b506009805462ffffff19169055600b80546001600160a01b03191673fc0e6473f5a8c21c406013b59c0c0ecf009311111790556200058f565b6001600160a01b038216620001ab5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b620001c7816005546200025a60201b620007471790919060201c565b6005556001600160a01b038216600090815260036020908152604090912054620001fc918390620007476200025a821b17901c565b6001600160a01b0383166000818152600360205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906200024e9085815260200190565b60405180910390a35050565b60008062000269838562000579565b905083811015620002bd5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620001a2565b90505b92915050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002f157607f821691505b6020821081036200031257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200036657600081815260208120601f850160051c81016020861015620003415750805b601f850160051c820191505b8181101562000362578281556001016200034d565b5050505b505050565b81516001600160401b03811115620003875762000387620002c6565b6200039f81620003988454620002dc565b8462000318565b602080601f831160018114620003d75760008415620003be5750858301515b600019600386901b1c1916600185901b17855562000362565b600085815260208120601f198616915b828110156200040857888601518255948401946001909101908401620003e7565b5085821015620004275787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200048e57816000190482111562000472576200047262000437565b808516156200048057918102915b93841c939080029062000452565b509250929050565b600082620004a757506001620002c0565b81620004b657506000620002c0565b8160018114620004cf5760028114620004da57620004fa565b6001915050620002c0565b60ff841115620004ee57620004ee62000437565b50506001821b620002c0565b5060208310610133831016604e8410600b84101617156200051f575081810a620002c0565b6200052b83836200044d565b806000190482111562000542576200054262000437565b029392505050565b600062000558838362000496565b9392505050565b8082028115828204841417620002c057620002c062000437565b80820180821115620002c057620002c062000437565b610ffb806200059f6000396000f3fe6080604052600436106101185760003560e01c8063768dc710116100a0578063a9059cbb11610064578063a9059cbb1461032d578063c0806db61461034d578063c26d7be01461037d578063dd62ed3e146103aa578063f2fde38b146103f057600080fd5b8063768dc7101461026d5780638da5cb5b1461029d5780638f32d59b146102d357806395d89b41146102f8578063a457c2d71461030d57600080fd5b806323b872dd116100e757806323b872dd146101c057806330509bca146101e0578063313ce567146101f5578063395093511461021757806370a082311461023757600080fd5b806306fdde0314610124578063095ea7b31461014f5780631698755f1461017f57806318160ddd146101a157600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b50610139610410565b6040516101469190610d42565b60405180910390f35b34801561015b57600080fd5b5061016f61016a366004610dac565b6104a2565b6040519015158152602001610146565b34801561018b57600080fd5b5061019f61019a366004610dac565b6104b9565b005b3480156101ad57600080fd5b506005545b604051908152602001610146565b3480156101cc57600080fd5b5061016f6101db366004610dd6565b610599565b3480156101ec57600080fd5b5061019f610602565b34801561020157600080fd5b5060025460405160ff9091168152602001610146565b34801561022357600080fd5b5061016f610232366004610dac565b61063e565b34801561024357600080fd5b506101b2610252366004610e12565b6001600160a01b031660009081526003602052604090205490565b34801561027957600080fd5b5061016f610288366004610e12565b60076020526000908152604090205460ff1681565b3480156102a957600080fd5b5060025461010090046001600160a01b03166040516001600160a01b039091168152602001610146565b3480156102df57600080fd5b5060025461010090046001600160a01b0316331461016f565b34801561030457600080fd5b50610139610674565b34801561031957600080fd5b5061016f610328366004610dac565b610683565b34801561033957600080fd5b5061016f610348366004610dac565b6106d2565b34801561035957600080fd5b5061016f610368366004610e12565b60066020526000908152604090205460ff1681565b34801561038957600080fd5b506101b2610398366004610e12565b60086020526000908152604090205481565b3480156103b657600080fd5b506101b26103c5366004610e2d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156103fc57600080fd5b5061019f61040b366004610e12565b6106df565b60606000805461041f90610e60565b80601f016020809104026020016040519081016040528092919081815260200182805461044b90610e60565b80156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b5050505050905090565b60006104af3384846107ad565b5060015b92915050565b60025461010090046001600160a01b0316331461051d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600b5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105949190610e9a565b505050565b60006105a68484846108d2565b6105f884336105f385604051806060016040528060288152602001610f79602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610ab6565b6107ad565b5060019392505050565b600b546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561063b573d6000803e3d6000fd5b50565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916104af9185906105f39086610747565b60606001805461041f90610e60565b60006104af33846105f385604051806060016040528060258152602001610fa1602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190610ab6565b60006104af3384846108d2565b60025461010090046001600160a01b0316331461073e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610514565b61063b81610af0565b6000806107548385610ed2565b9050838110156107a65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610514565b9392505050565b6001600160a01b03831661080f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610514565b6001600160a01b0382166108705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610514565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b306001600160a01b0316826001600160a01b03161415604051806060016040528060218152602001610f58602191399061091f5760405162461bcd60e51b81526004016105149190610d42565b506001600160a01b03831660009081526006602052604090205460ff16151560010361096a576009546064906109589060ff1683610ee5565b6109629190610efc565b600a55610a79565b6001600160a01b03821660009081526006602052604090205460ff1615156001036109d4576009546064906109a790610100900460ff1683610ee5565b6109b19190610efc565b600a556001600160a01b0383166000908152600860205260409020429055610a79565b6001600160a01b03831660009081526007602052604090205460ff1680610a1357506001600160a01b03821660009081526007602052604090205460ff165b80610a2b5750600b546001600160a01b038481169116145b80610a435750600b546001600160a01b038381169116145b15610a52576000600a55610a79565b600954606490610a6b9062010000900460ff1683610ee5565b610a759190610efc565b600a555b600a5415610a9e57600b54600a54610a9e9185916001600160a01b0390911690610bbc565b6105948383600a5484610ab19190610f1e565b610bbc565b60008184841115610ada5760405162461bcd60e51b81526004016105149190610d42565b506000610ae78486610f1e565b95945050505050565b6001600160a01b038116610b555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610514565b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b038316610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610514565b6001600160a01b038216610c825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610514565b610cbf81604051806060016040528060268152602001610f32602691396001600160a01b0386166000908152600360205260409020549190610ab6565b6001600160a01b038085166000908152600360205260408082209390935590841681522054610cee9082610747565b6001600160a01b0380841660008181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108c59085815260200190565b600060208083528351808285015260005b81811015610d6f57858101830151858201604001528201610d53565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610da757600080fd5b919050565b60008060408385031215610dbf57600080fd5b610dc883610d90565b946020939093013593505050565b600080600060608486031215610deb57600080fd5b610df484610d90565b9250610e0260208501610d90565b9150604084013590509250925092565b600060208284031215610e2457600080fd5b6107a682610d90565b60008060408385031215610e4057600080fd5b610e4983610d90565b9150610e5760208401610d90565b90509250929050565b600181811c90821680610e7457607f821691505b602082108103610e9457634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610eac57600080fd5b815180151581146107a657600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156104b3576104b3610ebc565b80820281158282048414176104b3576104b3610ebc565b600082610f1957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104b3576104b3610ebc56fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654e6f207472616e736665727320746f20636f6e747261637420616c6c6f7765642e45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f6e486500001cea403a91ae1f5f481a2077bb7f8c2eaba35ffb200ce1c3237b964736f6c63430008120033
Deployed Bytecode
0x6080604052600436106101185760003560e01c8063768dc710116100a0578063a9059cbb11610064578063a9059cbb1461032d578063c0806db61461034d578063c26d7be01461037d578063dd62ed3e146103aa578063f2fde38b146103f057600080fd5b8063768dc7101461026d5780638da5cb5b1461029d5780638f32d59b146102d357806395d89b41146102f8578063a457c2d71461030d57600080fd5b806323b872dd116100e757806323b872dd146101c057806330509bca146101e0578063313ce567146101f5578063395093511461021757806370a082311461023757600080fd5b806306fdde0314610124578063095ea7b31461014f5780631698755f1461017f57806318160ddd146101a157600080fd5b3661011f57005b600080fd5b34801561013057600080fd5b50610139610410565b6040516101469190610d42565b60405180910390f35b34801561015b57600080fd5b5061016f61016a366004610dac565b6104a2565b6040519015158152602001610146565b34801561018b57600080fd5b5061019f61019a366004610dac565b6104b9565b005b3480156101ad57600080fd5b506005545b604051908152602001610146565b3480156101cc57600080fd5b5061016f6101db366004610dd6565b610599565b3480156101ec57600080fd5b5061019f610602565b34801561020157600080fd5b5060025460405160ff9091168152602001610146565b34801561022357600080fd5b5061016f610232366004610dac565b61063e565b34801561024357600080fd5b506101b2610252366004610e12565b6001600160a01b031660009081526003602052604090205490565b34801561027957600080fd5b5061016f610288366004610e12565b60076020526000908152604090205460ff1681565b3480156102a957600080fd5b5060025461010090046001600160a01b03166040516001600160a01b039091168152602001610146565b3480156102df57600080fd5b5060025461010090046001600160a01b0316331461016f565b34801561030457600080fd5b50610139610674565b34801561031957600080fd5b5061016f610328366004610dac565b610683565b34801561033957600080fd5b5061016f610348366004610dac565b6106d2565b34801561035957600080fd5b5061016f610368366004610e12565b60066020526000908152604090205460ff1681565b34801561038957600080fd5b506101b2610398366004610e12565b60086020526000908152604090205481565b3480156103b657600080fd5b506101b26103c5366004610e2d565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156103fc57600080fd5b5061019f61040b366004610e12565b6106df565b60606000805461041f90610e60565b80601f016020809104026020016040519081016040528092919081815260200182805461044b90610e60565b80156104985780601f1061046d57610100808354040283529160200191610498565b820191906000526020600020905b81548152906001019060200180831161047b57829003601f168201915b5050505050905090565b60006104af3384846107ad565b5060015b92915050565b60025461010090046001600160a01b0316331461051d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b600b5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303816000875af1158015610570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105949190610e9a565b505050565b60006105a68484846108d2565b6105f884336105f385604051806060016040528060288152602001610f79602891396001600160a01b038a1660009081526004602090815260408083203384529091529020549190610ab6565b6107ad565b5060019392505050565b600b546040516001600160a01b03909116904780156108fc02916000818181858888f1935050505015801561063b573d6000803e3d6000fd5b50565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916104af9185906105f39086610747565b60606001805461041f90610e60565b60006104af33846105f385604051806060016040528060258152602001610fa1602591393360009081526004602090815260408083206001600160a01b038d1684529091529020549190610ab6565b60006104af3384846108d2565b60025461010090046001600160a01b0316331461073e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610514565b61063b81610af0565b6000806107548385610ed2565b9050838110156107a65760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610514565b9392505050565b6001600160a01b03831661080f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610514565b6001600160a01b0382166108705760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610514565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b306001600160a01b0316826001600160a01b03161415604051806060016040528060218152602001610f58602191399061091f5760405162461bcd60e51b81526004016105149190610d42565b506001600160a01b03831660009081526006602052604090205460ff16151560010361096a576009546064906109589060ff1683610ee5565b6109629190610efc565b600a55610a79565b6001600160a01b03821660009081526006602052604090205460ff1615156001036109d4576009546064906109a790610100900460ff1683610ee5565b6109b19190610efc565b600a556001600160a01b0383166000908152600860205260409020429055610a79565b6001600160a01b03831660009081526007602052604090205460ff1680610a1357506001600160a01b03821660009081526007602052604090205460ff165b80610a2b5750600b546001600160a01b038481169116145b80610a435750600b546001600160a01b038381169116145b15610a52576000600a55610a79565b600954606490610a6b9062010000900460ff1683610ee5565b610a759190610efc565b600a555b600a5415610a9e57600b54600a54610a9e9185916001600160a01b0390911690610bbc565b6105948383600a5484610ab19190610f1e565b610bbc565b60008184841115610ada5760405162461bcd60e51b81526004016105149190610d42565b506000610ae78486610f1e565b95945050505050565b6001600160a01b038116610b555760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610514565b6002546040516001600160a01b0380841692610100900416907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600280546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6001600160a01b038316610c205760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610514565b6001600160a01b038216610c825760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610514565b610cbf81604051806060016040528060268152602001610f32602691396001600160a01b0386166000908152600360205260409020549190610ab6565b6001600160a01b038085166000908152600360205260408082209390935590841681522054610cee9082610747565b6001600160a01b0380841660008181526003602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108c59085815260200190565b600060208083528351808285015260005b81811015610d6f57858101830151858201604001528201610d53565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610da757600080fd5b919050565b60008060408385031215610dbf57600080fd5b610dc883610d90565b946020939093013593505050565b600080600060608486031215610deb57600080fd5b610df484610d90565b9250610e0260208501610d90565b9150604084013590509250925092565b600060208284031215610e2457600080fd5b6107a682610d90565b60008060408385031215610e4057600080fd5b610e4983610d90565b9150610e5760208401610d90565b90509250929050565b600181811c90821680610e7457607f821691505b602082108103610e9457634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215610eac57600080fd5b815180151581146107a657600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156104b3576104b3610ebc565b80820281158282048414176104b3576104b3610ebc565b600082610f1957634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156104b3576104b3610ebc56fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63654e6f207472616e736665727320746f20636f6e747261637420616c6c6f7765642e45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f6e486500001cea403a91ae1f5f481a2077bb7f8c2eaba35ffb200ce1c3237b964736f6c63430008120033
Deployed Bytecode Sourcemap
116:2188:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:77:2;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2410:151:1;;;;;;;;;;-1:-1:-1;2410:151:1;;;;;:::i;:::-;;:::i;:::-;;;1169:14:7;;1162:22;1144:41;;1132:2;1117:18;2410:151:1;1004:187:7;1056:126:0;;;;;;;;;;-1:-1:-1;1056:126:0;;;;;:::i;:::-;;:::i;:::-;;1465:94:1;;;;;;;;;;-1:-1:-1;1541:12:1;;1465:94;;;1342:25:7;;;1330:2;1315:18;1465:94:1;1196:177:7;3007:355:1;;;;;;;;;;-1:-1:-1;3007:355:1;;;;;:::i;:::-;;:::i;951:99:0:-;;;;;;;;;;;;;:::i;1456:77:2:-;;;;;;;;;;-1:-1:-1;1518:9:2;;1456:77;;1518:9;;;;1853:36:7;;1841:2;1826:18;1456:77:2;1711:184:7;3745:200:1;;;;;;;;;;-1:-1:-1;3745:200:1;;;;;:::i;:::-;;:::i;1614:113::-;;;;;;;;;;-1:-1:-1;1614:113:1;;;;;:::i;:::-;-1:-1:-1;;;;;1703:18:1;1680:7;1703:18;;;:9;:18;;;;;;;1614:113;214:50:0;;;;;;;;;;-1:-1:-1;214:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;928:73:4;;;;;;;;;;-1:-1:-1;989:6:4;;;;;-1:-1:-1;;;;;989:6:4;928:73;;-1:-1:-1;;;;;2255:32:7;;;2237:51;;2225:2;2210:18;928:73:4;2091:203:7;1262:88:4;;;;;;;;;;-1:-1:-1;1338:6:4;;;;;-1:-1:-1;;;;;1338:6:4;862:10:3;1322:22:4;1262:88;;838:81:2;;;;;;;;;;;;;:::i;4418:279:1:-;;;;;;;;;;-1:-1:-1;4418:279:1;;;;;:::i;:::-;;:::i;1922:165::-;;;;;;;;;;-1:-1:-1;1922:165:1;;;;;:::i;:::-;;:::i;164:45:0:-;;;;;;;;;;-1:-1:-1;164:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;269:44;;;;;;;;;;-1:-1:-1;269:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;2142:137:1;;;;;;;;;;-1:-1:-1;2142:137:1;;;;;:::i;:::-;-1:-1:-1;;;;;2246:18:1;;;2223:7;2246:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2142:137;1495:103:4;;;;;;;;;;-1:-1:-1;1495:103:4;;;;;:::i;:::-;;:::i;652:77:2:-;689:13;718:5;711:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;652:77;:::o;2410:151:1:-;2485:4;2498:39;862:10:3;2521:7:1;2530:6;2498:8;:39::i;:::-;-1:-1:-1;2551:4:1;2410:151;;;;;:::o;1056:126:0:-;1338:6:4;;;;;-1:-1:-1;;;;;1338:6:4;862:10:3;1322:22:4;1114:54;;;;-1:-1:-1;;;1114:54:4;;3151:2:7;1114:54:4;;;3133:21:7;;;3170:18;;;3163:30;3229:34;3209:18;;;3202:62;3281:18;;1114:54:4;;;;;;;;;1154:13:0::1;::::0;1132:44:::1;::::0;-1:-1:-1;;;1132:44:0;;-1:-1:-1;;;;;1154:13:0;;::::1;1132:44;::::0;::::1;3484:51:7::0;3551:18;;;3544:34;;;1132:21:0;;::::1;::::0;::::1;::::0;3457:18:7;;1132:44:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1056:126:::0;;:::o;3007:355:1:-;3133:4;3146:36;3156:6;3164:9;3175:6;3146:9;:36::i;:::-;3189:149;3206:6;862:10:3;3242:89:1;3280:6;3242:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3242:19:1;;;;;;:11;:19;;;;;;;;862:10:3;3242:33:1;;;;;;;;;;:37;:89::i;:::-;3189:8;:149::i;:::-;-1:-1:-1;3352:4:1;3007:355;;;;;:::o;951:99:0:-;998:13;;990:54;;-1:-1:-1;;;;;998:13:0;;;;1022:21;990:54;;;;;998:13;990:54;998:13;990:54;1022:21;998:13;990:54;;;;;;;;;;;;;;;;;;;;;951:99::o;3745:200:1:-;862:10:3;3825:4:1;3870:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;3870:34:1;;;;;;;;;;3825:4;;3838:83;;3861:7;;3870:50;;3909:10;3870:38;:50::i;838:81:2:-;877:13;906:7;899:14;;;;;:::i;4418:279:1:-;4503:4;4516:157;862:10:3;4554:7:1;4570:96;4609:15;4570:96;;;;;;;;;;;;;;;;;862:10:3;4570:25:1;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4570:34:1;;;;;;;;;;;;:38;:96::i;1922:165::-;2008:4;2021:42;862:10:3;2045:9:1;2056:6;2021:9;:42::i;1495:103:4:-;1338:6;;;;;-1:-1:-1;;;;;1338:6:4;862:10:3;1322:22:4;1114:54;;;;-1:-1:-1;;;1114:54:4;;3151:2:7;1114:54:4;;;3133:21:7;;;3170:18;;;3163:30;3229:34;3209:18;;;3202:62;3281:18;;1114:54:4;2949:356:7;1114:54:4;1564:28:::1;1583:8;1564:18;:28::i;885:167:6:-:0;943:7;;971:5;975:1;971;:5;:::i;:::-;959:17;;996:1;991;:6;;983:46;;;;-1:-1:-1;;;983:46:6;;4335:2:7;983:46:6;;;4317:21:7;4374:2;4354:18;;;4347:30;4413:29;4393:18;;;4386:57;4460:18;;983:46:6;4133:351:7;983:46:6;1045:1;885:167;-1:-1:-1;;;885:167:6:o;7235:340:1:-;-1:-1:-1;;;;;7345:19:1;;7337:68;;;;-1:-1:-1;;;7337:68:1;;4691:2:7;7337:68:1;;;4673:21:7;4730:2;4710:18;;;4703:30;4769:34;4749:18;;;4742:62;-1:-1:-1;;;4820:18:7;;;4813:34;4864:19;;7337:68:1;4489:400:7;7337:68:1;-1:-1:-1;;;;;7420:21:1;;7412:68;;;;-1:-1:-1;;;7412:68:1;;5096:2:7;7412:68:1;;;5078:21:7;5135:2;5115:18;;;5108:30;5174:34;5154:18;;;5147:62;-1:-1:-1;;;5225:18:7;;;5218:32;5267:19;;7412:68:1;4894:398:7;7412:68:1;-1:-1:-1;;;;;7489:18:1;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7537:32;;1342:25:7;;;7537:32:1;;1315:18:7;7537:32:1;;;;;;;;7235:340;;;:::o;1188:885:0:-;1318:4;-1:-1:-1;;;;;1298:25:0;:8;-1:-1:-1;;;;;1298:25:0;;;1325:43;;;;;;;;;;;;;;;;;1290:79;;;;;-1:-1:-1;;;1290:79:0;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1381:21:0;;;;;;:13;:21;;;;;;;;:29;;:21;:29;1378:534;;1483:6;;1493:3;;1474:15;;1483:6;;1474;:15;:::i;:::-;1473:23;;;;:::i;:::-;1461:9;:35;1378:534;;;-1:-1:-1;;;;;1513:23:0;;;;;;:13;:23;;;;;;;;:31;;:23;:31;1510:402;;1624:7;;1635:3;;1615:16;;1624:7;;;;;1615:6;:16;:::i;:::-;1614:24;;;;:::i;:::-;1602:9;:36;-1:-1:-1;;;;;1649:17:0;;;;;;:9;:17;;;;;1669:15;1649:35;;1510:402;;;-1:-1:-1;;;;;1703:26:0;;;;;;:18;:26;;;;;;;;;:58;;-1:-1:-1;;;;;;1733:28:0;;;;;;:18;:28;;;;;;;;1703:58;:85;;;-1:-1:-1;1775:13:0;;-1:-1:-1;;;;;1765:23:0;;;1775:13;;1765:23;1703:85;:114;;;-1:-1:-1;1804:13:0;;-1:-1:-1;;;;;1792:25:0;;;1804:13;;1792:25;1703:114;1700:212;;;1840:1;1828:9;:13;1700:212;;;1886:11;;1901:3;;1877:20;;1886:11;;;;;1877:6;:20;:::i;:::-;1876:28;;;;:::i;:::-;1864:9;:40;1700:212;1923:9;;:13;1920:84;;1971:13;;1986:9;;1947:49;;1963:6;;-1:-1:-1;;;;;1971:13:0;;;;1947:15;:49::i;:::-;2014:53;2030:6;2038:8;2057:9;;2048:6;:18;;;;:::i;:::-;2014:15;:53::i;1750:198:6:-;1856:7;1888:12;1880:6;;;;1872:29;;;;-1:-1:-1;;;1872:29:6;;;;;;;;:::i;:::-;-1:-1:-1;1908:9:6;1920:5;1924:1;1920;:5;:::i;:::-;1908:17;1750:198;-1:-1:-1;;;;;1750:198:6:o;1696:215:4:-;-1:-1:-1;;;;;1766:22:4;;1758:73;;;;-1:-1:-1;;;1758:73:4;;6027:2:7;1758:73:4;;;6009:21:7;6066:2;6046:18;;;6039:30;6105:34;6085:18;;;6078:62;-1:-1:-1;;;6156:18:7;;;6149:36;6202:19;;1758:73:4;5825:402:7;1758:73:4;1864:6;;1843:38;;-1:-1:-1;;;;;1843:38:4;;;;1864:6;;;;;1843:38;;;;;1888:6;:17;;-1:-1:-1;;;;;1888:17:4;;;;;-1:-1:-1;;;;;;1888:17:4;;;;;;;;;1696:215::o;5157:477:1:-;-1:-1:-1;;;;;5279:20:1;;5271:70;;;;-1:-1:-1;;;5271:70:1;;6434:2:7;5271:70:1;;;6416:21:7;6473:2;6453:18;;;6446:30;6512:34;6492:18;;;6485:62;-1:-1:-1;;;6563:18:7;;;6556:35;6608:19;;5271:70:1;6232:401:7;5271:70:1;-1:-1:-1;;;;;5356:23:1;;5348:71;;;;-1:-1:-1;;;5348:71:1;;6840:2:7;5348:71:1;;;6822:21:7;6879:2;6859:18;;;6852:30;6918:34;6898:18;;;6891:62;-1:-1:-1;;;6969:18:7;;;6962:33;7012:19;;5348:71:1;6638:399:7;5348:71:1;5448;5470:6;5448:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5448:17:1;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;5428:17:1;;;;;;;:9;:17;;;;;;:91;;;;5549:20;;;;;;;:32;;5574:6;5549:24;:32::i;:::-;-1:-1:-1;;;;;5526:20:1;;;;;;;:9;:20;;;;;;;:55;;;;5593:35;;;;;;;;;;5621:6;1342:25:7;;1330:2;1315:18;;1196:177;14:548;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:7;;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:7: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;2299:260::-;2367:6;2375;2428:2;2416:9;2407:7;2403:23;2399:32;2396:52;;;2444:1;2441;2434:12;2396:52;2467:29;2486:9;2467:29;:::i;:::-;2457:39;;2515:38;2549:2;2538:9;2534:18;2515:38;:::i;:::-;2505:48;;2299:260;;;;;:::o;2564:380::-;2643:1;2639:12;;;;2686;;;2707:61;;2761:4;2753:6;2749:17;2739:27;;2707:61;2814:2;2806:6;2803:14;2783:18;2780:38;2777:161;;2860:10;2855:3;2851:20;2848:1;2841:31;2895:4;2892:1;2885:15;2923:4;2920:1;2913:15;2777:161;;2564:380;;;:::o;3589:277::-;3656:6;3709:2;3697:9;3688:7;3684:23;3680:32;3677:52;;;3725:1;3722;3715:12;3677:52;3757:9;3751:16;3810:5;3803:13;3796:21;3789:5;3786:32;3776:60;;3832:1;3829;3822:12;3871:127;3932:10;3927:3;3923:20;3920:1;3913:31;3963:4;3960:1;3953:15;3987:4;3984:1;3977:15;4003:125;4068:9;;;4089:10;;;4086:36;;;4102:18;;:::i;5297:168::-;5370:9;;;5401;;5418:15;;;5412:22;;5398:37;5388:71;;5439:18;;:::i;5470:217::-;5510:1;5536;5526:132;;5580:10;5575:3;5571:20;5568:1;5561:31;5615:4;5612:1;5605:15;5643:4;5640:1;5633:15;5526:132;-1:-1:-1;5672:9:7;;5470:217::o;5692:128::-;5759:9;;;5780:11;;;5777:37;;;5794:18;;:::i
Swarm Source
ipfs://f6e486500001cea403a91ae1f5f481a2077bb7f8c2eaba35ffb200ce1c3237b9
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.