ERC-20
Overview
Max Total Supply
100,000,000 BEAT
Holders
514
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
69,393.88504416040710255 BEATValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
BMM
Compiler Version
v0.8.27+commit.40a35a09
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
/** Telegram: https://t.me/Beatmatchmaker Twitter: https://x.com/beatmatchmaker Website: https://beatmatchmaker.com/ Dapp: https://www.beatmatchmaker.com/beat $BEAT isn’t just a token; it’s a movement. Every transaction fuels the development of cutting-edge tools and platforms that uplift emerging music talent, streamline music distribution, and bring creators closer to their audiences. By supporting $BEAT, you’re directly shaping the future of music, fostering innovation, and giving a voice to the next generation of talent. Together, we’re redefining how music is created, shared, and experienced. Officially Incubated by Sentinel Incubator - https://sentinelincubator.com */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.27; import "./IERC20.sol"; import "./IERC20Metadata.sol"; import "./ERC20.sol"; import "./Ownable.sol"; import "./ReentrancyGuard.sol"; import "./UniswapV2Contracts.sol"; contract BMM is ERC20, Ownable, ReentrancyGuard { // Uniswap router and pair addresses IUniswapV2Router02 public immutable uniswapV2Router; address public uniswapV2Pair; // Address where burned tokens are sent address public constant deadAddress = address(0xdead); // Wallets for fee distribution address public projectWallet; address public projectWalletTwo; address public incubatorWallet; address public referralWallet; // Swap and trading flags bool private swapping; bool public tradingActive = false; bool public swapEnabled = false; bool public limitsInEffect = true; // Block number and timestamp when trading was enabled uint256 public tradingActiveBlock; uint256 public tradingActiveTimestamp; // Maximum transaction amount and wallet balance uint256 public maxTransactionAmount; uint256 public maxWallet; // Fee percentages (per 10,000 units, where 10,000 = 100%) uint256 public buyTotalFees; uint256 public buyFee; uint256 public sellTotalFees; uint256 public sellFee; // Tokens accumulated for fees uint256 public tokensForFees; // Swap back percentage threshold (in basis points, out of 10,000) uint256 public maxSwapBackPercent = 50; // 0.5% // Minimum amount of tokens to trigger swap back (0.01% of total supply) uint256 public swapTokensAtAmount; // Mappings for fee and transaction exclusions mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTransactionAmount; // Automated market maker pairs mapping(address => bool) public automatedMarketMakerPairs; // Whitelist variables uint256 public whitelistStartTime; bool public whitelistActive = true; mapping(address => bool) public whitelistedAddresses; // Events for tracking state changes event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event ProjectWalletUpdated(address indexed newWallet, address indexed oldWallet); event ProjectWalletTwoUpdated(address indexed newWallet, address indexed oldWallet); event IncubatorWalletUpdated(address indexed newWallet, address indexed oldWallet); event ReferralWalletUpdated(address indexed newWallet, address indexed oldWallet); event TradingEnabled(uint256 blockNumber); event LimitsRemoved(); event MaxTransactionAmountUpdated(uint256 newAmount); event MaxWalletUpdated(uint256 newAmount); event ExcludedFromMaxTransaction(address indexed account, bool isExcluded); event SwapEnabledUpdated(bool enabled); event BuyFeesUpdated(uint256 fee); event SellFeesUpdated(uint256 fee); event MaxSwapBackPercentUpdated(uint256 newPercent); event TokenSwap(uint256 tokensSwapped, uint256 ethReceived); event TokenSwapFailed(uint256 tokenAmount); event TokenSwapFailedWithReason(uint256 tokenAmount, string reason); event TokenSwapFailedWithData(uint256 tokenAmount, bytes data); event TransferFailed(address to, uint256 amount); event Whitelisted(address indexed account); // Custom Errors error TradingNotActive(); error ExceedsMaxTransactionAmount(); error ExceedsMaxWalletAmount(); error MaxTransactionAmountTooLow(); error MaxWalletTooLow(); error CannotRemovePrimaryPair(); error NewWalletIsZeroAddress(); error CannotIncreaseFees(); error TransferFromZeroAddress(); error TransferToZeroAddress(); error SwapFailed(); error MaxSwapBackPercentTooHigh(); // Deployer address address public immutable deployer; // Tax enablement flags bool public isProjectWalletTaxEnabled = true; bool public isProjectWalletTwoTaxEnabled = true; bool public isIncubatorWalletTaxEnabled = true; bool public isReferralWalletTaxEnabled = true; /** * @dev Constructor initializes the token and sets up Uniswap pair. * @param _router Address of the UniswapV2Router02. */ constructor(address _router) ERC20("Beat Matchmaker", "BEAT") { address _owner = _msgSender(); deployer = _owner; uint256 totalSupply_ = 100_000_000 * (10 ** decimals()); // Adjusted percentages per 10,000 units maxTransactionAmount = (totalSupply_ * 150) / 10_000; // 1.5% of total supply maxWallet = (totalSupply_ * 150) / 10_000; // 1.5% of total supply // Fee percentages (per 10,000 units, where 10,000 = 100%) buyFee = 2500; // 25% buyTotalFees = buyFee; sellFee = 3000; // 30% sellTotalFees = sellFee; // Set initial wallets projectWallet = address(0x8270b9EA380AEC5057200d31e28E1d41899eAaA9); projectWalletTwo = address(0x8270b9EA380AEC5057200d31e28E1d41899eAaA9); incubatorWallet = address(0x85dBe4ce3c809DAC17E4B1D32a5A2478038a3ae1); referralWallet = address(0x4f82b6Bda395C43A047dDc30CD6eDf7479A2C7Af); if (_router == address(0)) revert NewWalletIsZeroAddress(); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(_router); uniswapV2Router = _uniswapV2Router; // Exclude router from max transaction amount excludeFromMaxTransaction(address(_uniswapV2Router), true); // Create or get existing Uniswap pair address existingPair = IUniswapV2Factory(_uniswapV2Router.factory()) .getPair(address(this), _uniswapV2Router.WETH()); if (existingPair != address(0)) { uniswapV2Pair = existingPair; } else { uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); } // Set the pair as an AMM pair _setAutomatedMarketMakerPair(uniswapV2Pair, true); // Exclude Uniswap pair from max transaction limits excludeFromMaxTransaction(uniswapV2Pair, true); // Exclude from fees and max transaction limits excludeFromFees(_owner, true); excludeFromFees(address(this), true); excludeFromFees(deadAddress, true); excludeFromMaxTransaction(_owner, true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(deadAddress, true); // Set the minimum tokens to swap back (0.01% of total supply) swapTokensAtAmount = (totalSupply_ * 1) / 10_000; // 0.01% // Initialize whitelist whitelistActive = true; // Mint total supply to owner _mint(_owner, totalSupply_); } /** * @dev Enables trading and allows swaps. */ function enableTrading() external onlyOwner { if (projectWallet == address(0)) revert NewWalletIsZeroAddress(); if (projectWalletTwo == address(0)) revert NewWalletIsZeroAddress(); if (incubatorWallet == address(0)) revert NewWalletIsZeroAddress(); if (referralWallet == address(0)) revert NewWalletIsZeroAddress(); tradingActive = true; swapEnabled = true; limitsInEffect = true; tradingActiveBlock = block.number; tradingActiveTimestamp = block.timestamp; whitelistStartTime = block.timestamp; // Start the whitelist period whitelistActive = true; // Ensure whitelist is active emit TradingEnabled(block.number); } /** * @dev Removes transaction and wallet limits. * @return True if successful. */ function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; emit LimitsRemoved(); return true; } /** * @dev Updates the maximum transaction amount. * @param newAmount The new maximum transaction amount. */ function updateMaxTransactionAmount(uint256 newAmount) external onlyOwner { if (newAmount < (totalSupply() * 100) / 10_000) revert MaxTransactionAmountTooLow(); // Minimum 1% maxTransactionAmount = newAmount; emit MaxTransactionAmountUpdated(newAmount); } /** * @dev Updates the maximum wallet balance. * @param newAmount The new maximum wallet balance. */ function updateMaxWallet(uint256 newAmount) external onlyOwner { if (newAmount < (totalSupply() * 100) / 10_000) revert MaxWalletTooLow(); // Minimum 1% maxWallet = newAmount; emit MaxWalletUpdated(newAmount); } /** * @dev Excludes or includes an account from the max transaction limit. * @param account The account to modify. * @param isExcluded Whether the account is excluded. */ function excludeFromMaxTransaction(address account, bool isExcluded) public onlyOwner { _isExcludedMaxTransactionAmount[account] = isExcluded; emit ExcludedFromMaxTransaction(account, isExcluded); } /** * @dev Enables or disables the swap mechanism. * @param enabled Whether swapping is enabled. */ function updateSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; emit SwapEnabledUpdated(enabled); } /** * @dev Excludes or includes an account from fees. * @param account The account to modify. * @param excluded Whether the account is excluded. */ function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } /** * @dev Sets an address as an automated market maker pair. * @param pair The address to set. * @param value Whether it is an AMM pair. */ function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { if (pair == uniswapV2Pair) revert CannotRemovePrimaryPair(); _setAutomatedMarketMakerPair(pair, value); } /** * @dev Internal function to set an AMM pair. * @param pair The address to set. * @param value Whether it is an AMM pair. */ function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } /** * @dev Updates the project wallet address. * @param newWallet The new wallet address. */ function updateProjectWallet(address newWallet) external onlyOwner { if (newWallet == address(0)) revert NewWalletIsZeroAddress(); emit ProjectWalletUpdated(newWallet, projectWallet); projectWallet = newWallet; } /** * @dev Updates the project wallet two address. * @param newWallet The new wallet address. */ function updateProjectWalletTwo(address newWallet) external onlyOwner { if (newWallet == address(0)) revert NewWalletIsZeroAddress(); emit ProjectWalletTwoUpdated(newWallet, projectWalletTwo); projectWalletTwo = newWallet; } /** * @dev Updates the incubator wallet address. * @param newWallet The new wallet address. */ function updateIncubatorWallet(address newWallet) external onlyOwner { if (newWallet == address(0)) revert NewWalletIsZeroAddress(); emit IncubatorWalletUpdated(newWallet, incubatorWallet); incubatorWallet = newWallet; } /** * @dev Updates the referral wallet address. * @param newWallet The new wallet address. */ function updateReferralWallet(address newWallet) external onlyOwner { if (newWallet == address(0)) revert NewWalletIsZeroAddress(); emit ReferralWalletUpdated(newWallet, referralWallet); referralWallet = newWallet; } /** * @dev Updates the max swap back percentage. * @param newPercent The new max swap back percentage (in basis points, out of 10,000). */ function updateMaxSwapBackPercent(uint256 newPercent) external onlyOwner { if (newPercent > 1000) revert MaxSwapBackPercentTooHigh(); // Cannot set above 10% maxSwapBackPercent = newPercent; emit MaxSwapBackPercentUpdated(newPercent); } /** * @dev Checks if an account is excluded from fees. * @param account The account to check. * @return True if excluded, false otherwise. */ function isExcludedFromFees(address account) external view returns (bool) { return _isExcludedFromFees[account]; } /** * @dev Updates the buy fees. * @param newFee The new buy fee percentage (per 10,000 units). */ function updateBuyFees(uint256 newFee) external onlyOwner { if (newFee > buyFee) revert CannotIncreaseFees(); buyFee = newFee; buyTotalFees = buyFee; emit BuyFeesUpdated(buyFee); } /** * @dev Updates the sell fees. * @param newFee The new sell fee percentage (per 10,000 units). */ function updateSellFees(uint256 newFee) external onlyOwner { if (newFee > sellFee) revert CannotIncreaseFees(); sellFee = newFee; sellTotalFees = sellFee; emit SellFeesUpdated(sellFee); } /** * @dev Whitelists or removes addresses from the whitelist. * @param wallets The array of addresses to modify. * @param isWhitelisted Whether the addresses are whitelisted. */ function whitelistWallets(address[] calldata wallets, bool isWhitelisted) external onlyOwner { for (uint256 i = 0; i < wallets.length; i++) { whitelistedAddresses[wallets[i]] = isWhitelisted; emit Whitelisted(wallets[i]); } } /** * @dev Manually ends the whitelist period. */ function shutOffWhitelist() external onlyOwner { require(whitelistActive, "Whitelist not active"); whitelistActive = false; } /** * @dev Revokes taxes to the project wallet. Can only be called once by the deployer. */ function revokeProjectWalletTax() external { require(msg.sender == deployer, "Only deployer can call"); require(isProjectWalletTaxEnabled, "Taxes already revoked"); isProjectWalletTaxEnabled = false; } /** * @dev Revokes taxes to the project wallet two. Can only be called once by the deployer. */ function revokeProjectWalletTwoTax() external { require(msg.sender == deployer, "Only deployer can call"); require(isProjectWalletTwoTaxEnabled, "Taxes already revoked"); isProjectWalletTwoTaxEnabled = false; } /** * @dev Revokes taxes to the incubator wallet. Can only be called once by the deployer. */ function revokeIncubatorWalletTax() external { require(msg.sender == deployer, "Only deployer can call"); require(isIncubatorWalletTaxEnabled, "Taxes already revoked"); isIncubatorWalletTaxEnabled = false; } /** * @dev Revokes taxes to the referral wallet. Can only be called once by the deployer. */ function revokeReferralWalletTax() external { require(msg.sender == deployer, "Only deployer can call"); require(isReferralWalletTaxEnabled, "Taxes already revoked"); isReferralWalletTaxEnabled = false; } /** * @dev Internal transfer function with fee logic and whitelist enforcement. * @param from The sender address. * @param to The recipient address. * @param amount The amount to transfer. */ function _transfer( address from, address to, uint256 amount ) internal override { if (from == address(0)) revert TransferFromZeroAddress(); if (to == address(0)) revert TransferToZeroAddress(); // Check if trading is active if (!tradingActive) { if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { revert TradingNotActive(); } } // Early return if amount is zero if (amount == 0) { super._transfer(from, to, 0); return; } // Limits and whitelist checks if (limitsInEffect && !swapping) { if ( from != owner() && to != owner() && to != address(0) && to != deadAddress ) { // Determine if we are in the whitelist period (first 5 minutes) bool isInWhitelistPeriod = whitelistActive && (block.timestamp < whitelistStartTime + 5 minutes); uint256 currentMaxTransactionAmount; uint256 currentMaxWallet; if (isInWhitelistPeriod) { currentMaxTransactionAmount = (totalSupply() * 20) / 10_000; // 0.2% currentMaxWallet = (totalSupply() * 20) / 10_000; // 0.2% } else { currentMaxTransactionAmount = maxTransactionAmount; // 1.5% currentMaxWallet = maxWallet; // 1.5% // Whitelist period has ended if (whitelistActive) { whitelistActive = false; } } // Whitelist enforcement during whitelist period if (isInWhitelistPeriod) { // Enforce whitelist checks for all transactions if (automatedMarketMakerPairs[from]) { // Buying: Only whitelisted addresses can buy require( whitelistedAddresses[to], "Not whitelisted during whitelist period" ); } else if (automatedMarketMakerPairs[to]) { // Selling: Only whitelisted addresses can sell require( whitelistedAddresses[from], "Not whitelisted during whitelist period" ); } else { // Transfers between wallets require( whitelistedAddresses[from] && whitelistedAddresses[to], "Both sender and recipient must be whitelisted during whitelist period" ); } } // Max transaction and wallet limits if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { // Buy transaction if (amount > currentMaxTransactionAmount) revert ExceedsMaxTransactionAmount(); if (balanceOf(to) + amount > currentMaxWallet) revert ExceedsMaxWalletAmount(); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { // Sell transaction if (amount > currentMaxTransactionAmount) revert ExceedsMaxTransactionAmount(); } else if (!_isExcludedMaxTransactionAmount[to]) { // Regular transfer if (balanceOf(to) + amount > currentMaxWallet) revert ExceedsMaxWalletAmount(); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; // Check if we should perform a swap back bool shouldSwapBack = canSwap && swapEnabled && !swapping && automatedMarketMakerPairs[to] && // Sell transaction from != address(this) && !_isExcludedFromFees[from]; if (shouldSwapBack) { swapping = true; swapBack(amount); swapping = false; } bool takeFee = !swapping; // If any account is excluded from fee, remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // Calculate fees if applicable if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { // Sell transaction fees = (amount * sellTotalFees) / 10_000; // Fees are per 10,000 units tokensForFees += fees; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { // Buy transaction fees = (amount * buyTotalFees) / 10_000; // Fees are per 10,000 units tokensForFees += fees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } // Perform the actual token transfer super._transfer(from, to, amount); } /** * @dev Swaps tokens for ETH using Uniswap. * @param tokenAmount The amount of tokens to swap. * @return success True if the swap was successful. */ function swapTokensForEth(uint256 tokenAmount) private returns (bool success) { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uint256 initialETHBalance = address(this).balance; try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // Accept any amount of ETH path, address(this), block.timestamp ) { uint256 ethReceived = address(this).balance - initialETHBalance; emit TokenSwap(tokenAmount, ethReceived); success = true; } catch Error(string memory reason) { emit TokenSwapFailedWithReason(tokenAmount, reason); success = false; } catch (bytes memory data) { emit TokenSwapFailedWithData(tokenAmount, data); success = false; } } /** * @dev Swaps back tokens for ETH and distributes to wallets. * @param sellAmount The amount of tokens being sold in the current transaction. */ function swapBack(uint256 sellAmount) private nonReentrant { uint256 contractBalance = balanceOf(address(this)); uint256 tokensToSwap = tokensForFees; if (contractBalance == 0 || tokensToSwap == 0) { return; } // Calculate maximum swap amount based on maxSwapBackPercent uint256 maxSwapAmount = (totalSupply() * maxSwapBackPercent) / 10_000; // Determine amount to swap (small amount to avoid large dumps) uint256 amountToSwap = sellAmount; if (amountToSwap > maxSwapAmount) { amountToSwap = maxSwapAmount; } if (amountToSwap > tokensToSwap) { amountToSwap = tokensToSwap; } if (amountToSwap > contractBalance) { amountToSwap = contractBalance; } // Ensure amount to swap meets minimum threshold if (amountToSwap < swapTokensAtAmount) { return; } // Swap tokens for ETH bool success = swapTokensForEth(amountToSwap); if (success) { // Decrement tokensForFees tokensForFees -= amountToSwap; // Distribute ETH to wallets uint256 ethBalance = address(this).balance; if (ethBalance > 0) { distributeEth(ethBalance); } } else { // Handle swap failure if necessary return; } } /** * @dev Distributes ETH to the wallets based on enabled taxes. * @param ethBalance The total ETH balance to distribute. */ function distributeEth(uint256 ethBalance) private { if (ethBalance == 0) { return; } // Define percentages per 10,000 units (where 10,000 = 100%) uint256 totalPercentage = 0; uint256 incubatorWalletPercentage = 0; uint256 referralWalletPercentage = 0; uint256 projectWalletPercentage = 0; uint256 projectWalletTwoPercentage = 0; if (isIncubatorWalletTaxEnabled) { incubatorWalletPercentage = 1750; // 17.5% totalPercentage += incubatorWalletPercentage; } if (isReferralWalletTaxEnabled) { referralWalletPercentage = 500; // 5% totalPercentage += referralWalletPercentage; } if (isProjectWalletTaxEnabled) { projectWalletPercentage = 3875; // 38.75% totalPercentage += projectWalletPercentage; } if (isProjectWalletTwoTaxEnabled) { projectWalletTwoPercentage = 3875; // 38.75% totalPercentage += projectWalletTwoPercentage; } // Check for division by zero if (totalPercentage == 0) { // No wallets are enabled, nothing to distribute return; } // Distribute ETH based on enabled wallets uint256 totalDistributed = 0; if (incubatorWalletPercentage > 0) { uint256 ethForIncubator = (ethBalance * incubatorWalletPercentage) / totalPercentage; totalDistributed += ethForIncubator; // Distribute ETH to incubator wallet (bool successIncubator, ) = incubatorWallet.call{value: ethForIncubator}(""); if (!successIncubator) { emit TransferFailed(incubatorWallet, ethForIncubator); } } if (referralWalletPercentage > 0) { uint256 ethForReferral = (ethBalance * referralWalletPercentage) / totalPercentage; totalDistributed += ethForReferral; // Distribute ETH to referral wallet (bool successReferral, ) = referralWallet.call{value: ethForReferral}(""); if (!successReferral) { emit TransferFailed(referralWallet, ethForReferral); } } if (projectWalletPercentage > 0) { uint256 ethForProject = (ethBalance * projectWalletPercentage) / totalPercentage; totalDistributed += ethForProject; // Distribute ETH to project wallet (bool successProject, ) = projectWallet.call{value: ethForProject}(""); if (!successProject) { emit TransferFailed(projectWallet, ethForProject); } } if (projectWalletTwoPercentage > 0) { uint256 ethForProjectTwo = (ethBalance * projectWalletTwoPercentage) / totalPercentage; totalDistributed += ethForProjectTwo; // Distribute ETH to project wallet two (bool successProjectTwo, ) = projectWalletTwo.call{value: ethForProjectTwo}(""); if (!successProjectTwo) { emit TransferFailed(projectWalletTwo, ethForProjectTwo); } } // Ensure the total distribution does not exceed balance require(totalDistributed <= ethBalance, "Insufficient ETH balance for distribution"); } /** * @dev Allows the owner to rescue ETH from the contract. */ function rescueETH() external onlyOwner nonReentrant { uint256 contractETHBalance = address(this).balance; if (contractETHBalance == 0) revert SwapFailed(); (bool success, ) = owner().call{value: contractETHBalance}(""); if (!success) revert SwapFailed(); } /** * @dev Allows the owner to rescue any ERC20 tokens, including the contract's own tokens. * @param tokenAddress The address of the token to rescue. */ function rescueTokens(address tokenAddress) external onlyOwner { IERC20 token = IERC20(tokenAddress); uint256 contractTokenBalance = token.balanceOf(address(this)); if (contractTokenBalance == 0) revert SwapFailed(); token.transfer(owner(), contractTokenBalance); } // Receive function to accept ETH receive() external payable {} // Fallback function fallback() external payable {} }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.27; 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: MIT pragma solidity ^0.8.27; import "./Context.sol"; import "./IERC20.sol"; import "./IERC20Metadata.sol"; 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; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue); return true; } function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), 'ERC20: transfer from the zero address'); require(recipient != address(0), 'ERC20: transfer to the zero address'); _balances[sender] -= amount; _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), 'ERC20: mint to the zero address'); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), 'ERC20: burn from the zero address'); _balances[account] -= amount; _totalSupply -= amount; emit Transfer(account, address(0), amount); } function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), 'ERC20: approve from the zero address'); require(spender != address(0), 'ERC20: approve to the zero address'); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.27; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.27; import "./IERC20.sol"; interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.27; import "./Context.sol"; contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), 'Ownable: caller is not the owner'); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), 'Ownable: new owner is the zero address'); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.27; abstract contract ReentrancyGuard { uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } modifier nonReentrant() { require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); _status = _ENTERED; _; _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.27; // IUniswapV2Pair Interface interface IUniswapV2Pair { // Events event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); 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); // Functions 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; 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; } // IUniswapV2Factory Interface interface IUniswapV2Factory { // Events event PairCreated(address indexed token0, address indexed token1, address pair, uint); // Functions 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; } // IUniswapV2Router01 Interface interface IUniswapV2Router01 { // Functions function factory() external pure returns (address); function WETH() external pure returns (address); // Liquidity functions 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 amountETH); // Swap functions 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); // Utility functions 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); } // IUniswapV2Router02 Interface interface IUniswapV2Router02 is IUniswapV2Router01 { // Additional swap functions supporting fee-on-transfer tokens 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; }
{ "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":[{"internalType":"address","name":"_router","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CannotIncreaseFees","type":"error"},{"inputs":[],"name":"CannotRemovePrimaryPair","type":"error"},{"inputs":[],"name":"ExceedsMaxTransactionAmount","type":"error"},{"inputs":[],"name":"ExceedsMaxWalletAmount","type":"error"},{"inputs":[],"name":"MaxSwapBackPercentTooHigh","type":"error"},{"inputs":[],"name":"MaxTransactionAmountTooLow","type":"error"},{"inputs":[],"name":"MaxWalletTooLow","type":"error"},{"inputs":[],"name":"NewWalletIsZeroAddress","type":"error"},{"inputs":[],"name":"SwapFailed","type":"error"},{"inputs":[],"name":"TradingNotActive","type":"error"},{"inputs":[],"name":"TransferFromZeroAddress","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"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":"uint256","name":"fee","type":"uint256"}],"name":"BuyFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"IncubatorWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newPercent","type":"uint256"}],"name":"MaxSwapBackPercentUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"MaxTransactionAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"MaxWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"ProjectWalletTwoUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"ProjectWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"ReferralWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"fee","type":"uint256"}],"name":"SellFeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"TokenSwap","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokenSwapFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"TokenSwapFailedWithData","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"string","name":"reason","type":"string"}],"name":"TokenSwapFailedWithReason","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"TradingEnabled","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":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"Whitelisted","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"excludeFromMaxTransaction","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":[],"name":"incubatorWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isIncubatorWalletTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isProjectWalletTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isProjectWalletTwoTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isReferralWalletTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapBackPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"projectWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectWalletTwo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"referralWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeIncubatorWalletTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeProjectWalletTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeProjectWalletTwoTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"revokeReferralWalletTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shutOffWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","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":"tokensForFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActiveTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateIncubatorWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newPercent","type":"uint256"}],"name":"updateMaxSwapBackPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateProjectWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateProjectWalletTwo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateReferralWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"whitelistStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"wallets","type":"address[]"},{"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"whitelistWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600b805462ffffff60a81b1916600160b81b1790556032601555601b805460ff19166001179055601d8054630101010163ffffffff1990911617905534801561004c57600080fd5b5060405161422238038061422283398101604081905261006b91610864565b6040518060400160405280600f81526020016e2132b0ba1026b0ba31b436b0b5b2b960891b815250604051806040016040528060048152602001631091505560e21b81525081600390816100bf9190610933565b5060046100cc8282610933565b50505060006100df6105e060201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016006553360a081905260006101466012600a610af0565b610154906305f5e100610aff565b9050612710610164826096610aff565b61016e9190610b16565b600e5561271061017f826096610aff565b6101899190610b16565b600f556109c46011819055601055610bb86013819055601255600880546001600160a01b0319908116738270b9ea380aec5057200d31e28e1d41899eaaa9908117909255600980548216909217909155600a805482167385dbe4ce3c809dac17e4b1d32a5a2478038a3ae1179055600b8054909116734f82b6bda395c43a047ddc30cd6edf7479a2c7af1790556001600160a01b03831661023d5760405163f12aab9d60e01b815260040160405180910390fd5b6001600160a01b038316608052826102568160016105e4565b6000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ba9190610864565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610307573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032b9190610864565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610376573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039a9190610864565b90506001600160a01b038116156103cb57600780546001600160a01b0319166001600160a01b038316179055610530565b816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042d9190610864565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561047a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061049e9190610864565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156104eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050f9190610864565b600780546001600160a01b0319166001600160a01b03929092169190911790555b600754610547906001600160a01b03166001610691565b60075461055e906001600160a01b031660016105e4565b6105698460016106e5565b6105743060016106e5565b61058161dead60016106e5565b61058c8460016105e4565b6105973060016105e4565b6105a461dead60016105e4565b6127106105b2846001610aff565b6105bc9190610b16565b601655601b805460ff191660011790556105d68484610785565b5050505050610b4b565b3390565b6005546001600160a01b031633146106315760405162461bcd60e51b8152602060048201819052602482015260008051602061420283398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f388758d239a7790471b273e3760fe65d6424024ca3adb4582f843cec8e71ba5e91015b60405180910390a25050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b0316331461072d5760405162461bcd60e51b815260206004820181905260248201526000805160206142028339815191526044820152606401610628565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79101610685565b6001600160a01b0382166107db5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610628565b80600260008282546107ed9190610b38565b90915550506001600160a01b0382166000908152602081905260408120805483929061081a908490610b38565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006020828403121561087657600080fd5b81516001600160a01b038116811461088d57600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806108be57607f821691505b6020821081036108de57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561092e57806000526020600020601f840160051c8101602085101561090b5750805b601f840160051c820191505b8181101561092b5760008155600101610917565b50505b505050565b81516001600160401b0381111561094c5761094c610894565b6109608161095a84546108aa565b846108e4565b6020601f821160018114610994576000831561097c5750848201515b600019600385901b1c1916600184901b17845561092b565b600084815260208120601f198516915b828110156109c457878501518255602094850194600190920191016109a4565b50848210156109e25786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115610a4257808504811115610a2657610a266109f1565b6001841615610a3457908102905b60019390931c928002610a0b565b935093915050565b600082610a5957506001610aea565b81610a6657506000610aea565b8160018114610a7c5760028114610a8657610aa2565b6001915050610aea565b60ff841115610a9757610a976109f1565b50506001821b610aea565b5060208310610133831016604e8410600b8410161715610ac5575081810a610aea565b610ad26000198484610a07565b8060001904821115610ae657610ae66109f1565b0290505b92915050565b600061088d60ff841683610a4a565b8082028115828204841417610aea57610aea6109f1565b600082610b3357634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610aea57610aea6109f1565b60805160a051613661610ba160003960008181610adf015281816110e0015281816111ae0152818161122e0152611c53015260008181610510015281816129d101528181612a8a0152612ac801526136616000f3fe6080604052600436106103cc5760003560e01c806370a08231116101fb578063bbc0c74211610117578063dd62ed3e116100a5578063ee40166e11610077578063ee40166e14610bc8578063ee6bdf8914610bde578063eff165bd14610bfe578063f2fde38b14610c14578063f8b45b0514610c3457005b8063dd62ed3e14610b2c578063e1f1487414610b72578063e2f4560514610b92578063eba4c33314610ba857005b8063c8c8ebe4116100e9578063c8c8ebe414610a97578063cd0fd14914610aad578063d5f3948814610acd578063d73e12f614610b01578063d85ba06314610b1657005b8063bbc0c74214610a16578063bbd9e5b414610a37578063beb08ab914610a57578063c024666814610a7757005b8063924de9b711610194578063a457c2d711610166578063a457c2d714610965578063a9059cbb14610985578063aa498023146109a5578063b62496f5146109c5578063b6f68691146109f557005b8063924de9b7146108fa5780639292caaf1461091a57806395d89b41146109305780639a7a23d61461094557005b8063751039fc116101cd578063751039fc146108925780637571336a146108a75780638a8c523c146108c75780638da5cb5b146108dc57005b806370a0823114610807578063715018a61461083d578063719276281461085257806371fc46881461087257005b80632d8199c7116102ea5780634a62bb65116102835780635bea1f5d116102555780635bea1f5d146107855780636a3ffffb146107a55780636a486a8e146107bb5780636a7bd94b146107d15780636ddd1713146107e657005b80634a62bb65146106eb5780634fbee1931461070c5780635009716c14610745578063518fbc081461076557005b806339509351116102bc578063395093511461067f5780633f8a62041461069f57806347062402146106b557806349bd5a5e146106cb57005b80632d8199c7146106145780632e71c87714610629578063313ce56714610649578063343572fa1461066557005b80631694505e1161036757806320d3cc9e1161033957806320d3cc9e1461059e57806323b872dd146105b357806327163663146105d357806327c8f835146105e85780632b14ca56146105fe57005b80631694505e146104fe57806318160ddd1461054a5780631c499ab01461056957806320800a001461058957005b806306fdde03116103a057806306fdde031461046c578063095ea7b31461048e5780630ed91680146104ae57806310d5de53146104ce57005b8062ae3bf8146103ce57806302a32ae2146103ee57806302ce58131461042257806306c933d81461043c575b005b3480156103da57600080fd5b506103cc6103e936600461308c565b610c4a565b3480156103fa57600080fd5b50601d5461040d90610100900460ff1681565b60405190151581526020015b60405180910390f35b34801561042e57600080fd5b50601b5461040d9060ff1681565b34801561044857600080fd5b5061040d61045736600461308c565b601c6020526000908152604090205460ff1681565b34801561047857600080fd5b50610481610da5565b60405161041991906130f6565b34801561049a57600080fd5b5061040d6104a9366004613109565b610e37565b3480156104ba57600080fd5b506103cc6104c936600461308c565b610e4e565b3480156104da57600080fd5b5061040d6104e936600461308c565b60186020526000908152604090205460ff1681565b34801561050a57600080fd5b506105327f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610419565b34801561055657600080fd5b506002545b604051908152602001610419565b34801561057557600080fd5b506103cc610584366004613135565b610efc565b34801561059557600080fd5b506103cc610fa3565b3480156105aa57600080fd5b506103cc6110d5565b3480156105bf57600080fd5b5061040d6105ce36600461314e565b611151565b3480156105df57600080fd5b506103cc6111a3565b3480156105f457600080fd5b5061053261dead81565b34801561060a57600080fd5b5061055b60135481565b34801561062057600080fd5b506103cc611223565b34801561063557600080fd5b506103cc61064436600461308c565b6112a1565b34801561065557600080fd5b5060405160128152602001610419565b34801561067157600080fd5b50601d5461040d9060ff1681565b34801561068b57600080fd5b5061040d61069a366004613109565b61134f565b3480156106ab57600080fd5b5061055b60145481565b3480156106c157600080fd5b5061055b60115481565b3480156106d757600080fd5b50600754610532906001600160a01b031681565b3480156106f757600080fd5b50600b5461040d90600160b81b900460ff1681565b34801561071857600080fd5b5061040d61072736600461308c565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561075157600080fd5b50601d5461040d9062010000900460ff1681565b34801561077157600080fd5b506103cc61078036600461308c565b611386565b34801561079157600080fd5b506103cc6107a0366004613135565b611434565b3480156107b157600080fd5b5061055b600d5481565b3480156107c757600080fd5b5061055b60125481565b3480156107dd57600080fd5b506103cc6114b6565b3480156107f257600080fd5b50600b5461040d90600160b01b900460ff1681565b34801561081357600080fd5b5061055b61082236600461308c565b6001600160a01b031660009081526020819052604090205490565b34801561084957600080fd5b506103cc611535565b34801561085e57600080fd5b506103cc61086d36600461308c565b6115a9565b34801561087e57600080fd5b506103cc61088d366004613135565b611657565b34801561089e57600080fd5b5061040d6116de565b3480156108b357600080fd5b506103cc6108c236600461319d565b611748565b3480156108d357600080fd5b506103cc6117d2565b3480156108e857600080fd5b506005546001600160a01b0316610532565b34801561090657600080fd5b506103cc6109153660046131d6565b611908565b34801561092657600080fd5b5061055b601a5481565b34801561093c57600080fd5b5061048161197f565b34801561095157600080fd5b506103cc61096036600461319d565b61198e565b34801561097157600080fd5b5061040d610980366004613109565b6119f5565b34801561099157600080fd5b5061040d6109a0366004613109565b611a2c565b3480156109b157600080fd5b506103cc6109c0366004613135565b611a39565b3480156109d157600080fd5b5061040d6109e036600461308c565b60196020526000908152604090205460ff1681565b348015610a0157600080fd5b50601d5461040d906301000000900460ff1681565b348015610a2257600080fd5b50600b5461040d90600160a81b900460ff1681565b348015610a4357600080fd5b506103cc610a523660046131f3565b611ad9565b348015610a6357600080fd5b50600854610532906001600160a01b031681565b348015610a8357600080fd5b506103cc610a9236600461319d565b611bc6565b348015610aa357600080fd5b5061055b600e5481565b348015610ab957600080fd5b50600954610532906001600160a01b031681565b348015610ad957600080fd5b506105327f000000000000000000000000000000000000000000000000000000000000000081565b348015610b0d57600080fd5b506103cc611c48565b348015610b2257600080fd5b5061055b60105481565b348015610b3857600080fd5b5061055b610b4736600461327c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b7e57600080fd5b50600b54610532906001600160a01b031681565b348015610b9e57600080fd5b5061055b60165481565b348015610bb457600080fd5b506103cc610bc3366004613135565b611cbe565b348015610bd457600080fd5b5061055b600c5481565b348015610bea57600080fd5b50600a54610532906001600160a01b031681565b348015610c0a57600080fd5b5061055b60155481565b348015610c2057600080fd5b506103cc610c2f36600461308c565b611d45565b348015610c4057600080fd5b5061055b600f5481565b6005546001600160a01b03163314610c7d5760405162461bcd60e51b8152600401610c74906132aa565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea91906132df565b905080600003610d0d5760405163081ceff360e41b815260040160405180910390fd5b816001600160a01b031663a9059cbb610d2e6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f91906132f8565b50505050565b606060038054610db490613315565b80601f0160208091040260200160405190810160405280929190818152602001828054610de090613315565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e44338484611e30565b5060015b92915050565b6005546001600160a01b03163314610e785760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116610e9f5760405163f12aab9d60e01b815260040160405180910390fd5b600b546040516001600160a01b03918216918316907f5119b7c42595066c7ec6106563cbe03442f1ba8d305d4981ce87bc80ad3d8ddd90600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f265760405162461bcd60e51b8152600401610c74906132aa565b612710610f3260025490565b610f3d906064613365565b610f47919061337c565b811015610f675760405163a51c909d60e01b815260040160405180910390fd5b600f8190556040518181527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace906020015b60405180910390a150565b6005546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610c74906132aa565b60026006540361101f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b60026006554760008190036110475760405163081ceff360e41b815260040160405180910390fd5b600061105b6005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50509050806110cc5760405163081ceff360e41b815260040160405180910390fd5b50506001600655565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461111d5760405162461bcd60e51b8152600401610c749061339e565b601d54610100900460ff166111445760405162461bcd60e51b8152600401610c74906133ce565b601d805461ff0019169055565b600061115e848484611f55565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546111999186916111949086906133fd565b611e30565b5060019392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111eb5760405162461bcd60e51b8152600401610c749061339e565b601d546301000000900460ff166112145760405162461bcd60e51b8152600401610c74906133ce565b601d805463ff00000019169055565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461126b5760405162461bcd60e51b8152600401610c749061339e565b601d5462010000900460ff166112935760405162461bcd60e51b8152600401610c74906133ce565b601d805462ff000019169055565b6005546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166112f25760405163f12aab9d60e01b815260040160405180910390fd5b600a546040516001600160a01b03918216918316907fd5bab94e3f642caa9f25830fdd5537e2df93309890c3a49998c6d0eb0c8c053b90600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e44918590611194908690613410565b6005546001600160a01b031633146113b05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166113d75760405163f12aab9d60e01b815260040160405180910390fd5b6009546040516001600160a01b03918216918316907f5636c2b58fb71de1761762b630fb3be56d15e4474444f0f8e517c11aad57033a90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610c74906132aa565b6103e881111561148157604051633f86cacf60e11b815260040160405180910390fd5b60158190556040518181527fd08d3952aefe7cb7a7c742db67cd6bdb7cfea25b875f3797f4959c12a261197790602001610f98565b6005546001600160a01b031633146114e05760405162461bcd60e51b8152600401610c74906132aa565b601b5460ff166115295760405162461bcd60e51b815260206004820152601460248201527357686974656c697374206e6f742061637469766560601b6044820152606401610c74565b601b805460ff19169055565b6005546001600160a01b0316331461155f5760405162461bcd60e51b8152600401610c74906132aa565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146115d35760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166115fa5760405163f12aab9d60e01b815260040160405180910390fd5b6008546040516001600160a01b03918216918316907fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e790600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116815760405162461bcd60e51b8152600401610c74906132aa565b6011548111156116a457604051631f333b8160e01b815260040160405180910390fd5b601181905560108190556040518181527f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90602001610f98565b6005546000906001600160a01b0316331461170b5760405162461bcd60e51b8152600401610c74906132aa565b600b805460ff60b81b191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef90600090a15060015b90565b6005546001600160a01b031633146117725760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f388758d239a7790471b273e3760fe65d6424024ca3adb4582f843cec8e71ba5e91015b60405180910390a25050565b6005546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610c74906132aa565b6008546001600160a01b03166118255760405163f12aab9d60e01b815260040160405180910390fd5b6009546001600160a01b031661184e5760405163f12aab9d60e01b815260040160405180910390fd5b600a546001600160a01b03166118775760405163f12aab9d60e01b815260040160405180910390fd5b600b546001600160a01b03166118a05760405163f12aab9d60e01b815260040160405180910390fd5b600b805462ffffff60a81b19166201010160a81b17905543600c81905542600d819055601a55601b805460ff191660011790556040519081527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6005546001600160a01b031633146119325760405162461bcd60e51b8152600401610c74906132aa565b600b8054821515600160b01b0260ff60b01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a1290610f9890831515815260200190565b606060048054610db490613315565b6005546001600160a01b031633146119b85760405162461bcd60e51b8152600401610c74906132aa565b6007546001600160a01b03908116908316036119e757604051630277ae4960e21b815260040160405180910390fd5b6119f18282612685565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e449185906111949086906133fd565b6000610e44338484611f55565b6005546001600160a01b03163314611a635760405162461bcd60e51b8152600401610c74906132aa565b612710611a6f60025490565b611a7a906064613365565b611a84919061337c565b811015611aa45760405163c7d1448f60e01b815260040160405180910390fd5b600e8190556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f98565b6005546001600160a01b03163314611b035760405162461bcd60e51b8152600401610c74906132aa565b60005b82811015610d9f5781601c6000868685818110611b2557611b25613423565b9050602002016020810190611b3a919061308c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838382818110611b7457611b74613423565b9050602002016020810190611b89919061308c565b6001600160a01b03167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a2600101611b06565b6005546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016117c6565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c905760405162461bcd60e51b8152600401610c749061339e565b601d5460ff16611cb25760405162461bcd60e51b8152600401610c74906133ce565b601d805460ff19169055565b6005546001600160a01b03163314611ce85760405162461bcd60e51b8152600401610c74906132aa565b601354811115611d0b57604051631f333b8160e01b815260040160405180910390fd5b601381905560128190556040518181527f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590602001610f98565b6005546001600160a01b03163314611d6f5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116611dd45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c74565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611e925760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c74565b6001600160a01b038216611ef35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c74565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611f7c57604051630b07e54560e11b815260040160405180910390fd5b6001600160a01b038216611fa357604051633a954ecd60e21b815260040160405180910390fd5b600b54600160a81b900460ff16612014576001600160a01b03831660009081526017602052604090205460ff16158015611ff657506001600160a01b03821660009081526017602052604090205460ff16155b1561201457604051632924508760e21b815260040160405180910390fd5b8060000361202d57612028838360006126d9565b505050565b600b54600160b81b900460ff1680156120505750600b54600160a01b900460ff16155b1561244f576005546001600160a01b0384811691161480159061208157506005546001600160a01b03838116911614155b801561209557506001600160a01b03821615155b80156120ac57506001600160a01b03821661dead14155b1561244f57601b5460009060ff1680156120d35750601a546120d09061012c613410565b42105b90506000808215612129576127106120ea60025490565b6120f5906014613365565b6120ff919061337c565b915061271061210d60025490565b612118906014613365565b612122919061337c565b9050612147565b5050600e54600f54601b5460ff161561214757601b805460ff191690555b82156122c4576001600160a01b03861660009081526019602052604090205460ff16156121ab576001600160a01b0385166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6122c4565b6001600160a01b03851660009081526019602052604090205460ff1615612204576001600160a01b0386166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6001600160a01b0386166000908152601c602052604090205460ff16801561224457506001600160a01b0385166000908152601c602052604090205460ff165b6122c45760405162461bcd60e51b815260206004820152604560248201527f426f74682073656e64657220616e6420726563697069656e74206d757374206260448201527f652077686974656c697374656420647572696e672077686974656c6973742070606482015264195c9a5bd960da1b608482015260a401610c74565b6001600160a01b03861660009081526019602052604090205460ff16801561230557506001600160a01b03851660009081526018602052604090205460ff16155b1561237a578184111561232b5760405163fdeb075d60e01b815260040160405180910390fd5b808461234c876001600160a01b031660009081526020819052604090205490565b6123569190613410565b11156123755760405163fd42866160e01b815260040160405180910390fd5b61244b565b6001600160a01b03851660009081526019602052604090205460ff1680156123bb57506001600160a01b03861660009081526018602052604090205460ff16155b156123e157818411156123755760405163fdeb075d60e01b815260040160405180910390fd5b6001600160a01b03851660009081526018602052604090205460ff1661244b578084612422876001600160a01b031660009081526020819052604090205490565b61242c9190613410565b111561244b5760405163fd42866160e01b815260040160405180910390fd5b5050505b3060009081526020819052604081205460165490919082108015919082906124805750600b54600160b01b900460ff165b80156124965750600b54600160a01b900460ff16155b80156124ba57506001600160a01b03851660009081526019602052604090205460ff165b80156124cf57506001600160a01b0386163014155b80156124f457506001600160a01b03861660009081526017602052604090205460ff16155b9050801561252657600b805460ff60a01b1916600160a01b17905561251884612840565b600b805460ff60a01b191690555b600b546001600160a01b03871660009081526017602052604090205460ff600160a01b90920482161591168061257457506001600160a01b03861660009081526017602052604090205460ff165b1561257d575060005b60008115612670576001600160a01b03871660009081526019602052604090205460ff1680156125af57506000601254115b156125ee57612710601254876125c59190613365565b6125cf919061337c565b905080601460008282546125e39190613410565b909155506126529050565b6001600160a01b03881660009081526019602052604090205460ff16801561261857506000601054115b15612652576127106010548761262e9190613365565b612638919061337c565b9050806014600082825461264c9190613410565b90915550505b8015612663576126638830836126d9565b61266d81876133fd565b95505b61267b8888886126d9565b5050505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661273d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c74565b6001600160a01b03821661279f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c74565b6001600160a01b038316600090815260208190526040812080548392906127c79084906133fd565b90915550506001600160a01b038216600090815260208190526040812080548392906127f4908490613410565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4891815260200190565b6002600654036128925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b6002600655306000908152602081905260409020546014548115806128b5575080155b156128c157505061296e565b60006127106015546128d260025490565b6128dc9190613365565b6128e6919061337c565b905083818111156128f45750805b828111156128ff5750815b8381111561290a5750825b60165481101561291d575050505061296e565b600061292882612976565b9050801561295e57816014600082825461294291906133fd565b9091555047905080156129585761295881612c57565b50612968565b505050505061296e565b50505050505b506001600655565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106129af576129af613423565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a519190613480565b81600181518110612a6457612a64613423565b60200260200101906001600160a01b031690816001600160a01b031681525050612aaf307f000000000000000000000000000000000000000000000000000000000000000085611e30565b60405163791ac94760e01b815247906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612b0690879060009087903090429060040161349d565b600060405180830381600087803b158015612b2057600080fd5b505af1925050508015612b31575060015b612c0257612b3d61350f565b806308c379a003612b9f5750612b51613565565b80612b5c5750612ba1565b7fdf56312a616c0a93bb5bc464e3b9e2514160a42cbc69db8a095db22d397b4a198582604051612b8d9291906135ea565b60405180910390a16000935050612c50565b505b3d808015612bcb576040519150601f19603f3d011682016040523d82523d6000602084013e612bd0565b606091505b507fcac61de4cc24e08946cbe1f74266e89411092e0723d52258d0b9f3b6142c1df68582604051612b8d9291906135ea565b6000612c0e82476133fd565b60408051878152602081018390529192507fa808b9f34dc92cf15d3573b357678c78b5aeb0ae55a5d0fb3915b2a3611649c5910160405180910390a160019350505b5050919050565b80600003612c625750565b6000806000806000601d60029054906101000a900460ff1615612c91576106d69350612c8e8486613410565b94505b601d546301000000900460ff1615612cb5576101f49250612cb28386613410565b94505b601d5460ff1615612cd257610f239150612ccf8286613410565b94505b601d54610100900460ff1615612cf35750610f23612cf08186613410565b94505b84600003612d0357505050505050565b60008415612dc657600086612d18878a613365565b612d22919061337c565b9050612d2e8183613410565b600a546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612d80576040519150601f19603f3d011682016040523d82523d6000602084013e612d85565b606091505b5050905080612dc357600a54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8315612e8757600086612dd9868a613365565b612de3919061337c565b9050612def8183613410565b600b546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612e41576040519150601f19603f3d011682016040523d82523d6000602084013e612e46565b606091505b5050905080612e8457600b54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8215612f4857600086612e9a858a613365565b612ea4919061337c565b9050612eb08183613410565b6008546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612f02576040519150601f19603f3d011682016040523d82523d6000602084013e612f07565b606091505b5050905080612f4557600854604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b811561300957600086612f5b848a613365565b612f65919061337c565b9050612f718183613410565b6009546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b505090508061300657600954604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8681111561306b5760405162461bcd60e51b815260206004820152602960248201527f496e73756666696369656e74204554482062616c616e636520666f72206469736044820152683a3934b13aba34b7b760b91b6064820152608401610c74565b50505050505050565b6001600160a01b038116811461308957600080fd5b50565b60006020828403121561309e57600080fd5b81356130a981613074565b9392505050565b6000815180845260005b818110156130d6576020818501810151868301820152016130ba565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006130a960208301846130b0565b6000806040838503121561311c57600080fd5b823561312781613074565b946020939093013593505050565b60006020828403121561314757600080fd5b5035919050565b60008060006060848603121561316357600080fd5b833561316e81613074565b9250602084013561317e81613074565b929592945050506040919091013590565b801515811461308957600080fd5b600080604083850312156131b057600080fd5b82356131bb81613074565b915060208301356131cb8161318f565b809150509250929050565b6000602082840312156131e857600080fd5b81356130a98161318f565b60008060006040848603121561320857600080fd5b833567ffffffffffffffff81111561321f57600080fd5b8401601f8101861361323057600080fd5b803567ffffffffffffffff81111561324757600080fd5b8660208260051b840101111561325c57600080fd5b6020918201945092508401356132718161318f565b809150509250925092565b6000806040838503121561328f57600080fd5b823561329a81613074565b915060208301356131cb81613074565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156132f157600080fd5b5051919050565b60006020828403121561330a57600080fd5b81516130a98161318f565b600181811c9082168061332957607f821691505b60208210810361334957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e4857610e4861334f565b60008261339957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526016908201527513db9b1e4819195c1b1bde595c8818d85b8818d85b1b60521b604082015260600190565b60208082526015908201527415185e195cc8185b1c9958591e481c995d9bdad959605a1b604082015260600190565b81810381811115610e4857610e4861334f565b80820180821115610e4857610e4861334f565b634e487b7160e01b600052603260045260246000fd5b60208082526027908201527f4e6f742077686974656c697374656420647572696e672077686974656c697374604082015266081c195c9a5bd960ca1b606082015260800190565b60006020828403121561349257600080fd5b81516130a981613074565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156134ef5783516001600160a01b03168352602093840193909201916001016134c8565b50506001600160a01b039590951660608401525050608001529392505050565b600060033d11156117455760046000803e5060005160e01c90565b601f8201601f1916810167ffffffffffffffff8111828210171561355e57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d10156135735790565b6040513d600319016004823e80513d602482011167ffffffffffffffff8211171561359d57505090565b808201805167ffffffffffffffff8111156135b9575050505090565b3d84016003190182820160200111156135d3575050505090565b6135e26020828501018561352a565b509392505050565b82815260406020820152600061360360408301846130b0565b94935050505056fe1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81a2646970667358221220ac363f559d911b9a934c0b776418dcd9f2876b7144e210cba02f3d82d296963264736f6c634300081b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106103cc5760003560e01c806370a08231116101fb578063bbc0c74211610117578063dd62ed3e116100a5578063ee40166e11610077578063ee40166e14610bc8578063ee6bdf8914610bde578063eff165bd14610bfe578063f2fde38b14610c14578063f8b45b0514610c3457005b8063dd62ed3e14610b2c578063e1f1487414610b72578063e2f4560514610b92578063eba4c33314610ba857005b8063c8c8ebe4116100e9578063c8c8ebe414610a97578063cd0fd14914610aad578063d5f3948814610acd578063d73e12f614610b01578063d85ba06314610b1657005b8063bbc0c74214610a16578063bbd9e5b414610a37578063beb08ab914610a57578063c024666814610a7757005b8063924de9b711610194578063a457c2d711610166578063a457c2d714610965578063a9059cbb14610985578063aa498023146109a5578063b62496f5146109c5578063b6f68691146109f557005b8063924de9b7146108fa5780639292caaf1461091a57806395d89b41146109305780639a7a23d61461094557005b8063751039fc116101cd578063751039fc146108925780637571336a146108a75780638a8c523c146108c75780638da5cb5b146108dc57005b806370a0823114610807578063715018a61461083d578063719276281461085257806371fc46881461087257005b80632d8199c7116102ea5780634a62bb65116102835780635bea1f5d116102555780635bea1f5d146107855780636a3ffffb146107a55780636a486a8e146107bb5780636a7bd94b146107d15780636ddd1713146107e657005b80634a62bb65146106eb5780634fbee1931461070c5780635009716c14610745578063518fbc081461076557005b806339509351116102bc578063395093511461067f5780633f8a62041461069f57806347062402146106b557806349bd5a5e146106cb57005b80632d8199c7146106145780632e71c87714610629578063313ce56714610649578063343572fa1461066557005b80631694505e1161036757806320d3cc9e1161033957806320d3cc9e1461059e57806323b872dd146105b357806327163663146105d357806327c8f835146105e85780632b14ca56146105fe57005b80631694505e146104fe57806318160ddd1461054a5780631c499ab01461056957806320800a001461058957005b806306fdde03116103a057806306fdde031461046c578063095ea7b31461048e5780630ed91680146104ae57806310d5de53146104ce57005b8062ae3bf8146103ce57806302a32ae2146103ee57806302ce58131461042257806306c933d81461043c575b005b3480156103da57600080fd5b506103cc6103e936600461308c565b610c4a565b3480156103fa57600080fd5b50601d5461040d90610100900460ff1681565b60405190151581526020015b60405180910390f35b34801561042e57600080fd5b50601b5461040d9060ff1681565b34801561044857600080fd5b5061040d61045736600461308c565b601c6020526000908152604090205460ff1681565b34801561047857600080fd5b50610481610da5565b60405161041991906130f6565b34801561049a57600080fd5b5061040d6104a9366004613109565b610e37565b3480156104ba57600080fd5b506103cc6104c936600461308c565b610e4e565b3480156104da57600080fd5b5061040d6104e936600461308c565b60186020526000908152604090205460ff1681565b34801561050a57600080fd5b506105327f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610419565b34801561055657600080fd5b506002545b604051908152602001610419565b34801561057557600080fd5b506103cc610584366004613135565b610efc565b34801561059557600080fd5b506103cc610fa3565b3480156105aa57600080fd5b506103cc6110d5565b3480156105bf57600080fd5b5061040d6105ce36600461314e565b611151565b3480156105df57600080fd5b506103cc6111a3565b3480156105f457600080fd5b5061053261dead81565b34801561060a57600080fd5b5061055b60135481565b34801561062057600080fd5b506103cc611223565b34801561063557600080fd5b506103cc61064436600461308c565b6112a1565b34801561065557600080fd5b5060405160128152602001610419565b34801561067157600080fd5b50601d5461040d9060ff1681565b34801561068b57600080fd5b5061040d61069a366004613109565b61134f565b3480156106ab57600080fd5b5061055b60145481565b3480156106c157600080fd5b5061055b60115481565b3480156106d757600080fd5b50600754610532906001600160a01b031681565b3480156106f757600080fd5b50600b5461040d90600160b81b900460ff1681565b34801561071857600080fd5b5061040d61072736600461308c565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561075157600080fd5b50601d5461040d9062010000900460ff1681565b34801561077157600080fd5b506103cc61078036600461308c565b611386565b34801561079157600080fd5b506103cc6107a0366004613135565b611434565b3480156107b157600080fd5b5061055b600d5481565b3480156107c757600080fd5b5061055b60125481565b3480156107dd57600080fd5b506103cc6114b6565b3480156107f257600080fd5b50600b5461040d90600160b01b900460ff1681565b34801561081357600080fd5b5061055b61082236600461308c565b6001600160a01b031660009081526020819052604090205490565b34801561084957600080fd5b506103cc611535565b34801561085e57600080fd5b506103cc61086d36600461308c565b6115a9565b34801561087e57600080fd5b506103cc61088d366004613135565b611657565b34801561089e57600080fd5b5061040d6116de565b3480156108b357600080fd5b506103cc6108c236600461319d565b611748565b3480156108d357600080fd5b506103cc6117d2565b3480156108e857600080fd5b506005546001600160a01b0316610532565b34801561090657600080fd5b506103cc6109153660046131d6565b611908565b34801561092657600080fd5b5061055b601a5481565b34801561093c57600080fd5b5061048161197f565b34801561095157600080fd5b506103cc61096036600461319d565b61198e565b34801561097157600080fd5b5061040d610980366004613109565b6119f5565b34801561099157600080fd5b5061040d6109a0366004613109565b611a2c565b3480156109b157600080fd5b506103cc6109c0366004613135565b611a39565b3480156109d157600080fd5b5061040d6109e036600461308c565b60196020526000908152604090205460ff1681565b348015610a0157600080fd5b50601d5461040d906301000000900460ff1681565b348015610a2257600080fd5b50600b5461040d90600160a81b900460ff1681565b348015610a4357600080fd5b506103cc610a523660046131f3565b611ad9565b348015610a6357600080fd5b50600854610532906001600160a01b031681565b348015610a8357600080fd5b506103cc610a9236600461319d565b611bc6565b348015610aa357600080fd5b5061055b600e5481565b348015610ab957600080fd5b50600954610532906001600160a01b031681565b348015610ad957600080fd5b506105327f00000000000000000000000085dbe4ce3c809dac17e4b1d32a5a2478038a3ae181565b348015610b0d57600080fd5b506103cc611c48565b348015610b2257600080fd5b5061055b60105481565b348015610b3857600080fd5b5061055b610b4736600461327c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b7e57600080fd5b50600b54610532906001600160a01b031681565b348015610b9e57600080fd5b5061055b60165481565b348015610bb457600080fd5b506103cc610bc3366004613135565b611cbe565b348015610bd457600080fd5b5061055b600c5481565b348015610bea57600080fd5b50600a54610532906001600160a01b031681565b348015610c0a57600080fd5b5061055b60155481565b348015610c2057600080fd5b506103cc610c2f36600461308c565b611d45565b348015610c4057600080fd5b5061055b600f5481565b6005546001600160a01b03163314610c7d5760405162461bcd60e51b8152600401610c74906132aa565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea91906132df565b905080600003610d0d5760405163081ceff360e41b815260040160405180910390fd5b816001600160a01b031663a9059cbb610d2e6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f91906132f8565b50505050565b606060038054610db490613315565b80601f0160208091040260200160405190810160405280929190818152602001828054610de090613315565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e44338484611e30565b5060015b92915050565b6005546001600160a01b03163314610e785760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116610e9f5760405163f12aab9d60e01b815260040160405180910390fd5b600b546040516001600160a01b03918216918316907f5119b7c42595066c7ec6106563cbe03442f1ba8d305d4981ce87bc80ad3d8ddd90600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f265760405162461bcd60e51b8152600401610c74906132aa565b612710610f3260025490565b610f3d906064613365565b610f47919061337c565b811015610f675760405163a51c909d60e01b815260040160405180910390fd5b600f8190556040518181527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace906020015b60405180910390a150565b6005546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610c74906132aa565b60026006540361101f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b60026006554760008190036110475760405163081ceff360e41b815260040160405180910390fd5b600061105b6005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50509050806110cc5760405163081ceff360e41b815260040160405180910390fd5b50506001600655565b336001600160a01b037f00000000000000000000000085dbe4ce3c809dac17e4b1d32a5a2478038a3ae1161461111d5760405162461bcd60e51b8152600401610c749061339e565b601d54610100900460ff166111445760405162461bcd60e51b8152600401610c74906133ce565b601d805461ff0019169055565b600061115e848484611f55565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546111999186916111949086906133fd565b611e30565b5060019392505050565b336001600160a01b037f00000000000000000000000085dbe4ce3c809dac17e4b1d32a5a2478038a3ae116146111eb5760405162461bcd60e51b8152600401610c749061339e565b601d546301000000900460ff166112145760405162461bcd60e51b8152600401610c74906133ce565b601d805463ff00000019169055565b336001600160a01b037f00000000000000000000000085dbe4ce3c809dac17e4b1d32a5a2478038a3ae1161461126b5760405162461bcd60e51b8152600401610c749061339e565b601d5462010000900460ff166112935760405162461bcd60e51b8152600401610c74906133ce565b601d805462ff000019169055565b6005546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166112f25760405163f12aab9d60e01b815260040160405180910390fd5b600a546040516001600160a01b03918216918316907fd5bab94e3f642caa9f25830fdd5537e2df93309890c3a49998c6d0eb0c8c053b90600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e44918590611194908690613410565b6005546001600160a01b031633146113b05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166113d75760405163f12aab9d60e01b815260040160405180910390fd5b6009546040516001600160a01b03918216918316907f5636c2b58fb71de1761762b630fb3be56d15e4474444f0f8e517c11aad57033a90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610c74906132aa565b6103e881111561148157604051633f86cacf60e11b815260040160405180910390fd5b60158190556040518181527fd08d3952aefe7cb7a7c742db67cd6bdb7cfea25b875f3797f4959c12a261197790602001610f98565b6005546001600160a01b031633146114e05760405162461bcd60e51b8152600401610c74906132aa565b601b5460ff166115295760405162461bcd60e51b815260206004820152601460248201527357686974656c697374206e6f742061637469766560601b6044820152606401610c74565b601b805460ff19169055565b6005546001600160a01b0316331461155f5760405162461bcd60e51b8152600401610c74906132aa565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146115d35760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166115fa5760405163f12aab9d60e01b815260040160405180910390fd5b6008546040516001600160a01b03918216918316907fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e790600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116815760405162461bcd60e51b8152600401610c74906132aa565b6011548111156116a457604051631f333b8160e01b815260040160405180910390fd5b601181905560108190556040518181527f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90602001610f98565b6005546000906001600160a01b0316331461170b5760405162461bcd60e51b8152600401610c74906132aa565b600b805460ff60b81b191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef90600090a15060015b90565b6005546001600160a01b031633146117725760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f388758d239a7790471b273e3760fe65d6424024ca3adb4582f843cec8e71ba5e91015b60405180910390a25050565b6005546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610c74906132aa565b6008546001600160a01b03166118255760405163f12aab9d60e01b815260040160405180910390fd5b6009546001600160a01b031661184e5760405163f12aab9d60e01b815260040160405180910390fd5b600a546001600160a01b03166118775760405163f12aab9d60e01b815260040160405180910390fd5b600b546001600160a01b03166118a05760405163f12aab9d60e01b815260040160405180910390fd5b600b805462ffffff60a81b19166201010160a81b17905543600c81905542600d819055601a55601b805460ff191660011790556040519081527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6005546001600160a01b031633146119325760405162461bcd60e51b8152600401610c74906132aa565b600b8054821515600160b01b0260ff60b01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a1290610f9890831515815260200190565b606060048054610db490613315565b6005546001600160a01b031633146119b85760405162461bcd60e51b8152600401610c74906132aa565b6007546001600160a01b03908116908316036119e757604051630277ae4960e21b815260040160405180910390fd5b6119f18282612685565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e449185906111949086906133fd565b6000610e44338484611f55565b6005546001600160a01b03163314611a635760405162461bcd60e51b8152600401610c74906132aa565b612710611a6f60025490565b611a7a906064613365565b611a84919061337c565b811015611aa45760405163c7d1448f60e01b815260040160405180910390fd5b600e8190556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f98565b6005546001600160a01b03163314611b035760405162461bcd60e51b8152600401610c74906132aa565b60005b82811015610d9f5781601c6000868685818110611b2557611b25613423565b9050602002016020810190611b3a919061308c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838382818110611b7457611b74613423565b9050602002016020810190611b89919061308c565b6001600160a01b03167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a2600101611b06565b6005546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016117c6565b336001600160a01b037f00000000000000000000000085dbe4ce3c809dac17e4b1d32a5a2478038a3ae11614611c905760405162461bcd60e51b8152600401610c749061339e565b601d5460ff16611cb25760405162461bcd60e51b8152600401610c74906133ce565b601d805460ff19169055565b6005546001600160a01b03163314611ce85760405162461bcd60e51b8152600401610c74906132aa565b601354811115611d0b57604051631f333b8160e01b815260040160405180910390fd5b601381905560128190556040518181527f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590602001610f98565b6005546001600160a01b03163314611d6f5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116611dd45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c74565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611e925760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c74565b6001600160a01b038216611ef35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c74565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611f7c57604051630b07e54560e11b815260040160405180910390fd5b6001600160a01b038216611fa357604051633a954ecd60e21b815260040160405180910390fd5b600b54600160a81b900460ff16612014576001600160a01b03831660009081526017602052604090205460ff16158015611ff657506001600160a01b03821660009081526017602052604090205460ff16155b1561201457604051632924508760e21b815260040160405180910390fd5b8060000361202d57612028838360006126d9565b505050565b600b54600160b81b900460ff1680156120505750600b54600160a01b900460ff16155b1561244f576005546001600160a01b0384811691161480159061208157506005546001600160a01b03838116911614155b801561209557506001600160a01b03821615155b80156120ac57506001600160a01b03821661dead14155b1561244f57601b5460009060ff1680156120d35750601a546120d09061012c613410565b42105b90506000808215612129576127106120ea60025490565b6120f5906014613365565b6120ff919061337c565b915061271061210d60025490565b612118906014613365565b612122919061337c565b9050612147565b5050600e54600f54601b5460ff161561214757601b805460ff191690555b82156122c4576001600160a01b03861660009081526019602052604090205460ff16156121ab576001600160a01b0385166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6122c4565b6001600160a01b03851660009081526019602052604090205460ff1615612204576001600160a01b0386166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6001600160a01b0386166000908152601c602052604090205460ff16801561224457506001600160a01b0385166000908152601c602052604090205460ff165b6122c45760405162461bcd60e51b815260206004820152604560248201527f426f74682073656e64657220616e6420726563697069656e74206d757374206260448201527f652077686974656c697374656420647572696e672077686974656c6973742070606482015264195c9a5bd960da1b608482015260a401610c74565b6001600160a01b03861660009081526019602052604090205460ff16801561230557506001600160a01b03851660009081526018602052604090205460ff16155b1561237a578184111561232b5760405163fdeb075d60e01b815260040160405180910390fd5b808461234c876001600160a01b031660009081526020819052604090205490565b6123569190613410565b11156123755760405163fd42866160e01b815260040160405180910390fd5b61244b565b6001600160a01b03851660009081526019602052604090205460ff1680156123bb57506001600160a01b03861660009081526018602052604090205460ff16155b156123e157818411156123755760405163fdeb075d60e01b815260040160405180910390fd5b6001600160a01b03851660009081526018602052604090205460ff1661244b578084612422876001600160a01b031660009081526020819052604090205490565b61242c9190613410565b111561244b5760405163fd42866160e01b815260040160405180910390fd5b5050505b3060009081526020819052604081205460165490919082108015919082906124805750600b54600160b01b900460ff165b80156124965750600b54600160a01b900460ff16155b80156124ba57506001600160a01b03851660009081526019602052604090205460ff165b80156124cf57506001600160a01b0386163014155b80156124f457506001600160a01b03861660009081526017602052604090205460ff16155b9050801561252657600b805460ff60a01b1916600160a01b17905561251884612840565b600b805460ff60a01b191690555b600b546001600160a01b03871660009081526017602052604090205460ff600160a01b90920482161591168061257457506001600160a01b03861660009081526017602052604090205460ff165b1561257d575060005b60008115612670576001600160a01b03871660009081526019602052604090205460ff1680156125af57506000601254115b156125ee57612710601254876125c59190613365565b6125cf919061337c565b905080601460008282546125e39190613410565b909155506126529050565b6001600160a01b03881660009081526019602052604090205460ff16801561261857506000601054115b15612652576127106010548761262e9190613365565b612638919061337c565b9050806014600082825461264c9190613410565b90915550505b8015612663576126638830836126d9565b61266d81876133fd565b95505b61267b8888886126d9565b5050505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661273d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c74565b6001600160a01b03821661279f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c74565b6001600160a01b038316600090815260208190526040812080548392906127c79084906133fd565b90915550506001600160a01b038216600090815260208190526040812080548392906127f4908490613410565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4891815260200190565b6002600654036128925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b6002600655306000908152602081905260409020546014548115806128b5575080155b156128c157505061296e565b60006127106015546128d260025490565b6128dc9190613365565b6128e6919061337c565b905083818111156128f45750805b828111156128ff5750815b8381111561290a5750825b60165481101561291d575050505061296e565b600061292882612976565b9050801561295e57816014600082825461294291906133fd565b9091555047905080156129585761295881612c57565b50612968565b505050505061296e565b50505050505b506001600655565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106129af576129af613423565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a519190613480565b81600181518110612a6457612a64613423565b60200260200101906001600160a01b031690816001600160a01b031681525050612aaf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d85611e30565b60405163791ac94760e01b815247906001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b0690879060009087903090429060040161349d565b600060405180830381600087803b158015612b2057600080fd5b505af1925050508015612b31575060015b612c0257612b3d61350f565b806308c379a003612b9f5750612b51613565565b80612b5c5750612ba1565b7fdf56312a616c0a93bb5bc464e3b9e2514160a42cbc69db8a095db22d397b4a198582604051612b8d9291906135ea565b60405180910390a16000935050612c50565b505b3d808015612bcb576040519150601f19603f3d011682016040523d82523d6000602084013e612bd0565b606091505b507fcac61de4cc24e08946cbe1f74266e89411092e0723d52258d0b9f3b6142c1df68582604051612b8d9291906135ea565b6000612c0e82476133fd565b60408051878152602081018390529192507fa808b9f34dc92cf15d3573b357678c78b5aeb0ae55a5d0fb3915b2a3611649c5910160405180910390a160019350505b5050919050565b80600003612c625750565b6000806000806000601d60029054906101000a900460ff1615612c91576106d69350612c8e8486613410565b94505b601d546301000000900460ff1615612cb5576101f49250612cb28386613410565b94505b601d5460ff1615612cd257610f239150612ccf8286613410565b94505b601d54610100900460ff1615612cf35750610f23612cf08186613410565b94505b84600003612d0357505050505050565b60008415612dc657600086612d18878a613365565b612d22919061337c565b9050612d2e8183613410565b600a546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612d80576040519150601f19603f3d011682016040523d82523d6000602084013e612d85565b606091505b5050905080612dc357600a54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8315612e8757600086612dd9868a613365565b612de3919061337c565b9050612def8183613410565b600b546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612e41576040519150601f19603f3d011682016040523d82523d6000602084013e612e46565b606091505b5050905080612e8457600b54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8215612f4857600086612e9a858a613365565b612ea4919061337c565b9050612eb08183613410565b6008546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612f02576040519150601f19603f3d011682016040523d82523d6000602084013e612f07565b606091505b5050905080612f4557600854604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b811561300957600086612f5b848a613365565b612f65919061337c565b9050612f718183613410565b6009546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b505090508061300657600954604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8681111561306b5760405162461bcd60e51b815260206004820152602960248201527f496e73756666696369656e74204554482062616c616e636520666f72206469736044820152683a3934b13aba34b7b760b91b6064820152608401610c74565b50505050505050565b6001600160a01b038116811461308957600080fd5b50565b60006020828403121561309e57600080fd5b81356130a981613074565b9392505050565b6000815180845260005b818110156130d6576020818501810151868301820152016130ba565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006130a960208301846130b0565b6000806040838503121561311c57600080fd5b823561312781613074565b946020939093013593505050565b60006020828403121561314757600080fd5b5035919050565b60008060006060848603121561316357600080fd5b833561316e81613074565b9250602084013561317e81613074565b929592945050506040919091013590565b801515811461308957600080fd5b600080604083850312156131b057600080fd5b82356131bb81613074565b915060208301356131cb8161318f565b809150509250929050565b6000602082840312156131e857600080fd5b81356130a98161318f565b60008060006040848603121561320857600080fd5b833567ffffffffffffffff81111561321f57600080fd5b8401601f8101861361323057600080fd5b803567ffffffffffffffff81111561324757600080fd5b8660208260051b840101111561325c57600080fd5b6020918201945092508401356132718161318f565b809150509250925092565b6000806040838503121561328f57600080fd5b823561329a81613074565b915060208301356131cb81613074565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156132f157600080fd5b5051919050565b60006020828403121561330a57600080fd5b81516130a98161318f565b600181811c9082168061332957607f821691505b60208210810361334957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e4857610e4861334f565b60008261339957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526016908201527513db9b1e4819195c1b1bde595c8818d85b8818d85b1b60521b604082015260600190565b60208082526015908201527415185e195cc8185b1c9958591e481c995d9bdad959605a1b604082015260600190565b81810381811115610e4857610e4861334f565b80820180821115610e4857610e4861334f565b634e487b7160e01b600052603260045260246000fd5b60208082526027908201527f4e6f742077686974656c697374656420647572696e672077686974656c697374604082015266081c195c9a5bd960ca1b606082015260800190565b60006020828403121561349257600080fd5b81516130a981613074565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156134ef5783516001600160a01b03168352602093840193909201916001016134c8565b50506001600160a01b039590951660608401525050608001529392505050565b600060033d11156117455760046000803e5060005160e01c90565b601f8201601f1916810167ffffffffffffffff8111828210171561355e57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d10156135735790565b6040513d600319016004823e80513d602482011167ffffffffffffffff8211171561359d57505090565b808201805167ffffffffffffffff8111156135b9575050505090565b3d84016003190182820160200111156135d3575050505090565b6135e26020828501018561352a565b509392505050565b82815260406020820152600061360360408301846130b0565b94935050505056fe1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81a2646970667358221220ac363f559d911b9a934c0b776418dcd9f2876b7144e210cba02f3d82d296963264736f6c634300081b0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
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.