ERC-20
Overview
Max Total Supply
1,000,000,000 STICK
Holders
35
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,056,978.673665744377211791 STICKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Stick
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/contracts/utils/Context.sol"; import "@openzeppelin/contracts/utils/Address.sol"; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "./Ownable.sol"; import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol"; import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol"; import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol"; import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; /* * @author ~ (https://x.com/stick_coin?s=21 | https://t.me/stickcoin | https://www.instagram.com/stick_coin?igsh=ZHRudmdlcmg3cXBn) */ contract Stick is Context, IERC20, Ownable { using Address for address; string public name = "Stick"; string public symbol = "STICK"; uint public decimals = 18; uint public totalSupply = 1000000000 * 10 ** decimals; uint private maxTXN = (totalSupply * 15) / 1000; uint private maxWallet = (totalSupply * 15) / 1000; uint public swapThresholdMin = totalSupply / 5000; uint public swapThresholdMax = totalSupply / 1000; address public dexPair; IUniswapV2Router02 public dexRouter; address public constant DEAD = 0x000000000000000000000000000000000000dEaD; mapping (address => uint) private balances; mapping (address => mapping (address => uint)) private allowances; mapping (address => bool) private isCaughtMEV; mapping (address => bool) private isFeeExempt; mapping (address => bool) private isTxnLimitExempt; mapping (address => bool) private isWalletLimitExempt; mapping (address => bool) public isMarketPair; struct Fees { uint inFee; uint outFee; uint transferFee; } struct FeeSplit { uint marketing; uint development; } struct FeeReceivers { address payable marketing; address payable development; } Fees public fees; FeeSplit public feeSplit; FeeReceivers public feeReceivers; bool public tradingEnabled; bool public protectionRenounced; bool public inSwapAndLiquify; bool public swapAndLiquifyEnabled; bool public swapAndLiquifyByLimitOnly; event SwapAndLiquifyStatusUpdated(bool status); event SwapAndLiquifyByLimitStatusUpdated(bool status); event SwapTokensForETH(uint amountIn, address[] path); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor() { dexRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); dexPair = IUniswapV2Factory(dexRouter.factory()).createPair(address(this), dexRouter.WETH()); allowances[address(this)][address(dexRouter)] = type(uint).max; fees.inFee = 1500; fees.outFee = 3500; fees.transferFee = 3500; feeReceivers.marketing = payable(0x4Ec580E1b08EEA85f66108e83b41f404E60982f8); feeReceivers.development = payable(0x6F64Bfec95D718124E3882cCaAB8577BD223FAf1); feeSplit.marketing = 6000; feeSplit.development = 4000; isFeeExempt[owner()] = true; isFeeExempt[address(0)] = true; isFeeExempt[DEAD] = true; isFeeExempt[address(this)] = true; isFeeExempt[feeReceivers.marketing] = true; isFeeExempt[feeReceivers.development] = true; isTxnLimitExempt[owner()] = true; isTxnLimitExempt[address(0)] = true; isTxnLimitExempt[DEAD] = true; isTxnLimitExempt[address(this)] = true; isTxnLimitExempt[feeReceivers.marketing] = true; isTxnLimitExempt[feeReceivers.development] = true; isWalletLimitExempt[owner()] = true; isWalletLimitExempt[address(0)] = true; isWalletLimitExempt[DEAD] = true; isWalletLimitExempt[address(this)] = true; isWalletLimitExempt[feeReceivers.marketing] = true; isWalletLimitExempt[feeReceivers.development] = true; isWalletLimitExempt[address(dexPair)] = true; isMarketPair[address(dexPair)] = true; swapAndLiquifyEnabled = true; swapAndLiquifyByLimitOnly = true; balances[_msgSender()] = totalSupply; emit Transfer(address(0), _msgSender(), totalSupply); } function balanceOf(address wallet) public view override returns (uint) { return balances[wallet]; } function allowance(address owner, address spender) public view override returns (uint) { return allowances[owner][spender]; } function getCirculatingSupply() public view returns (uint) { return totalSupply - balanceOf(address(0)) - balanceOf(DEAD); } function getMEVStatus(address wallet) public view returns (bool) { return isCaughtMEV[wallet]; } function setWalletFeeStatus(address wallet, bool status) public onlyOwner() { isFeeExempt[wallet] = status; } function setWalletTxnStatus(address wallet, bool status) public onlyOwner() { isTxnLimitExempt[wallet] = status; } function setWalletLimitStatus(address wallet, bool status) public onlyOwner() { isWalletLimitExempt[wallet] = status; } function setMarketPairStatus(address wallet, bool status) public onlyOwner() { isMarketPair[wallet] = status; } function setMaxTXN(uint value) public onlyOwner() { require(value >= totalSupply / 10000, "ERROR: Minimum txn must be greater than 0.01% of total supply!"); maxTXN = value; } function setMaxWallet(uint value) public onlyOwner() { require(value >= totalSupply / 10000, "ERROR: Minimum wallet size must be greater than 0.01% of total supply!"); maxWallet = value; } function enableTrading() public onlyOwner() { require(!tradingEnabled, "ERROR: Trading is already enabled!"); tradingEnabled = true; } function removeMaxTXN() public onlyOwner() { maxTXN = totalSupply; } function removeMaxWallet() public onlyOwner() { maxWallet = totalSupply; } function renounceMEVProtection() public onlyOwner() { require(!protectionRenounced, "ERROR: Anti-MEV system is already renounced!"); protectionRenounced = true; } function setCaughtMEV(address[] memory wallets, bool status) public onlyOwner() { require(!protectionRenounced, "ERROR: Anti-MEV system is permanently disabled!"); require(wallets.length <= 200, "ERROR: Maximum wallets at once is 200!"); for (uint i = 0; i < wallets.length; i++) isCaughtMEV[wallets[i]] = status; } function setFees(uint inFee, uint outFee, uint transferFee) public onlyOwner() { require(inFee <= 5000 && outFee <= 5000 && transferFee <= 5000, "ERROR: Maximum directional fee is 50%!"); fees.inFee = inFee; fees.outFee = outFee; fees.transferFee = transferFee; } function setFeeSplit(uint marketing, uint development) public onlyOwner() { require(marketing <= 10000 && development <= 10000, "ERROR: Fee split must not exceed 100%!"); require(marketing + development <= 10000, "ERROR: Combined fee must not exceed 100%!"); feeSplit.marketing = marketing; feeSplit.development = development; } function setFeeReceivers(address marketing, address development) public onlyOwner() { require(marketing != address(0) && development != address(0), "ERROR: Fee receiver must not be NULL address!"); isFeeExempt[feeReceivers.marketing] = false; isFeeExempt[feeReceivers.development] = false; feeReceivers.marketing = payable(marketing); feeReceivers.development = payable(development); isFeeExempt[feeReceivers.marketing] = true; isFeeExempt[feeReceivers.development] = true; } function setSwapThresholds(uint swapMin, uint swapMax) public onlyOwner() { swapThresholdMin = swapMin; swapThresholdMax = swapMax; } function setSwapAndLiquifyStatus(bool status) public onlyOwner() { swapAndLiquifyEnabled = status; emit SwapAndLiquifyStatusUpdated(status); } function setSwapAndLiquifyByLimitStatus(bool status) public onlyOwner() { swapAndLiquifyByLimitOnly = status; emit SwapAndLiquifyByLimitStatusUpdated(status); } function approve(address spender, uint amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function _approve(address owner, address spender, uint amount) private { require(owner != address(0), "ERROR: Approve from the zero address!"); require(spender != address(0), "ERROR: Approve to the zero address!"); allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function transfer(address recipient, uint amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function transferFrom(address sender, address recipient, uint amount) public override returns (bool) { if (allowances[sender][_msgSender()] != type(uint256).max) allowances[sender][_msgSender()] -= amount; return _transfer(sender, recipient, amount); } function transferToAddressNative(address payable recipient, uint amount) private { require(recipient != address(0), "SolarGuard: Cannot send to the 0 address!"); recipient.call{ value: amount }(""); } function _transfer(address sender, address recipient, uint amount) private returns (bool) { require(sender != address(0), "ERROR: Transfer from the zero address!"); require(recipient != address(0), "ERROR: Transfer to the zero address!"); require(!isCaughtMEV[recipient] && !isCaughtMEV[sender], "ERROR: Transfers are not permitted!"); if (inSwapAndLiquify) { unchecked { require(amount <= balances[sender], "ERROR: Insufficient balance!"); balances[sender] -= amount; } balances[recipient] += amount; emit Transfer(sender, recipient, amount); return true; } else { if (!isFeeExempt[sender] && !isFeeExempt[recipient]) require(tradingEnabled, "ERROR: Trading has not yet been enabled!"); if (!isTxnLimitExempt[sender] && !isTxnLimitExempt[recipient]) require(amount <= maxTXN, "ERROR: Transfer amount exceeds the maxTXN!"); uint contractTokenBalance = balanceOf(address(this)); if (!inSwapAndLiquify && swapAndLiquifyEnabled && !isMarketPair[sender] && contractTokenBalance >= swapThresholdMin) { if (swapAndLiquifyByLimitOnly) contractTokenBalance = min(amount, min(contractTokenBalance, swapThresholdMax)); swapAndLiquify(contractTokenBalance); } unchecked { require(amount <= balances[sender], "ERROR: Insufficient balance!"); balances[sender] -= amount; } uint finalAmount = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, recipient, amount); if (!isWalletLimitExempt[recipient]) require(balanceOf(recipient) + finalAmount <= maxWallet, "ERROR: Transfer amount must not exceed max wallet conditions!"); balances[recipient] += finalAmount; emit Transfer(sender, recipient, finalAmount); return true; } } function swapAndLiquify(uint amount) private lockTheSwap { swapTokensForETH(amount); uint amountReceived = address(this).balance; uint marketingAmount = (amountReceived * feeSplit.marketing) / 10000; uint developmentAmount = (amountReceived * feeSplit.development) / 10000; if (marketingAmount > 0) transferToAddressNative(feeReceivers.marketing, marketingAmount); if (developmentAmount > 0) transferToAddressNative(feeReceivers.development, developmentAmount); } function swapTokensForETH(uint amount) private { address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); try dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(amount, 0, path, address(this), block.timestamp) { emit SwapTokensForETH(amount, path); } catch { return; } } function takeFee(address sender, address recipient, uint amount) internal returns (uint) { uint feeAmount = 0; if (isMarketPair[sender]) feeAmount = (amount * fees.inFee) / 10000; else if (isMarketPair[recipient]) feeAmount = (amount * fees.outFee) / 10000; else feeAmount = (amount * fees.transferFee) / 10000; if (feeAmount > 0) { balances[address(this)] += feeAmount; emit Transfer(sender, address(this), feeAmount); } return amount - feeAmount; } function withdrawStuckNative(address recipient, uint amount) public onlyOwner() { require(recipient != address(0), "ERROR: Cannot send to the 0 address!"); payable(recipient).transfer(amount); } function withdrawForeignToken(address tokenAddress, address recipient, uint amount) public onlyOwner() { require(recipient != address(0), "ERROR: Cannot send to the 0 address!"); IERC20(tokenAddress).transfer(recipient, amount); } function min(uint a, uint b) private pure returns (uint) { return (a >= b) ? b : a; } receive() external payable {} }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @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 value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` 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 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @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; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; }
pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; }
pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); }
pragma solidity >=0.6.2; import './IUniswapV2Router01.sol'; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); 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; }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "@openzeppelin/contracts/utils/Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SwapAndLiquifyByLimitStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"SwapAndLiquifyStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","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":"wallet","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeReceivers","outputs":[{"internalType":"address payable","name":"marketing","type":"address"},{"internalType":"address payable","name":"development","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeSplit","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fees","outputs":[{"internalType":"uint256","name":"inFee","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"getMEVStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"inSwapAndLiquify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"protectionRenounced","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeMaxTXN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceMEVProtection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setCaughtMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"development","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"name":"setFeeSplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"inFee","type":"uint256"},{"internalType":"uint256","name":"outFee","type":"uint256"},{"internalType":"uint256","name":"transferFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxTXN","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setSwapAndLiquifyByLimitStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"setSwapAndLiquifyStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapMin","type":"uint256"},{"internalType":"uint256","name":"swapMax","type":"uint256"}],"name":"setSwapThresholds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWalletFeeStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWalletLimitStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setWalletTxnStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThresholdMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThresholdMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawForeignToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526005608090815264537469636b60d81b60a0526001906200002690826200075c565b50604080518082019091526005815264535449434b60d81b60208201526002906200005290826200075c565b50601260038190556200006790600a6200093d565b6200007790633b9aca0062000952565b6004556103e8600454600f6200008e919062000952565b6200009a91906200096c565b6005556103e8600454600f620000b1919062000952565b620000bd91906200096c565b600655611388600454620000d291906200096c565b6007556103e8600454620000e791906200096c565b600855348015620000f757600080fd5b50620001033362000665565b600a80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000168573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018e91906200098f565b6001600160a01b031663c9c6539630600a60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021791906200098f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028b91906200098f565b600980546001600160a01b039283166001600160a01b031991821617909155306000908152600c60209081526040808320600a54909516835293905291822060001990556105dc601255610dac6013819055601455601780548216734ec580e1b08eea85f66108e83b41f404e60982f817905560188054909116736f64bfec95d718124e3882ccaab8577bd223faf1179055611770601555610fa0601655600190600e90620003426000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600e9093527fe710864318d4a32f37d6ce54cb3fadbef648dd12d8dbdf53973564d56b7f881c8054851660019081179091557ff77e91909e61d18f67b875b2bfcae1f683a8d555e55382e3a6b082e2c59ea57a80548616821790553084528284208054861682179055601754821684528284208054861682179055601854909116835290822080549093168117909255600f90620004166000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600f9093527ff4803e074bd026baaf6ed2e288c9515f68c72fb7216eebdd7cae1718a53ec3758054851660019081179091557f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f1080548616821790553084528284208054861682179055601754821684528284208054861682179055601854909116835290822080549093168117909255601090620004ea6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055601084527f6e0956cda88cad152e89927e53611735b61a5c762d1428573c6931b0a5efcb018054861660019081179091557f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b69805487168217905530825283822080548716821790556017548316825283822080548716821790556018548316825283822080548716821790556009805484168352848320805488168317905554909216815260119093529082208054909316179091556019805464010100000064ffff0000001990911617905560045490600b90620005f43390565b6001600160a01b03168152602081019190915260400160002055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004546040516200065791815260200190565b60405180910390a3620009ba565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620006e057607f821691505b6020821081036200070157634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000757576000816000526020600020601f850160051c81016020861015620007325750805b601f850160051c820191505b8181101562000753578281556001016200073e565b5050505b505050565b81516001600160401b03811115620007785762000778620006b5565b6200079081620007898454620006cb565b8462000707565b602080601f831160018114620007c85760008415620007af5750858301515b600019600386901b1c1916600185901b17855562000753565b600085815260208120601f198616915b82811015620007f957888601518255948401946001909101908401620007d8565b5085821015620008185787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200087f57816000190482111562000863576200086362000828565b808516156200087157918102915b93841c939080029062000843565b509250929050565b600082620008985750600162000937565b81620008a75750600062000937565b8160018114620008c05760028114620008cb57620008eb565b600191505062000937565b60ff841115620008df57620008df62000828565b50506001821b62000937565b5060208310610133831016604e8410600b841016171562000910575081810a62000937565b6200091c83836200083e565b806000190482111562000933576200093362000828565b0290505b92915050565b60006200094b838362000887565b9392505050565b808202811582820484141762000937576200093762000828565b6000826200098a57634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215620009a257600080fd5b81516001600160a01b03811681146200094b57600080fd5b61253d80620009ca6000396000f3fe60806040526004361061028c5760003560e01c80637e6335c71161015a578063bbfad5b5116100c1578063dc07b6171161007a578063dc07b617146107e6578063dd62ed3e146107fb578063dd9cdaed14610841578063ee2e5a2e14610888578063f242ab41146108a8578063f2fde38b146108c857600080fd5b8063bbfad5b51461072f578063c3fea9ba1461074f578063cddaf9de14610764578063cec10c1114610784578063d0354d6b146107a4578063da00097d146107c457600080fd5b80639af1d35a116101135780639af1d35a14610647578063a070cb7414610681578063a4b45c00146106a1578063a9059cbb146106c1578063adbdaec2146106e1578063b7c7429c146106f657600080fd5b80637e6335c71461059f578063830d010a146105bf578063844d591c146105df5780638a8c523c146105ff5780638da5cb5b1461061457806395d89b411461063257600080fd5b80632d409179116101fe5780635988f53f116101b75780635988f53f146104ce5780635d0044ca146104e45780636373ea69146105045780636be4432c1461053457806370a0823114610554578063715018a61461058a57600080fd5b80632d4091791461040e578063313ce5671461042e5780633ecad271146104445780634a74bb02146104745780634ada218b146104955780635351de8b146104af57600080fd5b806318160ddd1161025057806318160ddd1461035f5780631afc2b3a1461038357806321917cdc14610399578063220f6696146103b957806323b872dd146103d95780632b112e49146103f957600080fd5b806303fd2a45146102985780630659ce5c146102cb57806306fdde03146102ed5780630758d9241461030f578063095ea7b31461032f57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ae61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102d757600080fd5b506102eb6102e6366004612066565b6108e8565b005b3480156102f957600080fd5b50610302610998565b6040516102c291906120a7565b34801561031b57600080fd5b50600a546102ae906001600160a01b031681565b34801561033b57600080fd5b5061034f61034a3660046120f6565b610a26565b60405190151581526020016102c2565b34801561036b57600080fd5b5061037560045481565b6040519081526020016102c2565b34801561038f57600080fd5b5061037560085481565b3480156103a557600080fd5b506102eb6103b436600461213b565b610a3d565b3480156103c557600080fd5b5060195461034f9062010000900460ff1681565b3480156103e557600080fd5b5061034f6103f4366004612066565b610a70565b34801561040557600080fd5b50610375610aea565b34801561041a57600080fd5b506102eb61042936600461213b565b610b57565b34801561043a57600080fd5b5061037560035481565b34801561045057600080fd5b5061034f61045f366004612174565b60116020526000908152604090205460ff1681565b34801561048057600080fd5b5060195461034f906301000000900460ff1681565b3480156104a157600080fd5b5060195461034f9060ff1681565b3480156104bb57600080fd5b5060195461034f90610100900460ff1681565b3480156104da57600080fd5b5061037560075481565b3480156104f057600080fd5b506102eb6104ff366004612191565b610b8a565b34801561051057600080fd5b5060155460165461051f919082565b604080519283526020830191909152016102c2565b34801561054057600080fd5b506102eb61054f3660046121c0565b610c2b565b34801561056057600080fd5b5061037561056f366004612174565b6001600160a01b03166000908152600b602052604090205490565b34801561059657600080fd5b506102eb610d66565b3480156105ab57600080fd5b506102eb6105ba366004612297565b610d7a565b3480156105cb57600080fd5b506102eb6105da3660046120f6565b610e69565b3480156105eb57600080fd5b506102eb6105fa36600461213b565b610ecd565b34801561060b57600080fd5b506102eb610f00565b34801561062057600080fd5b506000546001600160a01b03166102ae565b34801561063e57600080fd5b50610302610f75565b34801561065357600080fd5b5060125460135460145461066692919083565b604080519384526020840192909252908201526060016102c2565b34801561068d57600080fd5b506102eb61069c3660046122b9565b610f82565b3480156106ad57600080fd5b506102eb6106bc3660046122d6565b610fe4565b3480156106cd57600080fd5b5061034f6106dc3660046120f6565b6110f3565b3480156106ed57600080fd5b506102eb61110a565b34801561070257600080fd5b5061034f610711366004612174565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561073b57600080fd5b506102eb61074a366004612297565b61111a565b34801561075b57600080fd5b506102eb61112d565b34801561077057600080fd5b506102eb61077f366004612191565b6111b3565b34801561079057600080fd5b506102eb61079f366004612304565b611245565b3480156107b057600080fd5b506102eb6107bf36600461213b565b6112d8565b3480156107d057600080fd5b5060195461034f90640100000000900460ff1681565b3480156107f257600080fd5b506102eb61130b565b34801561080757600080fd5b506103756108163660046122d6565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b34801561084d57600080fd5b50601754601854610868916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016102c2565b34801561089457600080fd5b506102eb6108a33660046122b9565b61131b565b3480156108b457600080fd5b506009546102ae906001600160a01b031681565b3480156108d457600080fd5b506102eb6108e3366004612174565b611370565b6108f06113e9565b6001600160a01b03821661091f5760405162461bcd60e51b815260040161091690612330565b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190612374565b50505050565b600180546109a590612391565b80601f01602080910402602001604051908101604052809291908181526020018280546109d190612391565b8015610a1e5780601f106109f357610100808354040283529160200191610a1e565b820191906000526020600020905b815481529060010190602001808311610a0157829003601f168201915b505050505081565b6000610a33338484611443565b5060015b92915050565b610a456113e9565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600c6020908152604080832033845290915281205460001914610ad5576001600160a01b0384166000908152600c6020908152604080832033845290915281208054849290610acf9084906123db565b90915550505b610ae084848461156a565b90505b9392505050565b600b6020527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34155460008080527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f7654600454919291610b4891906123db565b610b5291906123db565b905090565b610b5f6113e9565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b610b926113e9565b612710600454610ba291906123ee565b811015610c265760405162461bcd60e51b815260206004820152604660248201527f4552524f523a204d696e696d756d2077616c6c65742073697a65206d7573742060448201527f62652067726561746572207468616e20302e303125206f6620746f74616c20736064820152657570706c792160d01b608482015260a401610916565b600655565b610c336113e9565b601954610100900460ff1615610ca35760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a20416e74692d4d45562073797374656d206973207065726d616e60448201526e656e746c792064697361626c65642160881b6064820152608401610916565b60c882511115610d045760405162461bcd60e51b815260206004820152602660248201527f4552524f523a204d6178696d756d2077616c6c657473206174206f6e6365206960448201526573203230302160d01b6064820152608401610916565b60005b8251811015610d615781600d6000858481518110610d2757610d27612410565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610d07565b505050565b610d6e6113e9565b610d786000611be8565b565b610d826113e9565b6127108211158015610d9657506127108111155b610df15760405162461bcd60e51b815260206004820152602660248201527f4552524f523a204665652073706c6974206d757374206e6f742065786365656460448201526520313030252160d01b6064820152608401610916565b612710610dfe8284612426565b1115610e5e5760405162461bcd60e51b815260206004820152602960248201527f4552524f523a20436f6d62696e656420666565206d757374206e6f742065786360448201526865656420313030252160b81b6064820152608401610916565b601591909155601655565b610e716113e9565b6001600160a01b038216610e975760405162461bcd60e51b815260040161091690612330565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d61573d6000803e3d6000fd5b610ed56113e9565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b610f086113e9565b60195460ff1615610f665760405162461bcd60e51b815260206004820152602260248201527f4552524f523a2054726164696e6720697320616c726561647920656e61626c65604482015261642160f01b6064820152608401610916565b6019805460ff19166001179055565b600280546109a590612391565b610f8a6113e9565b601980548215156401000000000264ff00000000199091161790556040517f2a91bab0ff55298148711f2e71f46774b795fb3d098246292d3a9d288d67730790610fd990831515815260200190565b60405180910390a150565b610fec6113e9565b6001600160a01b0382161580159061100c57506001600160a01b03811615155b61106e5760405162461bcd60e51b815260206004820152602d60248201527f4552524f523a20466565207265636569766572206d757374206e6f742062652060448201526c4e554c4c20616464726573732160981b6064820152608401610916565b601780546001600160a01b039081166000908152600e6020526040808220805460ff19908116909155601880548516845282842080548316905585549785166001600160a01b03199889168117909655805496851696909716959095178655928152828120805485166001908117909155945490911681522080549091169091179055565b600061110033848461156a565b5060019392505050565b6111126113e9565b600454600555565b6111226113e9565b600791909155600855565b6111356113e9565b601954610100900460ff16156111a25760405162461bcd60e51b815260206004820152602c60248201527f4552524f523a20416e74692d4d45562073797374656d20697320616c7265616460448201526b792072656e6f756e6365642160a01b6064820152608401610916565b6019805461ff001916610100179055565b6111bb6113e9565b6127106004546111cb91906123ee565b8110156112405760405162461bcd60e51b815260206004820152603e60248201527f4552524f523a204d696e696d756d2074786e206d75737420626520677265617460448201527f6572207468616e20302e303125206f6620746f74616c20737570706c792100006064820152608401610916565b600555565b61124d6113e9565b611388831115801561126157506113888211155b801561126f57506113888111155b6112ca5760405162461bcd60e51b815260206004820152602660248201527f4552524f523a204d6178696d756d20646972656374696f6e616c20666565206960448201526573203530252160d01b6064820152608401610916565b601292909255601355601455565b6112e06113e9565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6113136113e9565b600454600655565b6113236113e9565b6019805482151563010000000263ff000000199091161790556040517f083ec94fdbe7b9156108be7401c9808cd45be92d8bcba03f203523515831146c90610fd990831515815260200190565b6113786113e9565b6001600160a01b0381166113dd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610916565b6113e681611be8565b50565b6000546001600160a01b03163314610d785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610916565b6001600160a01b0383166114a75760405162461bcd60e51b815260206004820152602560248201527f4552524f523a20417070726f76652066726f6d20746865207a65726f20616464604482015264726573732160d81b6064820152608401610916565b6001600160a01b0382166115095760405162461bcd60e51b815260206004820152602360248201527f4552524f523a20417070726f766520746f20746865207a65726f20616464726560448201526273732160e81b6064820152608401610916565b6001600160a01b038381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166115d15760405162461bcd60e51b815260206004820152602660248201527f4552524f523a205472616e736665722066726f6d20746865207a65726f20616460448201526564726573732160d01b6064820152608401610916565b6001600160a01b0383166116335760405162461bcd60e51b8152602060048201526024808201527f4552524f523a205472616e7366657220746f20746865207a65726f20616464726044820152636573732160e01b6064820152608401610916565b6001600160a01b0383166000908152600d602052604090205460ff1615801561167557506001600160a01b0384166000908152600d602052604090205460ff16155b6116cd5760405162461bcd60e51b815260206004820152602360248201527f4552524f523a205472616e736665727320617265206e6f74207065726d69747460448201526265642160e81b6064820152608401610916565b60195462010000900460ff16156117db576001600160a01b0384166000908152600b60205260409020548211156117465760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a20496e73756666696369656e742062616c616e636521000000006044820152606401610916565b6001600160a01b038085166000908152600b6020526040808220805486900390559185168152908120805484929061177f908490612426565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117cb91815260200190565b60405180910390a3506001610ae3565b6001600160a01b0384166000908152600e602052604090205460ff1615801561181d57506001600160a01b0383166000908152600e602052604090205460ff16155b156118855760195460ff166118855760405162461bcd60e51b815260206004820152602860248201527f4552524f523a2054726164696e6720686173206e6f7420796574206265656e20604482015267656e61626c65642160c01b6064820152608401610916565b6001600160a01b0384166000908152600f602052604090205460ff161580156118c757506001600160a01b0383166000908152600f602052604090205460ff16155b15611931576005548211156119315760405162461bcd60e51b815260206004820152602a60248201527f4552524f523a205472616e7366657220616d6f756e74206578636565647320746044820152696865206d617854584e2160b01b6064820152608401610916565b306000908152600b602052604090205460195462010000900460ff1615801561196357506019546301000000900460ff165b801561198857506001600160a01b03851660009081526011602052604090205460ff16155b801561199657506007548110155b156119cf57601954640100000000900460ff16156119c6576119c3836119be83600854611c38565b611c38565b90505b6119cf81611c4e565b6001600160a01b0385166000908152600b6020526040902054831115611a375760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a20496e73756666696369656e742062616c616e636521000000006044820152606401610916565b6001600160a01b0385166000908152600b6020908152604080832080548790039055600e90915281205460ff1680611a8757506001600160a01b0385166000908152600e602052604090205460ff165b611a9b57611a96868686611cf6565b611a9d565b835b6001600160a01b03861660009081526010602052604090205490915060ff16611b615760065481611ae3876001600160a01b03166000908152600b602052604090205490565b611aed9190612426565b1115611b615760405162461bcd60e51b815260206004820152603d60248201527f4552524f523a205472616e7366657220616d6f756e74206d757374206e6f742060448201527f657863656564206d61782077616c6c657420636f6e646974696f6e73210000006064820152608401610916565b6001600160a01b0385166000908152600b602052604081208054839290611b89908490612426565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd591815260200190565b60405180910390a3600192505050610ae3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081831015611c485782610ae3565b50919050565b6019805462ff0000191662010000179055611c6881611e09565b601554479060009061271090611c7e9084612439565b611c8891906123ee565b9050600061271060156001015484611ca09190612439565b611caa91906123ee565b90508115611cc857601754611cc8906001600160a01b031683611f84565b8015611ce457601854611ce4906001600160a01b031682611f84565b50506019805462ff0000191690555050565b6001600160a01b038316600090815260116020526040812054819060ff1615611d3b5760125461271090611d2a9085612439565b611d3491906123ee565b9050611d8b565b6001600160a01b03841660009081526011602052604090205460ff1615611d6d5760135461271090611d2a9085612439565b60145461271090611d7e9085612439565b611d8891906123ee565b90505b8015611df657306000908152600b602052604081208054839290611db0908490612426565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611e0081846123db565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e3e57611e3e612410565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebb9190612450565b81600181518110611ece57611ece612410565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac94790611f149085906000908690309042906004016124b2565b600060405180830381600087803b158015611f2e57600080fd5b505af1925050508015611f3f575060015b611f47575050565b7f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611f789291906124ee565b60405180910390a15050565b6001600160a01b038216611fec5760405162461bcd60e51b815260206004820152602960248201527f536f6c617247756172643a2043616e6e6f742073656e6420746f20746865203060448201526820616464726573732160b81b6064820152608401610916565b6040516001600160a01b038316908290600081818185875af1925050503d8060008114612035576040519150601f19603f3d011682016040523d82523d6000602084013e61203a565b606091505b5050505050565b6001600160a01b03811681146113e657600080fd5b803561206181612041565b919050565b60008060006060848603121561207b57600080fd5b833561208681612041565b9250602084013561209681612041565b929592945050506040919091013590565b60006020808352835180602085015260005b818110156120d5578581018301518582016040015282016120b9565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561210957600080fd5b823561211481612041565b946020939093013593505050565b80151581146113e657600080fd5b803561206181612122565b6000806040838503121561214e57600080fd5b823561215981612041565b9150602083013561216981612122565b809150509250929050565b60006020828403121561218657600080fd5b8135610ae381612041565b6000602082840312156121a357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156121d357600080fd5b823567ffffffffffffffff808211156121eb57600080fd5b818501915085601f8301126121ff57600080fd5b8135602082821115612213576122136121aa565b8160051b604051601f19603f83011681018181108682111715612238576122386121aa565b60405292835281830193508481018201928984111561225657600080fd5b948201945b8386101561227b5761226c86612056565b8552948201949382019361225b565b965061228a9050878201612130565b9450505050509250929050565b600080604083850312156122aa57600080fd5b50508035926020909101359150565b6000602082840312156122cb57600080fd5b8135610ae381612122565b600080604083850312156122e957600080fd5b82356122f481612041565b9150602083013561216981612041565b60008060006060848603121561231957600080fd5b505081359360208301359350604090920135919050565b60208082526024908201527f4552524f523a2043616e6e6f742073656e6420746f20746865203020616464726040820152636573732160e01b606082015260800190565b60006020828403121561238657600080fd5b8151610ae381612122565b600181811c908216806123a557607f821691505b602082108103611c4857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610a3757610a376123c5565b60008261240b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b80820180821115610a3757610a376123c5565b8082028115828204841417610a3757610a376123c5565b60006020828403121561246257600080fd5b8151610ae381612041565b60008151808452602080850194506020840160005b838110156124a75781516001600160a01b031687529582019590820190600101612482565b509495945050505050565b85815284602082015260a0604082015260006124d160a083018661246d565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000610ae0604083018461246d56fea264697066735822122052c5c3972a888a92b067fcd35051683a8141cecf5a6ca623c9066999d8e12c7164736f6c63430008160033
Deployed Bytecode
0x60806040526004361061028c5760003560e01c80637e6335c71161015a578063bbfad5b5116100c1578063dc07b6171161007a578063dc07b617146107e6578063dd62ed3e146107fb578063dd9cdaed14610841578063ee2e5a2e14610888578063f242ab41146108a8578063f2fde38b146108c857600080fd5b8063bbfad5b51461072f578063c3fea9ba1461074f578063cddaf9de14610764578063cec10c1114610784578063d0354d6b146107a4578063da00097d146107c457600080fd5b80639af1d35a116101135780639af1d35a14610647578063a070cb7414610681578063a4b45c00146106a1578063a9059cbb146106c1578063adbdaec2146106e1578063b7c7429c146106f657600080fd5b80637e6335c71461059f578063830d010a146105bf578063844d591c146105df5780638a8c523c146105ff5780638da5cb5b1461061457806395d89b411461063257600080fd5b80632d409179116101fe5780635988f53f116101b75780635988f53f146104ce5780635d0044ca146104e45780636373ea69146105045780636be4432c1461053457806370a0823114610554578063715018a61461058a57600080fd5b80632d4091791461040e578063313ce5671461042e5780633ecad271146104445780634a74bb02146104745780634ada218b146104955780635351de8b146104af57600080fd5b806318160ddd1161025057806318160ddd1461035f5780631afc2b3a1461038357806321917cdc14610399578063220f6696146103b957806323b872dd146103d95780632b112e49146103f957600080fd5b806303fd2a45146102985780630659ce5c146102cb57806306fdde03146102ed5780630758d9241461030f578063095ea7b31461032f57600080fd5b3661029357005b600080fd5b3480156102a457600080fd5b506102ae61dead81565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102d757600080fd5b506102eb6102e6366004612066565b6108e8565b005b3480156102f957600080fd5b50610302610998565b6040516102c291906120a7565b34801561031b57600080fd5b50600a546102ae906001600160a01b031681565b34801561033b57600080fd5b5061034f61034a3660046120f6565b610a26565b60405190151581526020016102c2565b34801561036b57600080fd5b5061037560045481565b6040519081526020016102c2565b34801561038f57600080fd5b5061037560085481565b3480156103a557600080fd5b506102eb6103b436600461213b565b610a3d565b3480156103c557600080fd5b5060195461034f9062010000900460ff1681565b3480156103e557600080fd5b5061034f6103f4366004612066565b610a70565b34801561040557600080fd5b50610375610aea565b34801561041a57600080fd5b506102eb61042936600461213b565b610b57565b34801561043a57600080fd5b5061037560035481565b34801561045057600080fd5b5061034f61045f366004612174565b60116020526000908152604090205460ff1681565b34801561048057600080fd5b5060195461034f906301000000900460ff1681565b3480156104a157600080fd5b5060195461034f9060ff1681565b3480156104bb57600080fd5b5060195461034f90610100900460ff1681565b3480156104da57600080fd5b5061037560075481565b3480156104f057600080fd5b506102eb6104ff366004612191565b610b8a565b34801561051057600080fd5b5060155460165461051f919082565b604080519283526020830191909152016102c2565b34801561054057600080fd5b506102eb61054f3660046121c0565b610c2b565b34801561056057600080fd5b5061037561056f366004612174565b6001600160a01b03166000908152600b602052604090205490565b34801561059657600080fd5b506102eb610d66565b3480156105ab57600080fd5b506102eb6105ba366004612297565b610d7a565b3480156105cb57600080fd5b506102eb6105da3660046120f6565b610e69565b3480156105eb57600080fd5b506102eb6105fa36600461213b565b610ecd565b34801561060b57600080fd5b506102eb610f00565b34801561062057600080fd5b506000546001600160a01b03166102ae565b34801561063e57600080fd5b50610302610f75565b34801561065357600080fd5b5060125460135460145461066692919083565b604080519384526020840192909252908201526060016102c2565b34801561068d57600080fd5b506102eb61069c3660046122b9565b610f82565b3480156106ad57600080fd5b506102eb6106bc3660046122d6565b610fe4565b3480156106cd57600080fd5b5061034f6106dc3660046120f6565b6110f3565b3480156106ed57600080fd5b506102eb61110a565b34801561070257600080fd5b5061034f610711366004612174565b6001600160a01b03166000908152600d602052604090205460ff1690565b34801561073b57600080fd5b506102eb61074a366004612297565b61111a565b34801561075b57600080fd5b506102eb61112d565b34801561077057600080fd5b506102eb61077f366004612191565b6111b3565b34801561079057600080fd5b506102eb61079f366004612304565b611245565b3480156107b057600080fd5b506102eb6107bf36600461213b565b6112d8565b3480156107d057600080fd5b5060195461034f90640100000000900460ff1681565b3480156107f257600080fd5b506102eb61130b565b34801561080757600080fd5b506103756108163660046122d6565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b34801561084d57600080fd5b50601754601854610868916001600160a01b03908116911682565b604080516001600160a01b039384168152929091166020830152016102c2565b34801561089457600080fd5b506102eb6108a33660046122b9565b61131b565b3480156108b457600080fd5b506009546102ae906001600160a01b031681565b3480156108d457600080fd5b506102eb6108e3366004612174565b611370565b6108f06113e9565b6001600160a01b03821661091f5760405162461bcd60e51b815260040161091690612330565b60405180910390fd5b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561096e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109929190612374565b50505050565b600180546109a590612391565b80601f01602080910402602001604051908101604052809291908181526020018280546109d190612391565b8015610a1e5780601f106109f357610100808354040283529160200191610a1e565b820191906000526020600020905b815481529060010190602001808311610a0157829003601f168201915b505050505081565b6000610a33338484611443565b5060015b92915050565b610a456113e9565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6001600160a01b0383166000908152600c6020908152604080832033845290915281205460001914610ad5576001600160a01b0384166000908152600c6020908152604080832033845290915281208054849290610acf9084906123db565b90915550505b610ae084848461156a565b90505b9392505050565b600b6020527f44433eeeda1d04bdae79f62169cdb2ab0a6af287fa15706d3fafdbac5fac34155460008080527fdf7de25b7f1fd6d0b5205f0e18f1f35bd7b8d84cce336588d184533ce43a6f7654600454919291610b4891906123db565b610b5291906123db565b905090565b610b5f6113e9565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b610b926113e9565b612710600454610ba291906123ee565b811015610c265760405162461bcd60e51b815260206004820152604660248201527f4552524f523a204d696e696d756d2077616c6c65742073697a65206d7573742060448201527f62652067726561746572207468616e20302e303125206f6620746f74616c20736064820152657570706c792160d01b608482015260a401610916565b600655565b610c336113e9565b601954610100900460ff1615610ca35760405162461bcd60e51b815260206004820152602f60248201527f4552524f523a20416e74692d4d45562073797374656d206973207065726d616e60448201526e656e746c792064697361626c65642160881b6064820152608401610916565b60c882511115610d045760405162461bcd60e51b815260206004820152602660248201527f4552524f523a204d6178696d756d2077616c6c657473206174206f6e6365206960448201526573203230302160d01b6064820152608401610916565b60005b8251811015610d615781600d6000858481518110610d2757610d27612410565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610d07565b505050565b610d6e6113e9565b610d786000611be8565b565b610d826113e9565b6127108211158015610d9657506127108111155b610df15760405162461bcd60e51b815260206004820152602660248201527f4552524f523a204665652073706c6974206d757374206e6f742065786365656460448201526520313030252160d01b6064820152608401610916565b612710610dfe8284612426565b1115610e5e5760405162461bcd60e51b815260206004820152602960248201527f4552524f523a20436f6d62696e656420666565206d757374206e6f742065786360448201526865656420313030252160b81b6064820152608401610916565b601591909155601655565b610e716113e9565b6001600160a01b038216610e975760405162461bcd60e51b815260040161091690612330565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610d61573d6000803e3d6000fd5b610ed56113e9565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b610f086113e9565b60195460ff1615610f665760405162461bcd60e51b815260206004820152602260248201527f4552524f523a2054726164696e6720697320616c726561647920656e61626c65604482015261642160f01b6064820152608401610916565b6019805460ff19166001179055565b600280546109a590612391565b610f8a6113e9565b601980548215156401000000000264ff00000000199091161790556040517f2a91bab0ff55298148711f2e71f46774b795fb3d098246292d3a9d288d67730790610fd990831515815260200190565b60405180910390a150565b610fec6113e9565b6001600160a01b0382161580159061100c57506001600160a01b03811615155b61106e5760405162461bcd60e51b815260206004820152602d60248201527f4552524f523a20466565207265636569766572206d757374206e6f742062652060448201526c4e554c4c20616464726573732160981b6064820152608401610916565b601780546001600160a01b039081166000908152600e6020526040808220805460ff19908116909155601880548516845282842080548316905585549785166001600160a01b03199889168117909655805496851696909716959095178655928152828120805485166001908117909155945490911681522080549091169091179055565b600061110033848461156a565b5060019392505050565b6111126113e9565b600454600555565b6111226113e9565b600791909155600855565b6111356113e9565b601954610100900460ff16156111a25760405162461bcd60e51b815260206004820152602c60248201527f4552524f523a20416e74692d4d45562073797374656d20697320616c7265616460448201526b792072656e6f756e6365642160a01b6064820152608401610916565b6019805461ff001916610100179055565b6111bb6113e9565b6127106004546111cb91906123ee565b8110156112405760405162461bcd60e51b815260206004820152603e60248201527f4552524f523a204d696e696d756d2074786e206d75737420626520677265617460448201527f6572207468616e20302e303125206f6620746f74616c20737570706c792100006064820152608401610916565b600555565b61124d6113e9565b611388831115801561126157506113888211155b801561126f57506113888111155b6112ca5760405162461bcd60e51b815260206004820152602660248201527f4552524f523a204d6178696d756d20646972656374696f6e616c20666565206960448201526573203530252160d01b6064820152608401610916565b601292909255601355601455565b6112e06113e9565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b6113136113e9565b600454600655565b6113236113e9565b6019805482151563010000000263ff000000199091161790556040517f083ec94fdbe7b9156108be7401c9808cd45be92d8bcba03f203523515831146c90610fd990831515815260200190565b6113786113e9565b6001600160a01b0381166113dd5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610916565b6113e681611be8565b50565b6000546001600160a01b03163314610d785760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610916565b6001600160a01b0383166114a75760405162461bcd60e51b815260206004820152602560248201527f4552524f523a20417070726f76652066726f6d20746865207a65726f20616464604482015264726573732160d81b6064820152608401610916565b6001600160a01b0382166115095760405162461bcd60e51b815260206004820152602360248201527f4552524f523a20417070726f766520746f20746865207a65726f20616464726560448201526273732160e81b6064820152608401610916565b6001600160a01b038381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166115d15760405162461bcd60e51b815260206004820152602660248201527f4552524f523a205472616e736665722066726f6d20746865207a65726f20616460448201526564726573732160d01b6064820152608401610916565b6001600160a01b0383166116335760405162461bcd60e51b8152602060048201526024808201527f4552524f523a205472616e7366657220746f20746865207a65726f20616464726044820152636573732160e01b6064820152608401610916565b6001600160a01b0383166000908152600d602052604090205460ff1615801561167557506001600160a01b0384166000908152600d602052604090205460ff16155b6116cd5760405162461bcd60e51b815260206004820152602360248201527f4552524f523a205472616e736665727320617265206e6f74207065726d69747460448201526265642160e81b6064820152608401610916565b60195462010000900460ff16156117db576001600160a01b0384166000908152600b60205260409020548211156117465760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a20496e73756666696369656e742062616c616e636521000000006044820152606401610916565b6001600160a01b038085166000908152600b6020526040808220805486900390559185168152908120805484929061177f908490612426565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117cb91815260200190565b60405180910390a3506001610ae3565b6001600160a01b0384166000908152600e602052604090205460ff1615801561181d57506001600160a01b0383166000908152600e602052604090205460ff16155b156118855760195460ff166118855760405162461bcd60e51b815260206004820152602860248201527f4552524f523a2054726164696e6720686173206e6f7420796574206265656e20604482015267656e61626c65642160c01b6064820152608401610916565b6001600160a01b0384166000908152600f602052604090205460ff161580156118c757506001600160a01b0383166000908152600f602052604090205460ff16155b15611931576005548211156119315760405162461bcd60e51b815260206004820152602a60248201527f4552524f523a205472616e7366657220616d6f756e74206578636565647320746044820152696865206d617854584e2160b01b6064820152608401610916565b306000908152600b602052604090205460195462010000900460ff1615801561196357506019546301000000900460ff165b801561198857506001600160a01b03851660009081526011602052604090205460ff16155b801561199657506007548110155b156119cf57601954640100000000900460ff16156119c6576119c3836119be83600854611c38565b611c38565b90505b6119cf81611c4e565b6001600160a01b0385166000908152600b6020526040902054831115611a375760405162461bcd60e51b815260206004820152601c60248201527f4552524f523a20496e73756666696369656e742062616c616e636521000000006044820152606401610916565b6001600160a01b0385166000908152600b6020908152604080832080548790039055600e90915281205460ff1680611a8757506001600160a01b0385166000908152600e602052604090205460ff165b611a9b57611a96868686611cf6565b611a9d565b835b6001600160a01b03861660009081526010602052604090205490915060ff16611b615760065481611ae3876001600160a01b03166000908152600b602052604090205490565b611aed9190612426565b1115611b615760405162461bcd60e51b815260206004820152603d60248201527f4552524f523a205472616e7366657220616d6f756e74206d757374206e6f742060448201527f657863656564206d61782077616c6c657420636f6e646974696f6e73210000006064820152608401610916565b6001600160a01b0385166000908152600b602052604081208054839290611b89908490612426565b92505081905550846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd591815260200190565b60405180910390a3600192505050610ae3565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600081831015611c485782610ae3565b50919050565b6019805462ff0000191662010000179055611c6881611e09565b601554479060009061271090611c7e9084612439565b611c8891906123ee565b9050600061271060156001015484611ca09190612439565b611caa91906123ee565b90508115611cc857601754611cc8906001600160a01b031683611f84565b8015611ce457601854611ce4906001600160a01b031682611f84565b50506019805462ff0000191690555050565b6001600160a01b038316600090815260116020526040812054819060ff1615611d3b5760125461271090611d2a9085612439565b611d3491906123ee565b9050611d8b565b6001600160a01b03841660009081526011602052604090205460ff1615611d6d5760135461271090611d2a9085612439565b60145461271090611d7e9085612439565b611d8891906123ee565b90505b8015611df657306000908152600b602052604081208054839290611db0908490612426565b909155505060405181815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b611e0081846123db565b95945050505050565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611e3e57611e3e612410565b6001600160a01b03928316602091820292909201810191909152600a54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611e97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ebb9190612450565b81600181518110611ece57611ece612410565b6001600160a01b039283166020918202929092010152600a5460405163791ac94760e01b815291169063791ac94790611f149085906000908690309042906004016124b2565b600060405180830381600087803b158015611f2e57600080fd5b505af1925050508015611f3f575060015b611f47575050565b7f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611f789291906124ee565b60405180910390a15050565b6001600160a01b038216611fec5760405162461bcd60e51b815260206004820152602960248201527f536f6c617247756172643a2043616e6e6f742073656e6420746f20746865203060448201526820616464726573732160b81b6064820152608401610916565b6040516001600160a01b038316908290600081818185875af1925050503d8060008114612035576040519150601f19603f3d011682016040523d82523d6000602084013e61203a565b606091505b5050505050565b6001600160a01b03811681146113e657600080fd5b803561206181612041565b919050565b60008060006060848603121561207b57600080fd5b833561208681612041565b9250602084013561209681612041565b929592945050506040919091013590565b60006020808352835180602085015260005b818110156120d5578581018301518582016040015282016120b9565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561210957600080fd5b823561211481612041565b946020939093013593505050565b80151581146113e657600080fd5b803561206181612122565b6000806040838503121561214e57600080fd5b823561215981612041565b9150602083013561216981612122565b809150509250929050565b60006020828403121561218657600080fd5b8135610ae381612041565b6000602082840312156121a357600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156121d357600080fd5b823567ffffffffffffffff808211156121eb57600080fd5b818501915085601f8301126121ff57600080fd5b8135602082821115612213576122136121aa565b8160051b604051601f19603f83011681018181108682111715612238576122386121aa565b60405292835281830193508481018201928984111561225657600080fd5b948201945b8386101561227b5761226c86612056565b8552948201949382019361225b565b965061228a9050878201612130565b9450505050509250929050565b600080604083850312156122aa57600080fd5b50508035926020909101359150565b6000602082840312156122cb57600080fd5b8135610ae381612122565b600080604083850312156122e957600080fd5b82356122f481612041565b9150602083013561216981612041565b60008060006060848603121561231957600080fd5b505081359360208301359350604090920135919050565b60208082526024908201527f4552524f523a2043616e6e6f742073656e6420746f20746865203020616464726040820152636573732160e01b606082015260800190565b60006020828403121561238657600080fd5b8151610ae381612122565b600181811c908216806123a557607f821691505b602082108103611c4857634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610a3757610a376123c5565b60008261240b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b80820180821115610a3757610a376123c5565b8082028115828204841417610a3757610a376123c5565b60006020828403121561246257600080fd5b8151610ae381612041565b60008151808452602080850194506020840160005b838110156124a75781516001600160a01b031687529582019590820190600101612482565b509495945050505050565b85815284602082015260a0604082015260006124d160a083018661246d565b6001600160a01b0394909416606083015250608001529392505050565b828152604060208201526000610ae0604083018461246d56fea264697066735822122052c5c3972a888a92b067fcd35051683a8141cecf5a6ca623c9066999d8e12c7164736f6c63430008160033
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.