Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
TokenTracker
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
BITCORN
Compiler Version
v0.8.21+commit.d9974bed
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-08-25 */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.21; /** * @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; } } /** * @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 * `onlyOwner`, 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() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(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 onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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); /** * @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 `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } /** * @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 {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead 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 Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override 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. This is the default value returned by this function, unless * it's overridden. * * 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 virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, 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}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); 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 virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + 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 virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This 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: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, 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: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(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 virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This 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 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); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } /** * @title Bitcorn * @dev memecoin token with additional functionality * for creating a liquidity pool on Uniswap v3 * * ____ _ _____ ____ ____ ____ _ * / __\/ \/__ __\/ _\/ _ \/ __\/ \ /| * | | //| | / \ | / | / \|| \/|| |\ || * | |_\\| | | | | \__| \_/|| /| | \|| * \____/\_/ \_/ \____/\____/\_/\_\\_/ \| * */ /** * @title INonfungiblePositionManager * @dev Interface for interacting with the Nonfungible * Position Manager contract in Uniswap V3. */ interface INonfungiblePositionManager { struct MintParams { address token0; address token1; uint24 fee; int24 tickLower; int24 tickUpper; uint256 amount0Desired; uint256 amount1Desired; uint256 amount0Min; uint256 amount1Min; address recipient; uint256 deadline; } function mint(MintParams calldata params) external payable returns ( uint256 tokenId, uint128 liquidity, uint256 amount0, uint256 amount1 ); function createAndInitializePoolIfNecessary( address token0, address token1, uint24 fee, uint160 sqrtPriceX96 ) external payable returns (address pool); } contract BITCORN is ERC20, Ownable { INonfungiblePositionManager posMan = INonfungiblePositionManager(0xC36442b4a4522E871399CD717aBDD847Ab11FE88); address constant weth = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // mainnet address constant team = 0x5173704089193BA017f0f3df4cD8f5279dBA72a0; address constant marketing = 0x7D3Bef7b27F1d374A9721248376E55BC3Cd56D97; uint immutable uniswapSupply = 495_000_000 * 10 ** decimals(); uint immutable marketingSupply = 2_500_000 * 10 ** decimals(); uint immutable teamSupply = 2_500_000 * 10 ** decimals(); uint24 constant fee = 3000; uint160 sqrtPriceX96; int24 minTick; int24 maxTick; address public pool; address token0; address token1; uint amount0Desired; uint amount1Desired; /** * @dev Constructor method initializes the ERC20 Token. * @notice Mints tokens to contract and marketing wallet. * Sets up initial liquidity pool but liquidity cannot * be added in the same tx */ constructor() ERC20("TRUMPYOBAMA0MARIOBIDENPUTININU", "BITCORN") { _mint(address(this), uniswapSupply); _mint(marketing, marketingSupply); _mint(team, teamSupply); fixOrdering(); pool = posMan.createAndInitializePoolIfNecessary(token0, token1, fee, sqrtPriceX96); } /** * @dev Private function to establish the token pairs * for liquidity pool based on lexicographical ordering. * @notice Changing the price requires minTick/maxTick * to be adjusted as well. */ function fixOrdering() private { if (address(this) < weth) { token0 = address(this); token1 = weth; sqrtPriceX96 = 56022299269611287018253980; amount0Desired = uniswapSupply; amount1Desired = 0; minTick = -145080; maxTick = 887220; } else { token0 = weth; token1 = address(this); sqrtPriceX96 = 112040883463736372645278684184779; amount0Desired = 0; amount1Desired = uniswapSupply; minTick = -887220; maxTick = 145080; } } /** * @dev Public onlyOwner function to provide liquidity to * the established Uniswap pool. */ function addLiquidity() public onlyOwner { IERC20(address(this)).approve(address(posMan), uniswapSupply); posMan.mint(INonfungiblePositionManager.MintParams({ token0: token0, token1: token1, fee: fee, tickLower: minTick, tickUpper: maxTick, amount0Desired: amount0Desired, amount1Desired: amount1Desired, amount0Min: 0, amount1Min: 0, recipient: address(team), deadline: block.timestamp + 1200 })); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","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":"pool","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":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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
60e0604052600680546001600160a01b03191673c36442b4a4522e871399cd717abdd847ab11fe8817905562000033601290565b6200004090600a6200057c565b6200005090631d8119c062000593565b608052620000616012600a6200057c565b6200007090622625a062000593565b60a052620000816012600a6200057c565b6200009090622625a062000593565b60c0523480156200009f575f80fd5b506040518060400160405280601e81526020017f5452554d50594f42414d41304d4152494f424944454e505554494e494e550000815250604051806040016040528060078152602001662124aa21a7a92760c91b81525081600390816200010791906200064c565b5060046200011682826200064c565b505050620001336200012d6200025660201b60201c565b6200025a565b6200014730608051620002ab60201b60201c565b6200016f737d3bef7b27f1d374a9721248376e55bc3cd56d9760a051620002ab60201b60201c565b62000197735173704089193ba017f0f3df4cd8f5279dba72a060c051620002ab60201b60201c565b620001a16200036f565b600654600954600a546007546040516309f56ab160e11b81526001600160a01b0393841660048201529183166024830152610bb86044830152821660648201529116906313ead562906084016020604051808303815f875af11580156200020a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000230919062000714565b600880546001600160a01b0319166001600160a01b039290921691909117905562000752565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620003065760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546200031991906200073c565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2301015620003fa57600980546001600160a01b03199081163017909155600a805490911673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217905560078054608051600b555f600c55790d89b4fdc9480000000000000000002e572eedc500da59b4ae9c6001600160d01b0319909116179055565b600980546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc217909155600a805490911630179055600780545f600b55608051600c55790236b8f2764c0000000000000586279e9d50e9036be98d1280cb6001600160d01b0319909116179055565b505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004c157815f1904821115620004a557620004a56200046d565b80851615620004b357918102915b93841c939080029062000486565b509250929050565b5f82620004d95750600162000576565b81620004e757505f62000576565b81600181146200050057600281146200050b576200052b565b600191505062000576565b60ff8411156200051f576200051f6200046d565b50506001821b62000576565b5060208310610133831016604e8410600b841016171562000550575081810a62000576565b6200055c838362000481565b805f19048211156200057257620005726200046d565b0290505b92915050565b5f6200058c60ff841683620004c9565b9392505050565b80820281158282048414176200057657620005766200046d565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005d657607f821691505b602082108103620005f557634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000468575f81815260208120601f850160051c81016020861015620006235750805b601f850160051c820191505b8181101562000644578281556001016200062f565b505050505050565b81516001600160401b03811115620006685762000668620005ad565b6200068081620006798454620005c1565b84620005fb565b602080601f831160018114620006b6575f84156200069e5750858301515b5f19600386901b1c1916600185901b17855562000644565b5f85815260208120601f198616915b82811015620006e657888601518255948401946001909101908401620006c5565b50858210156200070457878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f6020828403121562000725575f80fd5b81516001600160a01b03811681146200058c575f80fd5b808201808211156200057657620005766200046d565b60805160a05160c051610cef620007775f395f50505f50505f6104400152610cef5ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c8063715018a611610093578063a9059cbb11610063578063a9059cbb14610210578063dd62ed3e14610223578063e8078d9414610236578063f2fde38b1461023e575f80fd5b8063715018a6146101da5780638da5cb5b146101e457806395d89b41146101f5578063a457c2d7146101fd575f80fd5b806323b872dd116100ce57806323b872dd1461017d578063313ce56714610190578063395093511461019f57806370a08231146101b2575f80fd5b806306fdde03146100ff578063095ea7b31461011d57806316f0115b1461014057806318160ddd1461016b575b5f80fd5b610107610251565b6040516101149190610a18565b60405180910390f35b61013061012b366004610a7e565b6102e1565b6040519015158152602001610114565b600854610153906001600160a01b031681565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061018b366004610aa6565b6102fa565b60405160128152602001610114565b6101306101ad366004610a7e565b61031d565b61016f6101c0366004610adf565b6001600160a01b03165f9081526020819052604090205490565b6101e261033e565b005b6005546001600160a01b0316610153565b610107610351565b61013061020b366004610a7e565b610360565b61013061021e366004610a7e565b6103df565b61016f610231366004610aff565b6103ec565b6101e2610416565b6101e261024c366004610adf565b6105bd565b60606003805461026090610b30565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610b30565b80156102d75780601f106102ae576101008083540402835291602001916102d7565b820191905f5260205f20905b8154815290600101906020018083116102ba57829003601f168201915b5050505050905090565b5f336102ee818585610636565b60019150505b92915050565b5f33610307858285610759565b6103128585856107cb565b506001949350505050565b5f336102ee81858561032f83836103ec565b6103399190610b68565b610636565b61034661096d565b61034f5f6109c7565b565b60606004805461026090610b30565b5f338161036d82866103ec565b9050838110156103d25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6103128286868403610636565b5f336102ee8185856107cb565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61041e61096d565b60065460405163095ea7b360e01b81526001600160a01b0390911660048201527f00000000000000000000000000000000000000000000000000000000000000006024820152309063095ea7b3906044016020604051808303815f875af115801561048b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104af9190610b87565b5060065460408051610160810182526009546001600160a01b039081168252600a5481166020830152610bb892820192909252600754600160a01b8104600290810b6060840152600160b81b909104900b6080820152600b5460a0820152600c5460c08201525f60e08201819052610100820152735173704089193ba017f0f3df4cd8f5279dba72a06101208201529116906388316456906101408101610558426104b0610b68565b8152506040518263ffffffff1660e01b81526004016105779190610ba6565b6080604051808303815f875af1158015610593573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b79190610c6a565b50505050565b6105c561096d565b6001600160a01b03811661062a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c9565b610633816109c7565b50565b6001600160a01b0383166106985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103c9565b6001600160a01b0382166106f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103c9565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61076484846103ec565b90505f1981146105b757818110156107be5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103c9565b6105b78484848403610636565b6001600160a01b03831661082f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103c9565b6001600160a01b0382166108915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103c9565b6001600160a01b0383165f90815260208190526040902054818110156109085760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103c9565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105b7565b6005546001600160a01b0316331461034f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c9565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6020808352835180828501525f5b81811015610a4357858101830151858201604001528201610a27565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a79575f80fd5b919050565b5f8060408385031215610a8f575f80fd5b610a9883610a63565b946020939093013593505050565b5f805f60608486031215610ab8575f80fd5b610ac184610a63565b9250610acf60208501610a63565b9150604084013590509250925092565b5f60208284031215610aef575f80fd5b610af882610a63565b9392505050565b5f8060408385031215610b10575f80fd5b610b1983610a63565b9150610b2760208401610a63565b90509250929050565b600181811c90821680610b4457607f821691505b602082108103610b6257634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102f457634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610b97575f80fd5b81518015158114610af8575f80fd5b81516001600160a01b0316815261016081016020830151610bd260208401826001600160a01b03169052565b506040830151610be9604084018262ffffff169052565b506060830151610bfe606084018260020b9052565b506080830151610c13608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151610c59828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215610c7d575f80fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114610ca3575f80fd5b604086015160609096015194979096509250505056fea264697066735822122030a0139e028b443364ee232040a7ca3c9e8f2c24134d5474a24c1f724e80daf464736f6c63430008150033
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100fb575f3560e01c8063715018a611610093578063a9059cbb11610063578063a9059cbb14610210578063dd62ed3e14610223578063e8078d9414610236578063f2fde38b1461023e575f80fd5b8063715018a6146101da5780638da5cb5b146101e457806395d89b41146101f5578063a457c2d7146101fd575f80fd5b806323b872dd116100ce57806323b872dd1461017d578063313ce56714610190578063395093511461019f57806370a08231146101b2575f80fd5b806306fdde03146100ff578063095ea7b31461011d57806316f0115b1461014057806318160ddd1461016b575b5f80fd5b610107610251565b6040516101149190610a18565b60405180910390f35b61013061012b366004610a7e565b6102e1565b6040519015158152602001610114565b600854610153906001600160a01b031681565b6040516001600160a01b039091168152602001610114565b6002545b604051908152602001610114565b61013061018b366004610aa6565b6102fa565b60405160128152602001610114565b6101306101ad366004610a7e565b61031d565b61016f6101c0366004610adf565b6001600160a01b03165f9081526020819052604090205490565b6101e261033e565b005b6005546001600160a01b0316610153565b610107610351565b61013061020b366004610a7e565b610360565b61013061021e366004610a7e565b6103df565b61016f610231366004610aff565b6103ec565b6101e2610416565b6101e261024c366004610adf565b6105bd565b60606003805461026090610b30565b80601f016020809104026020016040519081016040528092919081815260200182805461028c90610b30565b80156102d75780601f106102ae576101008083540402835291602001916102d7565b820191905f5260205f20905b8154815290600101906020018083116102ba57829003601f168201915b5050505050905090565b5f336102ee818585610636565b60019150505b92915050565b5f33610307858285610759565b6103128585856107cb565b506001949350505050565b5f336102ee81858561032f83836103ec565b6103399190610b68565b610636565b61034661096d565b61034f5f6109c7565b565b60606004805461026090610b30565b5f338161036d82866103ec565b9050838110156103d25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6103128286868403610636565b5f336102ee8185856107cb565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61041e61096d565b60065460405163095ea7b360e01b81526001600160a01b0390911660048201527f000000000000000000000000000000000000000001997453c4de3f7a4f0000006024820152309063095ea7b3906044016020604051808303815f875af115801561048b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104af9190610b87565b5060065460408051610160810182526009546001600160a01b039081168252600a5481166020830152610bb892820192909252600754600160a01b8104600290810b6060840152600160b81b909104900b6080820152600b5460a0820152600c5460c08201525f60e08201819052610100820152735173704089193ba017f0f3df4cd8f5279dba72a06101208201529116906388316456906101408101610558426104b0610b68565b8152506040518263ffffffff1660e01b81526004016105779190610ba6565b6080604051808303815f875af1158015610593573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105b79190610c6a565b50505050565b6105c561096d565b6001600160a01b03811661062a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103c9565b610633816109c7565b50565b6001600160a01b0383166106985760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103c9565b6001600160a01b0382166106f95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103c9565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61076484846103ec565b90505f1981146105b757818110156107be5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103c9565b6105b78484848403610636565b6001600160a01b03831661082f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103c9565b6001600160a01b0382166108915760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103c9565b6001600160a01b0383165f90815260208190526040902054818110156109085760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103c9565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36105b7565b6005546001600160a01b0316331461034f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103c9565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6020808352835180828501525f5b81811015610a4357858101830151858201604001528201610a27565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610a79575f80fd5b919050565b5f8060408385031215610a8f575f80fd5b610a9883610a63565b946020939093013593505050565b5f805f60608486031215610ab8575f80fd5b610ac184610a63565b9250610acf60208501610a63565b9150604084013590509250925092565b5f60208284031215610aef575f80fd5b610af882610a63565b9392505050565b5f8060408385031215610b10575f80fd5b610b1983610a63565b9150610b2760208401610a63565b90509250929050565b600181811c90821680610b4457607f821691505b602082108103610b6257634e487b7160e01b5f52602260045260245ffd5b50919050565b808201808211156102f457634e487b7160e01b5f52601160045260245ffd5b5f60208284031215610b97575f80fd5b81518015158114610af8575f80fd5b81516001600160a01b0316815261016081016020830151610bd260208401826001600160a01b03169052565b506040830151610be9604084018262ffffff169052565b506060830151610bfe606084018260020b9052565b506080830151610c13608084018260020b9052565b5060a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151610c59828501826001600160a01b03169052565b505061014092830151919092015290565b5f805f8060808587031215610c7d575f80fd5b8451935060208501516fffffffffffffffffffffffffffffffff81168114610ca3575f80fd5b604086015160609096015194979096509250505056fea264697066735822122030a0139e028b443364ee232040a7ca3c9e8f2c24134d5474a24c1f724e80daf464736f6c63430008150033
Deployed Bytecode Sourcemap
20881:2947:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8561:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10921:201;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:1;;1162:22;1144:41;;1132:2;1117:18;10921:201:0;1004:187:1;21574:19:0;;;;;-1:-1:-1;;;;;21574:19:0;;;;;;-1:-1:-1;;;;;1469:32:1;;;1451:51;;1439:2;1424:18;21574:19:0;1305:203:1;9690:108:0;9778:12;;9690:108;;;1659:25:1;;;1647:2;1632:18;9690:108:0;1513:177:1;11702:261:0;;;;;;:::i;:::-;;:::i;9532:93::-;;;9615:2;2170:36:1;;2158:2;2143:18;9532:93:0;2028:184:1;12372:238:0;;;;;;:::i;:::-;;:::i;9861:127::-;;;;;;:::i;:::-;-1:-1:-1;;;;;9962:18:0;9935:7;9962:18;;;;;;;;;;;;9861:127;2535:103;;;:::i;:::-;;1894:87;1967:6;;-1:-1:-1;;;;;1967:6:0;1894:87;;8780:104;;;:::i;13113:436::-;;;;;;:::i;:::-;;:::i;10194:193::-;;;;;;:::i;:::-;;:::i;10450:151::-;;;;;;:::i;:::-;;:::i;23250:575::-;;;:::i;2793:201::-;;;;;;:::i;:::-;;:::i;8561:100::-;8615:13;8648:5;8641:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8561:100;:::o;10921:201::-;11004:4;683:10;11060:32;683:10;11076:7;11085:6;11060:8;:32::i;:::-;11110:4;11103:11;;;10921:201;;;;;:::o;11702:261::-;11799:4;683:10;11857:38;11873:4;683:10;11888:6;11857:15;:38::i;:::-;11906:27;11916:4;11922:2;11926:6;11906:9;:27::i;:::-;-1:-1:-1;11951:4:0;;11702:261;-1:-1:-1;;;;11702:261:0:o;12372:238::-;12460:4;683:10;12516:64;683:10;12532:7;12569:10;12541:25;683:10;12532:7;12541:9;:25::i;:::-;:38;;;;:::i;:::-;12516:8;:64::i;2535:103::-;1780:13;:11;:13::i;:::-;2600:30:::1;2627:1;2600:18;:30::i;:::-;2535:103::o:0;8780:104::-;8836:13;8869:7;8862:14;;;;;:::i;13113:436::-;13206:4;683:10;13206:4;13289:25;683:10;13306:7;13289:9;:25::i;:::-;13262:52;;13353:15;13333:16;:35;;13325:85;;;;-1:-1:-1;;;13325:85:0;;3487:2:1;13325:85:0;;;3469:21:1;3526:2;3506:18;;;3499:30;3565:34;3545:18;;;3538:62;-1:-1:-1;;;3616:18:1;;;3609:35;3661:19;;13325:85:0;;;;;;;;;13446:60;13455:5;13462:7;13490:15;13471:16;:34;13446:8;:60::i;10194:193::-;10273:4;683:10;10329:28;683:10;10346:2;10350:6;10329:9;:28::i;10450:151::-;-1:-1:-1;;;;;10566:18:0;;;10539:7;10566:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10450:151::o;23250:575::-;1780:13;:11;:13::i;:::-;23340:6:::1;::::0;23302:61:::1;::::0;-1:-1:-1;;;23302:61:0;;-1:-1:-1;;;;;23340:6:0;;::::1;23302:61;::::0;::::1;3865:51:1::0;23349:13:0::1;3932:18:1::0;;;3925:34;23317:4:0::1;::::0;23302:29:::1;::::0;3838:18:1;;23302:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;23374:6:0::1;::::0;23386:430:::1;::::0;;::::1;::::0;::::1;::::0;;23448:6:::1;::::0;-1:-1:-1;;;;;23448:6:0;;::::1;23386:430:::0;;23477:6:::1;::::0;;::::1;23386:430;::::0;::::1;::::0;21496:4:::1;23386:430:::0;;;;;;;23532:7:::1;::::0;-1:-1:-1;;;23532:7:0;::::1;;::::0;;::::1;23386:430:::0;;;;-1:-1:-1;;;23565:7:0;;::::1;::::0;::::1;23386:430:::0;;;;23603:14:::1;::::0;23386:430;;;;23648:14:::1;::::0;23386:430;;;;23374:6:::1;23386:430:::0;;;;;;23374:6:::1;23386:430:::0;;;21146:42:::1;23386:430:::0;;;;23374:6;::::1;::::0;:11:::1;::::0;23386:430;;;23782:22:::1;:15;23800:4;23782:22;:::i;:::-;23386:430;;::::0;23374:443:::1;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;23250:575::o:0;2793:201::-;1780:13;:11;:13::i;:::-;-1:-1:-1;;;;;2882:22:0;::::1;2874:73;;;::::0;-1:-1:-1;;;2874:73:0;;6366:2:1;2874:73:0::1;::::0;::::1;6348:21:1::0;6405:2;6385:18;;;6378:30;6444:34;6424:18;;;6417:62;-1:-1:-1;;;6495:18:1;;;6488:36;6541:19;;2874:73:0::1;6164:402:1::0;2874:73:0::1;2958:28;2977:8;2958:18;:28::i;:::-;2793:201:::0;:::o;17106:346::-;-1:-1:-1;;;;;17208:19:0;;17200:68;;;;-1:-1:-1;;;17200:68:0;;6773:2:1;17200:68:0;;;6755:21:1;6812:2;6792:18;;;6785:30;6851:34;6831:18;;;6824:62;-1:-1:-1;;;6902:18:1;;;6895:34;6946:19;;17200:68:0;6571:400:1;17200:68:0;-1:-1:-1;;;;;17287:21:0;;17279:68;;;;-1:-1:-1;;;17279:68:0;;7178:2:1;17279:68:0;;;7160:21:1;7217:2;7197:18;;;7190:30;7256:34;7236:18;;;7229:62;-1:-1:-1;;;7307:18:1;;;7300:32;7349:19;;17279:68:0;6976:398:1;17279:68:0;-1:-1:-1;;;;;17360:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;17412:32;;1659:25:1;;;17412:32:0;;1632:18:1;17412:32:0;;;;;;;17106:346;;;:::o;17743:419::-;17844:24;17871:25;17881:5;17888:7;17871:9;:25::i;:::-;17844:52;;-1:-1:-1;;17911:16:0;:37;17907:248;;17993:6;17973:16;:26;;17965:68;;;;-1:-1:-1;;;17965:68:0;;7581:2:1;17965:68:0;;;7563:21:1;7620:2;7600:18;;;7593:30;7659:31;7639:18;;;7632:59;7708:18;;17965:68:0;7379:353:1;17965:68:0;18077:51;18086:5;18093:7;18121:6;18102:16;:25;18077:8;:51::i;14019:806::-;-1:-1:-1;;;;;14116:18:0;;14108:68;;;;-1:-1:-1;;;14108:68:0;;7939:2:1;14108:68:0;;;7921:21:1;7978:2;7958:18;;;7951:30;8017:34;7997:18;;;7990:62;-1:-1:-1;;;8068:18:1;;;8061:35;8113:19;;14108:68:0;7737:401:1;14108:68:0;-1:-1:-1;;;;;14195:16:0;;14187:64;;;;-1:-1:-1;;;14187:64:0;;8345:2:1;14187:64:0;;;8327:21:1;8384:2;8364:18;;;8357:30;8423:34;8403:18;;;8396:62;-1:-1:-1;;;8474:18:1;;;8467:33;8517:19;;14187:64:0;8143:399:1;14187:64:0;-1:-1:-1;;;;;14337:15:0;;14315:19;14337:15;;;;;;;;;;;14371:21;;;;14363:72;;;;-1:-1:-1;;;14363:72:0;;8749:2:1;14363:72:0;;;8731:21:1;8788:2;8768:18;;;8761:30;8827:34;8807:18;;;8800:62;-1:-1:-1;;;8878:18:1;;;8871:36;8924:19;;14363:72:0;8547:402:1;14363:72:0;-1:-1:-1;;;;;14471:15:0;;;:9;:15;;;;;;;;;;;14489:20;;;14471:38;;14689:13;;;;;;;;;;:23;;;;;;14741:26;;1659:25:1;;;14689:13:0;;14741:26;;1632:18:1;14741:26:0;;;;;;;14780:37;18762:91;2059:132;1967:6;;-1:-1:-1;;;;;1967:6:0;683:10;2123:23;2115:68;;;;-1:-1:-1;;;2115:68:0;;9156:2:1;2115:68:0;;;9138:21:1;;;9175:18;;;9168:30;9234:34;9214:18;;;9207:62;9286:18;;2115:68:0;8954:356:1;3154:191:0;3247:6;;;-1:-1:-1;;;;;3264:17:0;;;-1:-1:-1;;;;;;3264:17:0;;;;;;;3297:40;;3247:6;;;3264:17;3247:6;;3297:40;;3228:16;;3297:40;3217:128;3154:191;:::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;1695:328::-;1772:6;1780;1788;1841:2;1829:9;1820:7;1816:23;1812:32;1809:52;;;1857:1;1854;1847:12;1809:52;1880:29;1899:9;1880:29;:::i;:::-;1870:39;;1928:38;1962:2;1951:9;1947:18;1928:38;:::i;:::-;1918:48;;2013:2;2002:9;1998:18;1985:32;1975:42;;1695:328;;;;;:::o;2217:186::-;2276:6;2329:2;2317:9;2308:7;2304:23;2300:32;2297:52;;;2345:1;2342;2335:12;2297:52;2368:29;2387:9;2368:29;:::i;:::-;2358:39;2217:186;-1:-1:-1;;;2217:186:1:o;2408:260::-;2476:6;2484;2537:2;2525:9;2516:7;2512:23;2508:32;2505:52;;;2553:1;2550;2543:12;2505:52;2576:29;2595:9;2576:29;:::i;:::-;2566:39;;2624:38;2658:2;2647:9;2643:18;2624:38;:::i;:::-;2614:48;;2408:260;;;;;:::o;2673:380::-;2752:1;2748:12;;;;2795;;;2816:61;;2870:4;2862:6;2858:17;2848:27;;2816:61;2923:2;2915:6;2912:14;2892:18;2889:38;2886:161;;2969:10;2964:3;2960:20;2957:1;2950:31;3004:4;3001:1;2994:15;3032:4;3029:1;3022:15;2886:161;;2673:380;;;:::o;3058:222::-;3123:9;;;3144:10;;;3141:133;;;3196:10;3191:3;3187:20;3184:1;3177:31;3231:4;3228:1;3221:15;3259:4;3256:1;3249:15;3970:277;4037:6;4090:2;4078:9;4069:7;4065:23;4061:32;4058:52;;;4106:1;4103;4096:12;4058:52;4138:9;4132:16;4191:5;4184:13;4177:21;4170:5;4167:32;4157:60;;4213:1;4210;4203:12;4445:1220;4665:13;;-1:-1:-1;;;;;1262:31:1;1250:44;;4633:3;4618:19;;4737:4;4729:6;4725:17;4719:24;4752:54;4800:4;4789:9;4785:20;4771:12;-1:-1:-1;;;;;1262:31:1;1250:44;;1196:104;4752:54;;4855:4;4847:6;4843:17;4837:24;4870:55;4919:4;4908:9;4904:20;4888:14;4328:8;4317:20;4305:33;;4252:92;4870:55;;4974:4;4966:6;4962:17;4956:24;4989:54;5037:4;5026:9;5022:20;5006:14;4424:1;4413:20;4401:33;;4349:91;4989:54;;5092:4;5084:6;5080:17;5074:24;5107:54;5155:4;5144:9;5140:20;5124:14;4424:1;4413:20;4401:33;;4349:91;5107:54;;5217:4;5209:6;5205:17;5199:24;5192:4;5181:9;5177:20;5170:54;5280:4;5272:6;5268:17;5262:24;5255:4;5244:9;5240:20;5233:54;5343:4;5335:6;5331:17;5325:24;5318:4;5307:9;5303:20;5296:54;5369:6;5429:2;5421:6;5417:15;5411:22;5406:2;5395:9;5391:18;5384:50;;5453:6;5508:2;5500:6;5496:15;5490:22;5521:54;5571:2;5560:9;5556:18;5540:14;-1:-1:-1;;;;;1262:31:1;1250:44;;1196:104;5521:54;-1:-1:-1;;5594:6:1;5642:15;;;5636:22;5616:18;;;;5609:50;4445:1220;:::o;5670:489::-;5767:6;5775;5783;5791;5844:3;5832:9;5823:7;5819:23;5815:33;5812:53;;;5861:1;5858;5851:12;5812:53;5890:9;5884:16;5874:26;;5943:2;5932:9;5928:18;5922:25;5987:34;5980:5;5976:46;5969:5;5966:57;5956:85;;6037:1;6034;6027:12;5956:85;6105:2;6090:18;;6084:25;6149:2;6134:18;;;6128:25;5670:489;;6060:5;;-1:-1:-1;5670:489:1;-1:-1:-1;;;5670:489:1:o
Swarm Source
ipfs://30a0139e028b443364ee232040a7ca3c9e8f2c24134d5474a24c1f724e80daf4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.