ERC-20
Farming
Overview
Max Total Supply
100,000,000 FRENS
Holders
861 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH
Onchain Market Cap
$65,443.00
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
97.282387024810696731 FRENSValue
$0.06 ( ~2.39392493345372E-05 Eth) [0.0001%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
FarmerFriends
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** Farmer Friends - An Automated Airdrop Farming tool for all. Unlock your crypto fortune effortlessly with our automated airdrop bot – sit back and watch the rewards rain down! Website: farmerfriends.app Telegram: https://t.me/farmerfriendsportal **/ // SPDX-License-Identifier: None pragma solidity ^0.8.9; // We're importing some fancy shit here, don't touch it import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "./interface/IUniswapRouter.sol"; import "./interface/IUniswapFactory.sol"; // Here's our token, Friend. It's utility token for Farmer Friends bot. contract FarmerFriends is ERC20, Ownable, ReentrancyGuard { // We will use uniswap router to setup the pool here. address public uniswapV2Pair; address public immutable WETH; IUniswapRouter public immutable uniswapV2Router; // It is simple to enable the trading instead of just allow every tom, dick and harry to jump in right away. Its one way, can be enabled only once. bool public tradingEnabled = false; // We need to make sure that no one fucks or controls our token so we have enabled the maxWallet here. bool public maxWalletEnabled = true; uint256 public maxWalletPercentage = 50; // marketing address address public marketingWallet; // default 3% for buy and sell uint256 public buyTax = 1000; uint256 public sellTax = 3000; uint256 private minSwapAmt; // if routers dont hold more tokens than maxWallet, we are fucked.. lol mapping(address => bool) private _isExcludedWallet; // block user list mapping(address => bool) private _blockUsers; // Event to emit when the Uniswap pair is updated event UniswapPairUpdated(address pair); // some shit we will never really use it. event MaxWalletEnabledUpdated(bool value); event MaxWalletPercentageUpdated(uint256 value); event MarketingWalletUpdated(address marketing); event ExclusionFromMaxWalletUpdated(address account, bool value); event TradingEnabledUpdated(bool value); // This is where the token takes the birth to help the farmers. Get ready, we gonna just farm to valhalla. constructor(address _router, address _marketing) ERC20("Farmer Friends", "FRENS") { _mint(msg.sender, 100000000 * 10 ** 18); // 100 mill is good enough, may be not but we will figure out. marketingWallet = _marketing; // fucking around with uniswap router. uniswapV2Router = IUniswapRouter(_router); // create pair WETH = uniswapV2Router.WETH(); uniswapV2Pair = IUniswapFactory(uniswapV2Router.factory()).createPair( WETH, address(this) ); // we gonna allow these ladies to take the big wallet _isExcludedWallet[_router] = true; _isExcludedWallet[owner()] = true; _isExcludedWallet[address(this)] = true; _isExcludedWallet[uniswapV2Pair] = true; } modifier nonBlock() { require(!_blockUsers[msg.sender], "Blocked user"); _; } // Making sure that we have a way to update the uniswap pair function updateUniswapPair(address pair) external onlyOwner { if (uniswapV2Pair != address(0)) delete _isExcludedWallet[uniswapV2Pair]; uniswapV2Pair = pair; _isExcludedWallet[uniswapV2Pair] = true; emit UniswapPairUpdated(pair); } // Well, at sometimes i am gonna be nice to allow people to hold as much as they want.. function updateMarketingWallet(address marketing) external onlyOwner { marketingWallet = marketing; emit MarketingWalletUpdated(marketing); } // Well, at sometimes i am gonna be nice to allow people to hold as much as they want.. function updateMaxWalletEnabled(bool value) external onlyOwner { maxWalletEnabled = value; emit MaxWalletEnabledUpdated(value); } // Sometimes its good to be decide and be like a king. function updateMaxWalletPercentage( uint256 newMaxWalletPercentage ) external onlyOwner { // Well even king also needs to in limits require(newMaxWalletPercentage <= 1e4, "Invalid percent"); maxWalletPercentage = newMaxWalletPercentage; emit MaxWalletPercentageUpdated(newMaxWalletPercentage); } // May be we need to use it in case if we plan to have some partnerships. shhhhh.. function setExclusionFromMaxWallet( address account, bool value ) external onlyOwner { _isExcludedWallet[account] = value; emit ExclusionFromMaxWalletUpdated(account, value); } // This is where it all starts, lets make some money... function enableTrading() external onlyOwner { tradingEnabled = true; emit TradingEnabledUpdated(true); } function setMinAmount(uint256 minAmt) external onlyOwner { minSwapAmt = minAmt; } function setTax(uint256 buy, uint256 sell) external onlyOwner { buyTax = buy; sellTax = sell; } function setBlockUser( address[] memory users, bool flag ) external onlyOwner { for (uint16 i; i < users.length; ++i) { if (flag) _blockUsers[users[i]] = true; else delete _blockUsers[users[i]]; } } function isExcludedWallet(address account) external view returns (bool) { return _isExcludedWallet[account]; } function isBlocked(address account) external view returns (bool) { return _blockUsers[account]; } function _distributeReward() internal { uint256 tokenAmt = balanceOf(address(this)); if (tokenAmt > minSwapAmt) { _approve(address(this), address(uniswapV2Router), tokenAmt); address[] memory paths = new address[](2); paths[0] = address(this); paths[1] = WETH; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmt, 0, paths, payable(marketingWallet), block.timestamp + 2 hours ); } } // Need to make sure the tokens are transfered with rules set. Do not fuck it up here sers function _transfer( address sender, address recipient, uint256 amount ) internal override nonBlock { require( !_blockUsers[recipient] && !_blockUsers[sender], "Blocked address" ); // If trading isn't enabled, hold your horses.. require( tradingEnabled || sender == owner() || recipient == owner(), "Trading is not enabled yet" ); // wtf are you gonna do now. if (maxWalletEnabled && !_isExcludedWallet[recipient]) { require( balanceOf(recipient) + amount <= (totalSupply() * maxWalletPercentage) / 1e4, "Exceeds max wallet limit" ); } uint256 taxAmt = 0; if (uniswapV2Pair == sender) { // if user buys token unchecked { if (!_isExcludedWallet[recipient]) taxAmt = (amount * buyTax) / 1e4; } } else if (uniswapV2Pair == recipient) { // if user sells token unchecked { if (!_isExcludedWallet[sender]) taxAmt = (amount * sellTax) / 1e4; } } else { _distributeReward(); } if (taxAmt != 0) { unchecked { super._transfer(sender, address(this), taxAmt); amount -= taxAmt; } } // if all good then just trust the smart contract -- lol -- super._transfer(sender, recipient, amount); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "../utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `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 anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual 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); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol) pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and making it call a * `private` function that does the actual work. */ modifier nonReentrant() { _nonReentrantBefore(); _; _nonReentrantAfter(); } function _nonReentrantBefore() private { // On the first call to nonReentrant, _status will be _NOT_ENTERED require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; } function _nonReentrantAfter() private { // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; import "./IERC20.sol"; import "./extensions/IERC20Metadata.sol"; import "../../utils/Context.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 {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]. * * 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}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * 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 value {ERC20} uses, unless this function is * 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 {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; import "../IERC20.sol"; /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @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); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.9; interface IUniswapFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity ^0.8.9; interface IUniswapRouter { function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function WETH() external view returns (address); function factory() external view returns (address); }
{ "optimizer": { "enabled": false, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_marketing","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"ExclusionFromMaxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"value","type":"bool"}],"name":"MaxWalletEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"MaxWalletPercentageUpdated","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":false,"internalType":"bool","name":"value","type":"bool"}],"name":"TradingEnabledUpdated","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":"pair","type":"address"}],"name":"UniswapPairUpdated","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"buyTax","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":[],"name":"enableTrading","outputs":[],"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":[{"internalType":"address","name":"account","type":"address"}],"name":"isBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"users","type":"address[]"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"setBlockUser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExclusionFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minAmt","type":"uint256"}],"name":"setMinAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTax","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"updateMaxWalletEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletPercentage","type":"uint256"}],"name":"updateMaxWalletPercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"}],"name":"updateUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60c06040526000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555060326008556103e8600a55610bb8600b553480156200005857600080fd5b5060405162003cb138038062003cb183398181016040528101906200007e91906200081b565b6040518060400160405280600e81526020017f4661726d657220467269656e64730000000000000000000000000000000000008152506040518060400160405280600581526020017f4652454e530000000000000000000000000000000000000000000000000000008152508160039081620000fb919062000adc565b5080600490816200010d919062000adc565b50505062000130620001246200054260201b60201c565b6200054a60201b60201c565b600160068190555062000155336a52b7d2dcc80cd2e40000006200061060201b60201c565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000218573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023e919062000bc3565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002bf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e5919062000bc3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b81526004016200032392919062000c06565b6020604051808303816000875af115801562000343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000369919062000bc3565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000620004176200077d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505062000d4e565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000682576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006799062000c94565b60405180910390fd5b6200069660008383620007a760201b60201c565b8060026000828254620006aa919062000ce5565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200075d919062000d31565b60405180910390a36200077960008383620007ac60201b60201c565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e382620007b6565b9050919050565b620007f581620007d6565b81146200080157600080fd5b50565b6000815190506200081581620007ea565b92915050565b60008060408385031215620008355762000834620007b1565b5b6000620008458582860162000804565b9250506020620008588582860162000804565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008e457607f821691505b602082108103620008fa57620008f96200089c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000925565b62000970868362000925565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009bd620009b7620009b18462000988565b62000992565b62000988565b9050919050565b6000819050919050565b620009d9836200099c565b620009f1620009e882620009c4565b84845462000932565b825550505050565b600090565b62000a08620009f9565b62000a15818484620009ce565b505050565b5b8181101562000a3d5762000a31600082620009fe565b60018101905062000a1b565b5050565b601f82111562000a8c5762000a568162000900565b62000a618462000915565b8101602085101562000a71578190505b62000a8962000a808562000915565b83018262000a1a565b50505b505050565b600082821c905092915050565b600062000ab16000198460080262000a91565b1980831691505092915050565b600062000acc838362000a9e565b9150826002028217905092915050565b62000ae78262000862565b67ffffffffffffffff81111562000b035762000b026200086d565b5b62000b0f8254620008cb565b62000b1c82828562000a41565b600060209050601f83116001811462000b54576000841562000b3f578287015190505b62000b4b858262000abe565b86555062000bbb565b601f19841662000b648662000900565b60005b8281101562000b8e5784890151825560018201915060208501945060208101905062000b67565b8683101562000bae578489015162000baa601f89168262000a9e565b8355505b6001600288020188555050505b505050505050565b60006020828403121562000bdc5762000bdb620007b1565b5b600062000bec8482850162000804565b91505092915050565b62000c0081620007d6565b82525050565b600060408201905062000c1d600083018562000bf5565b62000c2c602083018462000bf5565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c7c601f8362000c33565b915062000c898262000c44565b602082019050919050565b6000602082019050818103600083015262000caf8162000c6d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000cf28262000988565b915062000cff8362000988565b925082820190508082111562000d1a5762000d1962000cb6565b5b92915050565b62000d2b8162000988565b82525050565b600060208201905062000d48600083018462000d20565b92915050565b60805160a051612f2862000d89600039600081816107c2015281816119df0152611b12015260008181610cc80152611aa30152612f286000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c8063890a97c81161011a578063aacebbe3116100ad578063cc1776d31161007c578063cc1776d3146105b7578063d045a329146105d5578063dd62ed3e146105f3578063f2fde38b14610623578063fbac39511461063f57610206565b8063aacebbe314610545578063ad5c464814610561578063bfa7d0791461057f578063c12b7c4e1461059b57610206565b80638f660924116100e95780638f660924146104ab57806395d89b41146104c7578063a457c2d7146104e5578063a9059cbb1461051557610206565b8063890a97c814610437578063897b0637146104675780638a8c523c146104835780638da5cb5b1461048d57610206565b806349bd5a5e1161019d578063667f65261161016c578063667f6526146103a757806370a08231146103c3578063715018a6146103f357806373366782146103fd57806375f0a8741461041957610206565b806349bd5a5e1461032f5780634ada218b1461034d5780634f7041a51461036b578063599ca3971461038957610206565b806318160ddd116101d957806318160ddd1461029357806323b872dd146102b1578063313ce567146102e157806339509351146102ff57610206565b806306fdde031461020b578063095ea7b31461022957806313171799146102595780631694505e14610275575b600080fd5b61021361066f565b6040516102209190611ee8565b60405180910390f35b610243600480360381019061023e9190611fb2565b610701565b604051610250919061200d565b60405180910390f35b610273600480360381019061026e9190612054565b610724565b005b61027d6107c0565b60405161028a91906120f3565b60405180910390f35b61029b6107e4565b6040516102a8919061211d565b60405180910390f35b6102cb60048036038101906102c69190612138565b6107ee565b6040516102d8919061200d565b60405180910390f35b6102e961081d565b6040516102f691906121a7565b60405180910390f35b61031960048036038101906103149190611fb2565b610826565b604051610326919061200d565b60405180910390f35b61033761085d565b60405161034491906121d1565b60405180910390f35b610355610883565b604051610362919061200d565b60405180910390f35b610373610896565b604051610380919061211d565b60405180910390f35b61039161089c565b60405161039e919061211d565b60405180910390f35b6103c160048036038101906103bc91906121ec565b6108a2565b005b6103dd60048036038101906103d8919061222c565b6108bc565b6040516103ea919061211d565b60405180910390f35b6103fb610904565b005b61041760048036038101906104129190612259565b610918565b005b6104216109a6565b60405161042e91906121d1565b60405180910390f35b610451600480360381019061044c919061222c565b6109cc565b60405161045e919061200d565b60405180910390f35b610481600480360381019061047c9190612259565b610a22565b005b61048b610a34565b005b610495610a91565b6040516104a291906121d1565b60405180910390f35b6104c560048036038101906104c09190612286565b610abb565b005b6104cf610b17565b6040516104dc9190611ee8565b60405180910390f35b6104ff60048036038101906104fa9190611fb2565b610ba9565b60405161050c919061200d565b60405180910390f35b61052f600480360381019061052a9190611fb2565b610c20565b60405161053c919061200d565b60405180910390f35b61055f600480360381019061055a919061222c565b610c43565b005b610569610cc6565b60405161057691906121d1565b60405180910390f35b610599600480360381019061059491906123fb565b610cea565b005b6105b560048036038101906105b0919061222c565b610e07565b005b6105bf610fcc565b6040516105cc919061211d565b60405180910390f35b6105dd610fd2565b6040516105ea919061200d565b60405180910390f35b61060d60048036038101906106089190612457565b610fe5565b60405161061a919061211d565b60405180910390f35b61063d6004803603810190610638919061222c565b61106c565b005b6106596004803603810190610654919061222c565b6110ef565b604051610666919061200d565b60405180910390f35b60606003805461067e906124c6565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa906124c6565b80156106f75780601f106106cc576101008083540402835291602001916106f7565b820191906000526020600020905b8154815290600101906020018083116106da57829003601f168201915b5050505050905090565b60008061070c611145565b905061071981858561114d565b600191505092915050565b61072c611316565b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f555c233aa87282d55c607f02817e48e51fccedbfde0c746d362f1c5116283e5a82826040516107b49291906124f7565b60405180910390a15050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b6000806107f9611145565b9050610806858285611394565b610811858585611420565b60019150509392505050565b60006012905090565b600080610831611145565b90506108528185856108438589610fe5565b61084d919061254f565b61114d565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760149054906101000a900460ff1681565b600a5481565b60085481565b6108aa611316565b81600a8190555080600b819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61090c611316565b61091660006118fc565b565b610920611316565b612710811115610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c906125cf565b60405180910390fd5b806008819055507fd0a65de7e2cd9cbe3e815cb542d294bed1fe025cdb4aa6d144d354a25872eee48160405161099b919061211d565b60405180910390a150565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610a2a611316565b80600c8190555050565b610a3c611316565b6001600760146101000a81548160ff0219169083151502179055507fdc4df53cd70f6f18952922b97f80686da932854762f1af348a7a38b9e94b079e6001604051610a87919061200d565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ac3611316565b80600760156101000a81548160ff0219169083151502179055507fd982c622563a6daaedc772ff458962b9321222c14ea617530513490268018c3481604051610b0c919061200d565b60405180910390a150565b606060048054610b26906124c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b52906124c6565b8015610b9f5780601f10610b7457610100808354040283529160200191610b9f565b820191906000526020600020905b815481529060010190602001808311610b8257829003601f168201915b5050505050905090565b600080610bb4611145565b90506000610bc28286610fe5565b905083811015610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe90612661565b60405180910390fd5b610c14828686840361114d565b60019250505092915050565b600080610c2b611145565b9050610c38818585611420565b600191505092915050565b610c4b611316565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e781604051610cbb91906121d1565b60405180910390a150565b7f000000000000000000000000000000000000000000000000000000000000000081565b610cf2611316565b60005b82518161ffff161015610e02578115610d83576001600e6000858461ffff1681518110610d2557610d24612681565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610df1565b600e6000848361ffff1681518110610d9e57610d9d612681565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b80610dfb906126be565b9050610cf5565b505050565b610e0f611316565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed757600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdd2689cb5e1ca91bab290e22ada24c52705073cf17bacb82133714fa8427134481604051610fc191906121d1565b60405180910390a150565b600b5481565b600760159054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611074611316565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da9061275a565b60405180910390fd5b6110ec816118fc565b50565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b3906127ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112229061287e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611309919061211d565b60405180910390a3505050565b61131e611145565b73ffffffffffffffffffffffffffffffffffffffff1661133c610a91565b73ffffffffffffffffffffffffffffffffffffffff1614611392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611389906128ea565b60405180910390fd5b565b60006113a08484610fe5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461141a578181101561140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390612956565b60405180910390fd5b611419848484840361114d565b5b50505050565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a4906129c2565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115515750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790612a2e565b60405180910390fd5b600760149054906101000a900460ff16806115dd57506115ae610a91565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061161a57506115eb610a91565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090612a9a565b60405180910390fd5b600760159054906101000a900460ff1680156116bf5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173c576127106008546116d26107e4565b6116dc9190612aba565b6116e69190612b2b565b816116f0846108bc565b6116fa919061254f565b111561173b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173290612ba8565b60405180910390fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361180357600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117fe57612710600a548302816117fa576117f9612afc565b5b0490505b6118d2565b8273ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118c857600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118c357612710600b548302816118bf576118be612afc565b5b0490505b6118d1565b6118d06119c2565b5b5b600081146118eb576118e5843083611bd8565b80820391505b6118f6848484611bd8565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006119cd306108bc565b9050600c54811115611bd557611a04307f00000000000000000000000000000000000000000000000000000000000000008361114d565b6000600267ffffffffffffffff811115611a2157611a206122b8565b5b604051908082528060200260200182016040528015611a4f5781602001602082028036833780820191505090505b5090503081600081518110611a6757611a66612681565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611ad657611ad5612681565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c2042611b81919061254f565b6040518663ffffffff1660e01b8152600401611ba1959493929190612ce2565b600060405180830381600087803b158015611bbb57600080fd5b505af1158015611bcf573d6000803e3d6000fd5b50505050505b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e90612dae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90612e40565b60405180910390fd5b611cc1838383611e4e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e90612ed2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e35919061211d565b60405180910390a3611e48848484611e53565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e92578082015181840152602081019050611e77565b60008484015250505050565b6000601f19601f8301169050919050565b6000611eba82611e58565b611ec48185611e63565b9350611ed4818560208601611e74565b611edd81611e9e565b840191505092915050565b60006020820190508181036000830152611f028184611eaf565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f4982611f1e565b9050919050565b611f5981611f3e565b8114611f6457600080fd5b50565b600081359050611f7681611f50565b92915050565b6000819050919050565b611f8f81611f7c565b8114611f9a57600080fd5b50565b600081359050611fac81611f86565b92915050565b60008060408385031215611fc957611fc8611f14565b5b6000611fd785828601611f67565b9250506020611fe885828601611f9d565b9150509250929050565b60008115159050919050565b61200781611ff2565b82525050565b60006020820190506120226000830184611ffe565b92915050565b61203181611ff2565b811461203c57600080fd5b50565b60008135905061204e81612028565b92915050565b6000806040838503121561206b5761206a611f14565b5b600061207985828601611f67565b925050602061208a8582860161203f565b9150509250929050565b6000819050919050565b60006120b96120b46120af84611f1e565b612094565b611f1e565b9050919050565b60006120cb8261209e565b9050919050565b60006120dd826120c0565b9050919050565b6120ed816120d2565b82525050565b600060208201905061210860008301846120e4565b92915050565b61211781611f7c565b82525050565b6000602082019050612132600083018461210e565b92915050565b60008060006060848603121561215157612150611f14565b5b600061215f86828701611f67565b935050602061217086828701611f67565b925050604061218186828701611f9d565b9150509250925092565b600060ff82169050919050565b6121a18161218b565b82525050565b60006020820190506121bc6000830184612198565b92915050565b6121cb81611f3e565b82525050565b60006020820190506121e660008301846121c2565b92915050565b6000806040838503121561220357612202611f14565b5b600061221185828601611f9d565b925050602061222285828601611f9d565b9150509250929050565b60006020828403121561224257612241611f14565b5b600061225084828501611f67565b91505092915050565b60006020828403121561226f5761226e611f14565b5b600061227d84828501611f9d565b91505092915050565b60006020828403121561229c5761229b611f14565b5b60006122aa8482850161203f565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122f082611e9e565b810181811067ffffffffffffffff8211171561230f5761230e6122b8565b5b80604052505050565b6000612322611f0a565b905061232e82826122e7565b919050565b600067ffffffffffffffff82111561234e5761234d6122b8565b5b602082029050602081019050919050565b600080fd5b600061237761237284612333565b612318565b9050808382526020820190506020840283018581111561239a5761239961235f565b5b835b818110156123c357806123af8882611f67565b84526020840193505060208101905061239c565b5050509392505050565b600082601f8301126123e2576123e16122b3565b5b81356123f2848260208601612364565b91505092915050565b6000806040838503121561241257612411611f14565b5b600083013567ffffffffffffffff8111156124305761242f611f19565b5b61243c858286016123cd565b925050602061244d8582860161203f565b9150509250929050565b6000806040838503121561246e5761246d611f14565b5b600061247c85828601611f67565b925050602061248d85828601611f67565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124de57607f821691505b6020821081036124f1576124f0612497565b5b50919050565b600060408201905061250c60008301856121c2565b6125196020830184611ffe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061255a82611f7c565b915061256583611f7c565b925082820190508082111561257d5761257c612520565b5b92915050565b7f496e76616c69642070657263656e740000000000000000000000000000000000600082015250565b60006125b9600f83611e63565b91506125c482612583565b602082019050919050565b600060208201905081810360008301526125e8816125ac565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061264b602583611e63565b9150612656826125ef565b604082019050919050565b6000602082019050818103600083015261267a8161263e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff82169050919050565b60006126c9826126b0565b915061ffff82036126dd576126dc612520565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612744602683611e63565b915061274f826126e8565b604082019050919050565b6000602082019050818103600083015261277381612737565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006127d6602483611e63565b91506127e18261277a565b604082019050919050565b60006020820190508181036000830152612805816127c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612868602283611e63565b91506128738261280c565b604082019050919050565b600060208201905081810360008301526128978161285b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128d4602083611e63565b91506128df8261289e565b602082019050919050565b60006020820190508181036000830152612903816128c7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612940601d83611e63565b915061294b8261290a565b602082019050919050565b6000602082019050818103600083015261296f81612933565b9050919050565b7f426c6f636b656420757365720000000000000000000000000000000000000000600082015250565b60006129ac600c83611e63565b91506129b782612976565b602082019050919050565b600060208201905081810360008301526129db8161299f565b9050919050565b7f426c6f636b656420616464726573730000000000000000000000000000000000600082015250565b6000612a18600f83611e63565b9150612a23826129e2565b602082019050919050565b60006020820190508181036000830152612a4781612a0b565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000612a84601a83611e63565b9150612a8f82612a4e565b602082019050919050565b60006020820190508181036000830152612ab381612a77565b9050919050565b6000612ac582611f7c565b9150612ad083611f7c565b9250828202612ade81611f7c565b91508282048414831517612af557612af4612520565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b3682611f7c565b9150612b4183611f7c565b925082612b5157612b50612afc565b5b828204905092915050565b7f45786365656473206d61782077616c6c6574206c696d69740000000000000000600082015250565b6000612b92601883611e63565b9150612b9d82612b5c565b602082019050919050565b60006020820190508181036000830152612bc181612b85565b9050919050565b6000819050919050565b6000612bed612be8612be384612bc8565b612094565b611f7c565b9050919050565b612bfd81612bd2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c3881611f3e565b82525050565b6000612c4a8383612c2f565b60208301905092915050565b6000602082019050919050565b6000612c6e82612c03565b612c788185612c0e565b9350612c8383612c1f565b8060005b83811015612cb4578151612c9b8882612c3e565b9750612ca683612c56565b925050600181019050612c87565b5085935050505092915050565b6000612ccc826120c0565b9050919050565b612cdc81612cc1565b82525050565b600060a082019050612cf7600083018861210e565b612d046020830187612bf4565b8181036040830152612d168186612c63565b9050612d256060830185612cd3565b612d32608083018461210e565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d98602583611e63565b9150612da382612d3c565b604082019050919050565b60006020820190508181036000830152612dc781612d8b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e2a602383611e63565b9150612e3582612dce565b604082019050919050565b60006020820190508181036000830152612e5981612e1d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612ebc602683611e63565b9150612ec782612e60565b604082019050919050565b60006020820190508181036000830152612eeb81612eaf565b905091905056fea264697066735822122060f549f471b2dca2ee9b402950c301a10e3ad4f371f79bd5235644391596afb664736f6c634300081100330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008a3e3bab28e3d65f2b54e2caa680e018910862e4
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102065760003560e01c8063890a97c81161011a578063aacebbe3116100ad578063cc1776d31161007c578063cc1776d3146105b7578063d045a329146105d5578063dd62ed3e146105f3578063f2fde38b14610623578063fbac39511461063f57610206565b8063aacebbe314610545578063ad5c464814610561578063bfa7d0791461057f578063c12b7c4e1461059b57610206565b80638f660924116100e95780638f660924146104ab57806395d89b41146104c7578063a457c2d7146104e5578063a9059cbb1461051557610206565b8063890a97c814610437578063897b0637146104675780638a8c523c146104835780638da5cb5b1461048d57610206565b806349bd5a5e1161019d578063667f65261161016c578063667f6526146103a757806370a08231146103c3578063715018a6146103f357806373366782146103fd57806375f0a8741461041957610206565b806349bd5a5e1461032f5780634ada218b1461034d5780634f7041a51461036b578063599ca3971461038957610206565b806318160ddd116101d957806318160ddd1461029357806323b872dd146102b1578063313ce567146102e157806339509351146102ff57610206565b806306fdde031461020b578063095ea7b31461022957806313171799146102595780631694505e14610275575b600080fd5b61021361066f565b6040516102209190611ee8565b60405180910390f35b610243600480360381019061023e9190611fb2565b610701565b604051610250919061200d565b60405180910390f35b610273600480360381019061026e9190612054565b610724565b005b61027d6107c0565b60405161028a91906120f3565b60405180910390f35b61029b6107e4565b6040516102a8919061211d565b60405180910390f35b6102cb60048036038101906102c69190612138565b6107ee565b6040516102d8919061200d565b60405180910390f35b6102e961081d565b6040516102f691906121a7565b60405180910390f35b61031960048036038101906103149190611fb2565b610826565b604051610326919061200d565b60405180910390f35b61033761085d565b60405161034491906121d1565b60405180910390f35b610355610883565b604051610362919061200d565b60405180910390f35b610373610896565b604051610380919061211d565b60405180910390f35b61039161089c565b60405161039e919061211d565b60405180910390f35b6103c160048036038101906103bc91906121ec565b6108a2565b005b6103dd60048036038101906103d8919061222c565b6108bc565b6040516103ea919061211d565b60405180910390f35b6103fb610904565b005b61041760048036038101906104129190612259565b610918565b005b6104216109a6565b60405161042e91906121d1565b60405180910390f35b610451600480360381019061044c919061222c565b6109cc565b60405161045e919061200d565b60405180910390f35b610481600480360381019061047c9190612259565b610a22565b005b61048b610a34565b005b610495610a91565b6040516104a291906121d1565b60405180910390f35b6104c560048036038101906104c09190612286565b610abb565b005b6104cf610b17565b6040516104dc9190611ee8565b60405180910390f35b6104ff60048036038101906104fa9190611fb2565b610ba9565b60405161050c919061200d565b60405180910390f35b61052f600480360381019061052a9190611fb2565b610c20565b60405161053c919061200d565b60405180910390f35b61055f600480360381019061055a919061222c565b610c43565b005b610569610cc6565b60405161057691906121d1565b60405180910390f35b610599600480360381019061059491906123fb565b610cea565b005b6105b560048036038101906105b0919061222c565b610e07565b005b6105bf610fcc565b6040516105cc919061211d565b60405180910390f35b6105dd610fd2565b6040516105ea919061200d565b60405180910390f35b61060d60048036038101906106089190612457565b610fe5565b60405161061a919061211d565b60405180910390f35b61063d6004803603810190610638919061222c565b61106c565b005b6106596004803603810190610654919061222c565b6110ef565b604051610666919061200d565b60405180910390f35b60606003805461067e906124c6565b80601f01602080910402602001604051908101604052809291908181526020018280546106aa906124c6565b80156106f75780601f106106cc576101008083540402835291602001916106f7565b820191906000526020600020905b8154815290600101906020018083116106da57829003601f168201915b5050505050905090565b60008061070c611145565b905061071981858561114d565b600191505092915050565b61072c611316565b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f555c233aa87282d55c607f02817e48e51fccedbfde0c746d362f1c5116283e5a82826040516107b49291906124f7565b60405180910390a15050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b6000806107f9611145565b9050610806858285611394565b610811858585611420565b60019150509392505050565b60006012905090565b600080610831611145565b90506108528185856108438589610fe5565b61084d919061254f565b61114d565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760149054906101000a900460ff1681565b600a5481565b60085481565b6108aa611316565b81600a8190555080600b819055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61090c611316565b61091660006118fc565b565b610920611316565b612710811115610965576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095c906125cf565b60405180910390fd5b806008819055507fd0a65de7e2cd9cbe3e815cb542d294bed1fe025cdb4aa6d144d354a25872eee48160405161099b919061211d565b60405180910390a150565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610a2a611316565b80600c8190555050565b610a3c611316565b6001600760146101000a81548160ff0219169083151502179055507fdc4df53cd70f6f18952922b97f80686da932854762f1af348a7a38b9e94b079e6001604051610a87919061200d565b60405180910390a1565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ac3611316565b80600760156101000a81548160ff0219169083151502179055507fd982c622563a6daaedc772ff458962b9321222c14ea617530513490268018c3481604051610b0c919061200d565b60405180910390a150565b606060048054610b26906124c6565b80601f0160208091040260200160405190810160405280929190818152602001828054610b52906124c6565b8015610b9f5780601f10610b7457610100808354040283529160200191610b9f565b820191906000526020600020905b815481529060010190602001808311610b8257829003601f168201915b5050505050905090565b600080610bb4611145565b90506000610bc28286610fe5565b905083811015610c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfe90612661565b60405180910390fd5b610c14828686840361114d565b60019250505092915050565b600080610c2b611145565b9050610c38818585611420565b600191505092915050565b610c4b611316565b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e781604051610cbb91906121d1565b60405180910390a150565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b610cf2611316565b60005b82518161ffff161015610e02578115610d83576001600e6000858461ffff1681518110610d2557610d24612681565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610df1565b600e6000848361ffff1681518110610d9e57610d9d612681565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b80610dfb906126be565b9050610cf5565b505050565b610e0f611316565b600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed757600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507fdd2689cb5e1ca91bab290e22ada24c52705073cf17bacb82133714fa8427134481604051610fc191906121d1565b60405180910390a150565b600b5481565b600760159054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611074611316565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da9061275a565b60405180910390fd5b6110ec816118fc565b50565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b3906127ec565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112229061287e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611309919061211d565b60405180910390a3505050565b61131e611145565b73ffffffffffffffffffffffffffffffffffffffff1661133c610a91565b73ffffffffffffffffffffffffffffffffffffffff1614611392576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611389906128ea565b60405180910390fd5b565b60006113a08484610fe5565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461141a578181101561140c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140390612956565b60405180910390fd5b611419848484840361114d565b5b50505050565b600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a4906129c2565b60405180910390fd5b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115515750600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611590576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158790612a2e565b60405180910390fd5b600760149054906101000a900460ff16806115dd57506115ae610a91565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8061161a57506115eb610a91565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090612a9a565b60405180910390fd5b600760159054906101000a900460ff1680156116bf5750600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173c576127106008546116d26107e4565b6116dc9190612aba565b6116e69190612b2b565b816116f0846108bc565b6116fa919061254f565b111561173b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173290612ba8565b60405180910390fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361180357600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166117fe57612710600a548302816117fa576117f9612afc565b5b0490505b6118d2565b8273ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036118c857600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166118c357612710600b548302816118bf576118be612afc565b5b0490505b6118d1565b6118d06119c2565b5b5b600081146118eb576118e5843083611bd8565b80820391505b6118f6848484611bd8565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006119cd306108bc565b9050600c54811115611bd557611a04307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8361114d565b6000600267ffffffffffffffff811115611a2157611a206122b8565b5b604051908082528060200260200182016040528015611a4f5781602001602082028036833780820191505090505b5090503081600081518110611a6757611a66612681565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611ad657611ad5612681565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611c2042611b81919061254f565b6040518663ffffffff1660e01b8152600401611ba1959493929190612ce2565b600060405180830381600087803b158015611bbb57600080fd5b505af1158015611bcf573d6000803e3d6000fd5b50505050505b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3e90612dae565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cad90612e40565b60405180910390fd5b611cc1838383611e4e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3e90612ed2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e35919061211d565b60405180910390a3611e48848484611e53565b50505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611e92578082015181840152602081019050611e77565b60008484015250505050565b6000601f19601f8301169050919050565b6000611eba82611e58565b611ec48185611e63565b9350611ed4818560208601611e74565b611edd81611e9e565b840191505092915050565b60006020820190508181036000830152611f028184611eaf565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f4982611f1e565b9050919050565b611f5981611f3e565b8114611f6457600080fd5b50565b600081359050611f7681611f50565b92915050565b6000819050919050565b611f8f81611f7c565b8114611f9a57600080fd5b50565b600081359050611fac81611f86565b92915050565b60008060408385031215611fc957611fc8611f14565b5b6000611fd785828601611f67565b9250506020611fe885828601611f9d565b9150509250929050565b60008115159050919050565b61200781611ff2565b82525050565b60006020820190506120226000830184611ffe565b92915050565b61203181611ff2565b811461203c57600080fd5b50565b60008135905061204e81612028565b92915050565b6000806040838503121561206b5761206a611f14565b5b600061207985828601611f67565b925050602061208a8582860161203f565b9150509250929050565b6000819050919050565b60006120b96120b46120af84611f1e565b612094565b611f1e565b9050919050565b60006120cb8261209e565b9050919050565b60006120dd826120c0565b9050919050565b6120ed816120d2565b82525050565b600060208201905061210860008301846120e4565b92915050565b61211781611f7c565b82525050565b6000602082019050612132600083018461210e565b92915050565b60008060006060848603121561215157612150611f14565b5b600061215f86828701611f67565b935050602061217086828701611f67565b925050604061218186828701611f9d565b9150509250925092565b600060ff82169050919050565b6121a18161218b565b82525050565b60006020820190506121bc6000830184612198565b92915050565b6121cb81611f3e565b82525050565b60006020820190506121e660008301846121c2565b92915050565b6000806040838503121561220357612202611f14565b5b600061221185828601611f9d565b925050602061222285828601611f9d565b9150509250929050565b60006020828403121561224257612241611f14565b5b600061225084828501611f67565b91505092915050565b60006020828403121561226f5761226e611f14565b5b600061227d84828501611f9d565b91505092915050565b60006020828403121561229c5761229b611f14565b5b60006122aa8482850161203f565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6122f082611e9e565b810181811067ffffffffffffffff8211171561230f5761230e6122b8565b5b80604052505050565b6000612322611f0a565b905061232e82826122e7565b919050565b600067ffffffffffffffff82111561234e5761234d6122b8565b5b602082029050602081019050919050565b600080fd5b600061237761237284612333565b612318565b9050808382526020820190506020840283018581111561239a5761239961235f565b5b835b818110156123c357806123af8882611f67565b84526020840193505060208101905061239c565b5050509392505050565b600082601f8301126123e2576123e16122b3565b5b81356123f2848260208601612364565b91505092915050565b6000806040838503121561241257612411611f14565b5b600083013567ffffffffffffffff8111156124305761242f611f19565b5b61243c858286016123cd565b925050602061244d8582860161203f565b9150509250929050565b6000806040838503121561246e5761246d611f14565b5b600061247c85828601611f67565b925050602061248d85828601611f67565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806124de57607f821691505b6020821081036124f1576124f0612497565b5b50919050565b600060408201905061250c60008301856121c2565b6125196020830184611ffe565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061255a82611f7c565b915061256583611f7c565b925082820190508082111561257d5761257c612520565b5b92915050565b7f496e76616c69642070657263656e740000000000000000000000000000000000600082015250565b60006125b9600f83611e63565b91506125c482612583565b602082019050919050565b600060208201905081810360008301526125e8816125ac565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b600061264b602583611e63565b9150612656826125ef565b604082019050919050565b6000602082019050818103600083015261267a8161263e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061ffff82169050919050565b60006126c9826126b0565b915061ffff82036126dd576126dc612520565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612744602683611e63565b915061274f826126e8565b604082019050919050565b6000602082019050818103600083015261277381612737565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006127d6602483611e63565b91506127e18261277a565b604082019050919050565b60006020820190508181036000830152612805816127c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612868602283611e63565b91506128738261280c565b604082019050919050565b600060208201905081810360008301526128978161285b565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006128d4602083611e63565b91506128df8261289e565b602082019050919050565b60006020820190508181036000830152612903816128c7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612940601d83611e63565b915061294b8261290a565b602082019050919050565b6000602082019050818103600083015261296f81612933565b9050919050565b7f426c6f636b656420757365720000000000000000000000000000000000000000600082015250565b60006129ac600c83611e63565b91506129b782612976565b602082019050919050565b600060208201905081810360008301526129db8161299f565b9050919050565b7f426c6f636b656420616464726573730000000000000000000000000000000000600082015250565b6000612a18600f83611e63565b9150612a23826129e2565b602082019050919050565b60006020820190508181036000830152612a4781612a0b565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656420796574000000000000600082015250565b6000612a84601a83611e63565b9150612a8f82612a4e565b602082019050919050565b60006020820190508181036000830152612ab381612a77565b9050919050565b6000612ac582611f7c565b9150612ad083611f7c565b9250828202612ade81611f7c565b91508282048414831517612af557612af4612520565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b3682611f7c565b9150612b4183611f7c565b925082612b5157612b50612afc565b5b828204905092915050565b7f45786365656473206d61782077616c6c6574206c696d69740000000000000000600082015250565b6000612b92601883611e63565b9150612b9d82612b5c565b602082019050919050565b60006020820190508181036000830152612bc181612b85565b9050919050565b6000819050919050565b6000612bed612be8612be384612bc8565b612094565b611f7c565b9050919050565b612bfd81612bd2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612c3881611f3e565b82525050565b6000612c4a8383612c2f565b60208301905092915050565b6000602082019050919050565b6000612c6e82612c03565b612c788185612c0e565b9350612c8383612c1f565b8060005b83811015612cb4578151612c9b8882612c3e565b9750612ca683612c56565b925050600181019050612c87565b5085935050505092915050565b6000612ccc826120c0565b9050919050565b612cdc81612cc1565b82525050565b600060a082019050612cf7600083018861210e565b612d046020830187612bf4565b8181036040830152612d168186612c63565b9050612d256060830185612cd3565b612d32608083018461210e565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d98602583611e63565b9150612da382612d3c565b604082019050919050565b60006020820190508181036000830152612dc781612d8b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e2a602383611e63565b9150612e3582612dce565b604082019050919050565b60006020820190508181036000830152612e5981612e1d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612ebc602683611e63565b9150612ec782612e60565b604082019050919050565b60006020820190508181036000830152612eeb81612eaf565b905091905056fea264697066735822122060f549f471b2dca2ee9b402950c301a10e3ad4f371f79bd5235644391596afb664736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000008a3e3bab28e3d65f2b54e2caa680e018910862e4
-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _marketing (address): 0x8a3e3BAB28e3d65F2b54E2cAA680E018910862E4
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000008a3e3bab28e3d65f2b54e2caa680e018910862e4
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.