Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Source Code
Overview
Max Total Supply
100,000,000 BLK
Holders
141
Transfers
-
0
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
BLK
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/BlocklanceGigs
Twitter: https://x.com/BlocklanceGigs
Website/Dapp: https://blocklance.work
Docs: https://blocklances-organization.gitbook.io/blocklance-v1
Medium: https://medium.com/@blocklance
Blocklance is the first Web3-powered freelance marketplace designed to revolutionize the global gig economy
by addressing the limitations of traditional platforms. Leveraging blockchain technology,
Blocklance offers freelancers and recruiters a decentralized platform that eliminates high fees,
ensures data privacy, and enhances accessibility for users worldwide. With wallet-based sign-ups,
industry-low fees of just 5%, and AI-powered multilingual tools, Blocklance fosters seamless global collaboration.
As a gateway to Web3, it not only empowers the freelance community but also paves the way for millions to enter the blockchain ecosystem
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 BLK 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("Blocklance", "BLK") {
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(0xaA334785e9cC08cF35C7FD3a7c84964649a150d3);
projectWalletTwo = address(0x8637b1691A58CEb11F115843E1e8630EDebc584a);
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() * 40) / 10_000; // 0.4%
currentMaxWallet = (totalSupply() * 40) / 10_000; // 0.4%
} 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
Contract ABI
API[{"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
60c0604052600b805462ffffff60a81b1916600160b81b1790556032601555601b805460ff19166001179055601d8054630101010163ffffffff1990911617905534801561004c57600080fd5b5060405161422c38038061422c83398101604081905261006b9161086e565b6040518060400160405280600a815260200169426c6f636b6c616e636560b01b81525060405180604001604052806003815260200162424c4b60e81b81525081600390816100b9919061093d565b5060046100c6828261093d565b50505060006100d96105ea60201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060016006553360a081905260006101406012600a610afa565b61014e906305f5e100610b09565b905061271061015e826096610b09565b6101689190610b20565b600e55612710610179826096610b09565b6101839190610b20565b600f556109c46011819055601055610bb86013819055601255600880546001600160a01b031990811673aa334785e9cc08cf35c7fd3a7c84964649a150d317909155600980548216738637b1691a58ceb11f115843e1e8630edebc584a179055600a805482167385dbe4ce3c809dac17e4b1d32a5a2478038a3ae1179055600b8054909116734f82b6bda395c43a047ddc30cd6edf7479a2c7af1790556001600160a01b0383166102475760405163f12aab9d60e01b815260040160405180910390fd5b6001600160a01b038316608052826102608160016105ee565b6000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c4919061086e565b6001600160a01b031663e6a4390530846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610311573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610335919061086e565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a4919061086e565b90506001600160a01b038116156103d557600780546001600160a01b0319166001600160a01b03831617905561053a565b816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610413573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610437919061086e565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610484573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a8919061086e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156104f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610519919061086e565b600780546001600160a01b0319166001600160a01b03929092169190911790555b600754610551906001600160a01b0316600161069b565b600754610568906001600160a01b031660016105ee565b6105738460016106ef565b61057e3060016106ef565b61058b61dead60016106ef565b6105968460016105ee565b6105a13060016105ee565b6105ae61dead60016105ee565b6127106105bc846001610b09565b6105c69190610b20565b601655601b805460ff191660011790556105e0848461078f565b5050505050610b55565b3390565b6005546001600160a01b0316331461063b5760405162461bcd60e51b8152602060048201819052602482015260008051602061420c83398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f388758d239a7790471b273e3760fe65d6424024ca3adb4582f843cec8e71ba5e91015b60405180910390a25050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b031633146107375760405162461bcd60e51b8152602060048201819052602482015260008051602061420c8339815191526044820152606401610632565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910161068f565b6001600160a01b0382166107e55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610632565b80600260008282546107f79190610b42565b90915550506001600160a01b03821660009081526020819052604081208054839290610824908490610b42565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60006020828403121561088057600080fd5b81516001600160a01b038116811461089757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806108c857607f821691505b6020821081036108e857634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561093857806000526020600020601f840160051c810160208510156109155750805b601f840160051c820191505b818110156109355760008155600101610921565b50505b505050565b81516001600160401b038111156109565761095661089e565b61096a8161096484546108b4565b846108ee565b6020601f82116001811461099e57600083156109865750848201515b600019600385901b1c1916600184901b178455610935565b600084815260208120601f198516915b828110156109ce57878501518255602094850194600190920191016109ae565b50848210156109ec5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115610a4c57808504811115610a3057610a306109fb565b6001841615610a3e57908102905b60019390931c928002610a15565b935093915050565b600082610a6357506001610af4565b81610a7057506000610af4565b8160018114610a865760028114610a9057610aac565b6001915050610af4565b60ff841115610aa157610aa16109fb565b50506001821b610af4565b5060208310610133831016604e8410600b8410161715610acf575081810a610af4565b610adc6000198484610a11565b8060001904821115610af057610af06109fb565b0290505b92915050565b600061089760ff841683610a54565b8082028115828204841417610af457610af46109fb565b600082610b3d57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610af457610af46109fb565b60805160a051613661610bab60003960008181610adf015281816110e0015281816111ae0152818161122e0152611c53015260008181610510015281816129d101528181612a8a0152612ac801526136616000f3fe6080604052600436106103cc5760003560e01c806370a08231116101fb578063bbc0c74211610117578063dd62ed3e116100a5578063ee40166e11610077578063ee40166e14610bc8578063ee6bdf8914610bde578063eff165bd14610bfe578063f2fde38b14610c14578063f8b45b0514610c3457005b8063dd62ed3e14610b2c578063e1f1487414610b72578063e2f4560514610b92578063eba4c33314610ba857005b8063c8c8ebe4116100e9578063c8c8ebe414610a97578063cd0fd14914610aad578063d5f3948814610acd578063d73e12f614610b01578063d85ba06314610b1657005b8063bbc0c74214610a16578063bbd9e5b414610a37578063beb08ab914610a57578063c024666814610a7757005b8063924de9b711610194578063a457c2d711610166578063a457c2d714610965578063a9059cbb14610985578063aa498023146109a5578063b62496f5146109c5578063b6f68691146109f557005b8063924de9b7146108fa5780639292caaf1461091a57806395d89b41146109305780639a7a23d61461094557005b8063751039fc116101cd578063751039fc146108925780637571336a146108a75780638a8c523c146108c75780638da5cb5b146108dc57005b806370a0823114610807578063715018a61461083d578063719276281461085257806371fc46881461087257005b80632d8199c7116102ea5780634a62bb65116102835780635bea1f5d116102555780635bea1f5d146107855780636a3ffffb146107a55780636a486a8e146107bb5780636a7bd94b146107d15780636ddd1713146107e657005b80634a62bb65146106eb5780634fbee1931461070c5780635009716c14610745578063518fbc081461076557005b806339509351116102bc578063395093511461067f5780633f8a62041461069f57806347062402146106b557806349bd5a5e146106cb57005b80632d8199c7146106145780632e71c87714610629578063313ce56714610649578063343572fa1461066557005b80631694505e1161036757806320d3cc9e1161033957806320d3cc9e1461059e57806323b872dd146105b357806327163663146105d357806327c8f835146105e85780632b14ca56146105fe57005b80631694505e146104fe57806318160ddd1461054a5780631c499ab01461056957806320800a001461058957005b806306fdde03116103a057806306fdde031461046c578063095ea7b31461048e5780630ed91680146104ae57806310d5de53146104ce57005b8062ae3bf8146103ce57806302a32ae2146103ee57806302ce58131461042257806306c933d81461043c575b005b3480156103da57600080fd5b506103cc6103e936600461308c565b610c4a565b3480156103fa57600080fd5b50601d5461040d90610100900460ff1681565b60405190151581526020015b60405180910390f35b34801561042e57600080fd5b50601b5461040d9060ff1681565b34801561044857600080fd5b5061040d61045736600461308c565b601c6020526000908152604090205460ff1681565b34801561047857600080fd5b50610481610da5565b60405161041991906130f6565b34801561049a57600080fd5b5061040d6104a9366004613109565b610e37565b3480156104ba57600080fd5b506103cc6104c936600461308c565b610e4e565b3480156104da57600080fd5b5061040d6104e936600461308c565b60186020526000908152604090205460ff1681565b34801561050a57600080fd5b506105327f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610419565b34801561055657600080fd5b506002545b604051908152602001610419565b34801561057557600080fd5b506103cc610584366004613135565b610efc565b34801561059557600080fd5b506103cc610fa3565b3480156105aa57600080fd5b506103cc6110d5565b3480156105bf57600080fd5b5061040d6105ce36600461314e565b611151565b3480156105df57600080fd5b506103cc6111a3565b3480156105f457600080fd5b5061053261dead81565b34801561060a57600080fd5b5061055b60135481565b34801561062057600080fd5b506103cc611223565b34801561063557600080fd5b506103cc61064436600461308c565b6112a1565b34801561065557600080fd5b5060405160128152602001610419565b34801561067157600080fd5b50601d5461040d9060ff1681565b34801561068b57600080fd5b5061040d61069a366004613109565b61134f565b3480156106ab57600080fd5b5061055b60145481565b3480156106c157600080fd5b5061055b60115481565b3480156106d757600080fd5b50600754610532906001600160a01b031681565b3480156106f757600080fd5b50600b5461040d90600160b81b900460ff1681565b34801561071857600080fd5b5061040d61072736600461308c565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561075157600080fd5b50601d5461040d9062010000900460ff1681565b34801561077157600080fd5b506103cc61078036600461308c565b611386565b34801561079157600080fd5b506103cc6107a0366004613135565b611434565b3480156107b157600080fd5b5061055b600d5481565b3480156107c757600080fd5b5061055b60125481565b3480156107dd57600080fd5b506103cc6114b6565b3480156107f257600080fd5b50600b5461040d90600160b01b900460ff1681565b34801561081357600080fd5b5061055b61082236600461308c565b6001600160a01b031660009081526020819052604090205490565b34801561084957600080fd5b506103cc611535565b34801561085e57600080fd5b506103cc61086d36600461308c565b6115a9565b34801561087e57600080fd5b506103cc61088d366004613135565b611657565b34801561089e57600080fd5b5061040d6116de565b3480156108b357600080fd5b506103cc6108c236600461319d565b611748565b3480156108d357600080fd5b506103cc6117d2565b3480156108e857600080fd5b506005546001600160a01b0316610532565b34801561090657600080fd5b506103cc6109153660046131d6565b611908565b34801561092657600080fd5b5061055b601a5481565b34801561093c57600080fd5b5061048161197f565b34801561095157600080fd5b506103cc61096036600461319d565b61198e565b34801561097157600080fd5b5061040d610980366004613109565b6119f5565b34801561099157600080fd5b5061040d6109a0366004613109565b611a2c565b3480156109b157600080fd5b506103cc6109c0366004613135565b611a39565b3480156109d157600080fd5b5061040d6109e036600461308c565b60196020526000908152604090205460ff1681565b348015610a0157600080fd5b50601d5461040d906301000000900460ff1681565b348015610a2257600080fd5b50600b5461040d90600160a81b900460ff1681565b348015610a4357600080fd5b506103cc610a523660046131f3565b611ad9565b348015610a6357600080fd5b50600854610532906001600160a01b031681565b348015610a8357600080fd5b506103cc610a9236600461319d565b611bc6565b348015610aa357600080fd5b5061055b600e5481565b348015610ab957600080fd5b50600954610532906001600160a01b031681565b348015610ad957600080fd5b506105327f000000000000000000000000000000000000000000000000000000000000000081565b348015610b0d57600080fd5b506103cc611c48565b348015610b2257600080fd5b5061055b60105481565b348015610b3857600080fd5b5061055b610b4736600461327c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b7e57600080fd5b50600b54610532906001600160a01b031681565b348015610b9e57600080fd5b5061055b60165481565b348015610bb457600080fd5b506103cc610bc3366004613135565b611cbe565b348015610bd457600080fd5b5061055b600c5481565b348015610bea57600080fd5b50600a54610532906001600160a01b031681565b348015610c0a57600080fd5b5061055b60155481565b348015610c2057600080fd5b506103cc610c2f36600461308c565b611d45565b348015610c4057600080fd5b5061055b600f5481565b6005546001600160a01b03163314610c7d5760405162461bcd60e51b8152600401610c74906132aa565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea91906132df565b905080600003610d0d5760405163081ceff360e41b815260040160405180910390fd5b816001600160a01b031663a9059cbb610d2e6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f91906132f8565b50505050565b606060038054610db490613315565b80601f0160208091040260200160405190810160405280929190818152602001828054610de090613315565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e44338484611e30565b5060015b92915050565b6005546001600160a01b03163314610e785760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116610e9f5760405163f12aab9d60e01b815260040160405180910390fd5b600b546040516001600160a01b03918216918316907f5119b7c42595066c7ec6106563cbe03442f1ba8d305d4981ce87bc80ad3d8ddd90600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f265760405162461bcd60e51b8152600401610c74906132aa565b612710610f3260025490565b610f3d906064613365565b610f47919061337c565b811015610f675760405163a51c909d60e01b815260040160405180910390fd5b600f8190556040518181527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace906020015b60405180910390a150565b6005546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610c74906132aa565b60026006540361101f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b60026006554760008190036110475760405163081ceff360e41b815260040160405180910390fd5b600061105b6005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50509050806110cc5760405163081ceff360e41b815260040160405180910390fd5b50506001600655565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461111d5760405162461bcd60e51b8152600401610c749061339e565b601d54610100900460ff166111445760405162461bcd60e51b8152600401610c74906133ce565b601d805461ff0019169055565b600061115e848484611f55565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546111999186916111949086906133fd565b611e30565b5060019392505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146111eb5760405162461bcd60e51b8152600401610c749061339e565b601d546301000000900460ff166112145760405162461bcd60e51b8152600401610c74906133ce565b601d805463ff00000019169055565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461126b5760405162461bcd60e51b8152600401610c749061339e565b601d5462010000900460ff166112935760405162461bcd60e51b8152600401610c74906133ce565b601d805462ff000019169055565b6005546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166112f25760405163f12aab9d60e01b815260040160405180910390fd5b600a546040516001600160a01b03918216918316907fd5bab94e3f642caa9f25830fdd5537e2df93309890c3a49998c6d0eb0c8c053b90600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e44918590611194908690613410565b6005546001600160a01b031633146113b05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166113d75760405163f12aab9d60e01b815260040160405180910390fd5b6009546040516001600160a01b03918216918316907f5636c2b58fb71de1761762b630fb3be56d15e4474444f0f8e517c11aad57033a90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610c74906132aa565b6103e881111561148157604051633f86cacf60e11b815260040160405180910390fd5b60158190556040518181527fd08d3952aefe7cb7a7c742db67cd6bdb7cfea25b875f3797f4959c12a261197790602001610f98565b6005546001600160a01b031633146114e05760405162461bcd60e51b8152600401610c74906132aa565b601b5460ff166115295760405162461bcd60e51b815260206004820152601460248201527357686974656c697374206e6f742061637469766560601b6044820152606401610c74565b601b805460ff19169055565b6005546001600160a01b0316331461155f5760405162461bcd60e51b8152600401610c74906132aa565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146115d35760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166115fa5760405163f12aab9d60e01b815260040160405180910390fd5b6008546040516001600160a01b03918216918316907fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e790600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116815760405162461bcd60e51b8152600401610c74906132aa565b6011548111156116a457604051631f333b8160e01b815260040160405180910390fd5b601181905560108190556040518181527f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90602001610f98565b6005546000906001600160a01b0316331461170b5760405162461bcd60e51b8152600401610c74906132aa565b600b805460ff60b81b191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef90600090a15060015b90565b6005546001600160a01b031633146117725760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f388758d239a7790471b273e3760fe65d6424024ca3adb4582f843cec8e71ba5e91015b60405180910390a25050565b6005546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610c74906132aa565b6008546001600160a01b03166118255760405163f12aab9d60e01b815260040160405180910390fd5b6009546001600160a01b031661184e5760405163f12aab9d60e01b815260040160405180910390fd5b600a546001600160a01b03166118775760405163f12aab9d60e01b815260040160405180910390fd5b600b546001600160a01b03166118a05760405163f12aab9d60e01b815260040160405180910390fd5b600b805462ffffff60a81b19166201010160a81b17905543600c81905542600d819055601a55601b805460ff191660011790556040519081527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6005546001600160a01b031633146119325760405162461bcd60e51b8152600401610c74906132aa565b600b8054821515600160b01b0260ff60b01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a1290610f9890831515815260200190565b606060048054610db490613315565b6005546001600160a01b031633146119b85760405162461bcd60e51b8152600401610c74906132aa565b6007546001600160a01b03908116908316036119e757604051630277ae4960e21b815260040160405180910390fd5b6119f18282612685565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e449185906111949086906133fd565b6000610e44338484611f55565b6005546001600160a01b03163314611a635760405162461bcd60e51b8152600401610c74906132aa565b612710611a6f60025490565b611a7a906064613365565b611a84919061337c565b811015611aa45760405163c7d1448f60e01b815260040160405180910390fd5b600e8190556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f98565b6005546001600160a01b03163314611b035760405162461bcd60e51b8152600401610c74906132aa565b60005b82811015610d9f5781601c6000868685818110611b2557611b25613423565b9050602002016020810190611b3a919061308c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838382818110611b7457611b74613423565b9050602002016020810190611b89919061308c565b6001600160a01b03167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a2600101611b06565b6005546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016117c6565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611c905760405162461bcd60e51b8152600401610c749061339e565b601d5460ff16611cb25760405162461bcd60e51b8152600401610c74906133ce565b601d805460ff19169055565b6005546001600160a01b03163314611ce85760405162461bcd60e51b8152600401610c74906132aa565b601354811115611d0b57604051631f333b8160e01b815260040160405180910390fd5b601381905560128190556040518181527f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590602001610f98565b6005546001600160a01b03163314611d6f5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116611dd45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c74565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611e925760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c74565b6001600160a01b038216611ef35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c74565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611f7c57604051630b07e54560e11b815260040160405180910390fd5b6001600160a01b038216611fa357604051633a954ecd60e21b815260040160405180910390fd5b600b54600160a81b900460ff16612014576001600160a01b03831660009081526017602052604090205460ff16158015611ff657506001600160a01b03821660009081526017602052604090205460ff16155b1561201457604051632924508760e21b815260040160405180910390fd5b8060000361202d57612028838360006126d9565b505050565b600b54600160b81b900460ff1680156120505750600b54600160a01b900460ff16155b1561244f576005546001600160a01b0384811691161480159061208157506005546001600160a01b03838116911614155b801561209557506001600160a01b03821615155b80156120ac57506001600160a01b03821661dead14155b1561244f57601b5460009060ff1680156120d35750601a546120d09061012c613410565b42105b90506000808215612129576127106120ea60025490565b6120f5906028613365565b6120ff919061337c565b915061271061210d60025490565b612118906028613365565b612122919061337c565b9050612147565b5050600e54600f54601b5460ff161561214757601b805460ff191690555b82156122c4576001600160a01b03861660009081526019602052604090205460ff16156121ab576001600160a01b0385166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6122c4565b6001600160a01b03851660009081526019602052604090205460ff1615612204576001600160a01b0386166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6001600160a01b0386166000908152601c602052604090205460ff16801561224457506001600160a01b0385166000908152601c602052604090205460ff165b6122c45760405162461bcd60e51b815260206004820152604560248201527f426f74682073656e64657220616e6420726563697069656e74206d757374206260448201527f652077686974656c697374656420647572696e672077686974656c6973742070606482015264195c9a5bd960da1b608482015260a401610c74565b6001600160a01b03861660009081526019602052604090205460ff16801561230557506001600160a01b03851660009081526018602052604090205460ff16155b1561237a578184111561232b5760405163fdeb075d60e01b815260040160405180910390fd5b808461234c876001600160a01b031660009081526020819052604090205490565b6123569190613410565b11156123755760405163fd42866160e01b815260040160405180910390fd5b61244b565b6001600160a01b03851660009081526019602052604090205460ff1680156123bb57506001600160a01b03861660009081526018602052604090205460ff16155b156123e157818411156123755760405163fdeb075d60e01b815260040160405180910390fd5b6001600160a01b03851660009081526018602052604090205460ff1661244b578084612422876001600160a01b031660009081526020819052604090205490565b61242c9190613410565b111561244b5760405163fd42866160e01b815260040160405180910390fd5b5050505b3060009081526020819052604081205460165490919082108015919082906124805750600b54600160b01b900460ff165b80156124965750600b54600160a01b900460ff16155b80156124ba57506001600160a01b03851660009081526019602052604090205460ff165b80156124cf57506001600160a01b0386163014155b80156124f457506001600160a01b03861660009081526017602052604090205460ff16155b9050801561252657600b805460ff60a01b1916600160a01b17905561251884612840565b600b805460ff60a01b191690555b600b546001600160a01b03871660009081526017602052604090205460ff600160a01b90920482161591168061257457506001600160a01b03861660009081526017602052604090205460ff165b1561257d575060005b60008115612670576001600160a01b03871660009081526019602052604090205460ff1680156125af57506000601254115b156125ee57612710601254876125c59190613365565b6125cf919061337c565b905080601460008282546125e39190613410565b909155506126529050565b6001600160a01b03881660009081526019602052604090205460ff16801561261857506000601054115b15612652576127106010548761262e9190613365565b612638919061337c565b9050806014600082825461264c9190613410565b90915550505b8015612663576126638830836126d9565b61266d81876133fd565b95505b61267b8888886126d9565b5050505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661273d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c74565b6001600160a01b03821661279f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c74565b6001600160a01b038316600090815260208190526040812080548392906127c79084906133fd565b90915550506001600160a01b038216600090815260208190526040812080548392906127f4908490613410565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4891815260200190565b6002600654036128925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b6002600655306000908152602081905260409020546014548115806128b5575080155b156128c157505061296e565b60006127106015546128d260025490565b6128dc9190613365565b6128e6919061337c565b905083818111156128f45750805b828111156128ff5750815b8381111561290a5750825b60165481101561291d575050505061296e565b600061292882612976565b9050801561295e57816014600082825461294291906133fd565b9091555047905080156129585761295881612c57565b50612968565b505050505061296e565b50505050505b506001600655565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106129af576129af613423565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a519190613480565b81600181518110612a6457612a64613423565b60200260200101906001600160a01b031690816001600160a01b031681525050612aaf307f000000000000000000000000000000000000000000000000000000000000000085611e30565b60405163791ac94760e01b815247906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790612b0690879060009087903090429060040161349d565b600060405180830381600087803b158015612b2057600080fd5b505af1925050508015612b31575060015b612c0257612b3d61350f565b806308c379a003612b9f5750612b51613565565b80612b5c5750612ba1565b7fdf56312a616c0a93bb5bc464e3b9e2514160a42cbc69db8a095db22d397b4a198582604051612b8d9291906135ea565b60405180910390a16000935050612c50565b505b3d808015612bcb576040519150601f19603f3d011682016040523d82523d6000602084013e612bd0565b606091505b507fcac61de4cc24e08946cbe1f74266e89411092e0723d52258d0b9f3b6142c1df68582604051612b8d9291906135ea565b6000612c0e82476133fd565b60408051878152602081018390529192507fa808b9f34dc92cf15d3573b357678c78b5aeb0ae55a5d0fb3915b2a3611649c5910160405180910390a160019350505b5050919050565b80600003612c625750565b6000806000806000601d60029054906101000a900460ff1615612c91576106d69350612c8e8486613410565b94505b601d546301000000900460ff1615612cb5576101f49250612cb28386613410565b94505b601d5460ff1615612cd257610f239150612ccf8286613410565b94505b601d54610100900460ff1615612cf35750610f23612cf08186613410565b94505b84600003612d0357505050505050565b60008415612dc657600086612d18878a613365565b612d22919061337c565b9050612d2e8183613410565b600a546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612d80576040519150601f19603f3d011682016040523d82523d6000602084013e612d85565b606091505b5050905080612dc357600a54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8315612e8757600086612dd9868a613365565b612de3919061337c565b9050612def8183613410565b600b546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612e41576040519150601f19603f3d011682016040523d82523d6000602084013e612e46565b606091505b5050905080612e8457600b54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8215612f4857600086612e9a858a613365565b612ea4919061337c565b9050612eb08183613410565b6008546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612f02576040519150601f19603f3d011682016040523d82523d6000602084013e612f07565b606091505b5050905080612f4557600854604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b811561300957600086612f5b848a613365565b612f65919061337c565b9050612f718183613410565b6009546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b505090508061300657600954604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8681111561306b5760405162461bcd60e51b815260206004820152602960248201527f496e73756666696369656e74204554482062616c616e636520666f72206469736044820152683a3934b13aba34b7b760b91b6064820152608401610c74565b50505050505050565b6001600160a01b038116811461308957600080fd5b50565b60006020828403121561309e57600080fd5b81356130a981613074565b9392505050565b6000815180845260005b818110156130d6576020818501810151868301820152016130ba565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006130a960208301846130b0565b6000806040838503121561311c57600080fd5b823561312781613074565b946020939093013593505050565b60006020828403121561314757600080fd5b5035919050565b60008060006060848603121561316357600080fd5b833561316e81613074565b9250602084013561317e81613074565b929592945050506040919091013590565b801515811461308957600080fd5b600080604083850312156131b057600080fd5b82356131bb81613074565b915060208301356131cb8161318f565b809150509250929050565b6000602082840312156131e857600080fd5b81356130a98161318f565b60008060006040848603121561320857600080fd5b833567ffffffffffffffff81111561321f57600080fd5b8401601f8101861361323057600080fd5b803567ffffffffffffffff81111561324757600080fd5b8660208260051b840101111561325c57600080fd5b6020918201945092508401356132718161318f565b809150509250925092565b6000806040838503121561328f57600080fd5b823561329a81613074565b915060208301356131cb81613074565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156132f157600080fd5b5051919050565b60006020828403121561330a57600080fd5b81516130a98161318f565b600181811c9082168061332957607f821691505b60208210810361334957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e4857610e4861334f565b60008261339957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526016908201527513db9b1e4819195c1b1bde595c8818d85b8818d85b1b60521b604082015260600190565b60208082526015908201527415185e195cc8185b1c9958591e481c995d9bdad959605a1b604082015260600190565b81810381811115610e4857610e4861334f565b80820180821115610e4857610e4861334f565b634e487b7160e01b600052603260045260246000fd5b60208082526027908201527f4e6f742077686974656c697374656420647572696e672077686974656c697374604082015266081c195c9a5bd960ca1b606082015260800190565b60006020828403121561349257600080fd5b81516130a981613074565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156134ef5783516001600160a01b03168352602093840193909201916001016134c8565b50506001600160a01b039590951660608401525050608001529392505050565b600060033d11156117455760046000803e5060005160e01c90565b601f8201601f1916810167ffffffffffffffff8111828210171561355e57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d10156135735790565b6040513d600319016004823e80513d602482011167ffffffffffffffff8211171561359d57505090565b808201805167ffffffffffffffff8111156135b9575050505090565b3d84016003190182820160200111156135d3575050505090565b6135e26020828501018561352a565b509392505050565b82815260406020820152600061360360408301846130b0565b94935050505056fe1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81a26469706673582212200445f9ff9c42853ab4dc000cc1ca708c9fca37f2326b0427bfbcb23ed5d17d2764736f6c634300081b00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65720000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Deployed Bytecode
0x6080604052600436106103cc5760003560e01c806370a08231116101fb578063bbc0c74211610117578063dd62ed3e116100a5578063ee40166e11610077578063ee40166e14610bc8578063ee6bdf8914610bde578063eff165bd14610bfe578063f2fde38b14610c14578063f8b45b0514610c3457005b8063dd62ed3e14610b2c578063e1f1487414610b72578063e2f4560514610b92578063eba4c33314610ba857005b8063c8c8ebe4116100e9578063c8c8ebe414610a97578063cd0fd14914610aad578063d5f3948814610acd578063d73e12f614610b01578063d85ba06314610b1657005b8063bbc0c74214610a16578063bbd9e5b414610a37578063beb08ab914610a57578063c024666814610a7757005b8063924de9b711610194578063a457c2d711610166578063a457c2d714610965578063a9059cbb14610985578063aa498023146109a5578063b62496f5146109c5578063b6f68691146109f557005b8063924de9b7146108fa5780639292caaf1461091a57806395d89b41146109305780639a7a23d61461094557005b8063751039fc116101cd578063751039fc146108925780637571336a146108a75780638a8c523c146108c75780638da5cb5b146108dc57005b806370a0823114610807578063715018a61461083d578063719276281461085257806371fc46881461087257005b80632d8199c7116102ea5780634a62bb65116102835780635bea1f5d116102555780635bea1f5d146107855780636a3ffffb146107a55780636a486a8e146107bb5780636a7bd94b146107d15780636ddd1713146107e657005b80634a62bb65146106eb5780634fbee1931461070c5780635009716c14610745578063518fbc081461076557005b806339509351116102bc578063395093511461067f5780633f8a62041461069f57806347062402146106b557806349bd5a5e146106cb57005b80632d8199c7146106145780632e71c87714610629578063313ce56714610649578063343572fa1461066557005b80631694505e1161036757806320d3cc9e1161033957806320d3cc9e1461059e57806323b872dd146105b357806327163663146105d357806327c8f835146105e85780632b14ca56146105fe57005b80631694505e146104fe57806318160ddd1461054a5780631c499ab01461056957806320800a001461058957005b806306fdde03116103a057806306fdde031461046c578063095ea7b31461048e5780630ed91680146104ae57806310d5de53146104ce57005b8062ae3bf8146103ce57806302a32ae2146103ee57806302ce58131461042257806306c933d81461043c575b005b3480156103da57600080fd5b506103cc6103e936600461308c565b610c4a565b3480156103fa57600080fd5b50601d5461040d90610100900460ff1681565b60405190151581526020015b60405180910390f35b34801561042e57600080fd5b50601b5461040d9060ff1681565b34801561044857600080fd5b5061040d61045736600461308c565b601c6020526000908152604090205460ff1681565b34801561047857600080fd5b50610481610da5565b60405161041991906130f6565b34801561049a57600080fd5b5061040d6104a9366004613109565b610e37565b3480156104ba57600080fd5b506103cc6104c936600461308c565b610e4e565b3480156104da57600080fd5b5061040d6104e936600461308c565b60186020526000908152604090205460ff1681565b34801561050a57600080fd5b506105327f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610419565b34801561055657600080fd5b506002545b604051908152602001610419565b34801561057557600080fd5b506103cc610584366004613135565b610efc565b34801561059557600080fd5b506103cc610fa3565b3480156105aa57600080fd5b506103cc6110d5565b3480156105bf57600080fd5b5061040d6105ce36600461314e565b611151565b3480156105df57600080fd5b506103cc6111a3565b3480156105f457600080fd5b5061053261dead81565b34801561060a57600080fd5b5061055b60135481565b34801561062057600080fd5b506103cc611223565b34801561063557600080fd5b506103cc61064436600461308c565b6112a1565b34801561065557600080fd5b5060405160128152602001610419565b34801561067157600080fd5b50601d5461040d9060ff1681565b34801561068b57600080fd5b5061040d61069a366004613109565b61134f565b3480156106ab57600080fd5b5061055b60145481565b3480156106c157600080fd5b5061055b60115481565b3480156106d757600080fd5b50600754610532906001600160a01b031681565b3480156106f757600080fd5b50600b5461040d90600160b81b900460ff1681565b34801561071857600080fd5b5061040d61072736600461308c565b6001600160a01b031660009081526017602052604090205460ff1690565b34801561075157600080fd5b50601d5461040d9062010000900460ff1681565b34801561077157600080fd5b506103cc61078036600461308c565b611386565b34801561079157600080fd5b506103cc6107a0366004613135565b611434565b3480156107b157600080fd5b5061055b600d5481565b3480156107c757600080fd5b5061055b60125481565b3480156107dd57600080fd5b506103cc6114b6565b3480156107f257600080fd5b50600b5461040d90600160b01b900460ff1681565b34801561081357600080fd5b5061055b61082236600461308c565b6001600160a01b031660009081526020819052604090205490565b34801561084957600080fd5b506103cc611535565b34801561085e57600080fd5b506103cc61086d36600461308c565b6115a9565b34801561087e57600080fd5b506103cc61088d366004613135565b611657565b34801561089e57600080fd5b5061040d6116de565b3480156108b357600080fd5b506103cc6108c236600461319d565b611748565b3480156108d357600080fd5b506103cc6117d2565b3480156108e857600080fd5b506005546001600160a01b0316610532565b34801561090657600080fd5b506103cc6109153660046131d6565b611908565b34801561092657600080fd5b5061055b601a5481565b34801561093c57600080fd5b5061048161197f565b34801561095157600080fd5b506103cc61096036600461319d565b61198e565b34801561097157600080fd5b5061040d610980366004613109565b6119f5565b34801561099157600080fd5b5061040d6109a0366004613109565b611a2c565b3480156109b157600080fd5b506103cc6109c0366004613135565b611a39565b3480156109d157600080fd5b5061040d6109e036600461308c565b60196020526000908152604090205460ff1681565b348015610a0157600080fd5b50601d5461040d906301000000900460ff1681565b348015610a2257600080fd5b50600b5461040d90600160a81b900460ff1681565b348015610a4357600080fd5b506103cc610a523660046131f3565b611ad9565b348015610a6357600080fd5b50600854610532906001600160a01b031681565b348015610a8357600080fd5b506103cc610a9236600461319d565b611bc6565b348015610aa357600080fd5b5061055b600e5481565b348015610ab957600080fd5b50600954610532906001600160a01b031681565b348015610ad957600080fd5b506105327f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a81565b348015610b0d57600080fd5b506103cc611c48565b348015610b2257600080fd5b5061055b60105481565b348015610b3857600080fd5b5061055b610b4736600461327c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b7e57600080fd5b50600b54610532906001600160a01b031681565b348015610b9e57600080fd5b5061055b60165481565b348015610bb457600080fd5b506103cc610bc3366004613135565b611cbe565b348015610bd457600080fd5b5061055b600c5481565b348015610bea57600080fd5b50600a54610532906001600160a01b031681565b348015610c0a57600080fd5b5061055b60155481565b348015610c2057600080fd5b506103cc610c2f36600461308c565b611d45565b348015610c4057600080fd5b5061055b600f5481565b6005546001600160a01b03163314610c7d5760405162461bcd60e51b8152600401610c74906132aa565b60405180910390fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610cc6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cea91906132df565b905080600003610d0d5760405163081ceff360e41b815260040160405180910390fd5b816001600160a01b031663a9059cbb610d2e6005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610d7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9f91906132f8565b50505050565b606060038054610db490613315565b80601f0160208091040260200160405190810160405280929190818152602001828054610de090613315565b8015610e2d5780601f10610e0257610100808354040283529160200191610e2d565b820191906000526020600020905b815481529060010190602001808311610e1057829003601f168201915b5050505050905090565b6000610e44338484611e30565b5060015b92915050565b6005546001600160a01b03163314610e785760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116610e9f5760405163f12aab9d60e01b815260040160405180910390fd5b600b546040516001600160a01b03918216918316907f5119b7c42595066c7ec6106563cbe03442f1ba8d305d4981ce87bc80ad3d8ddd90600090a3600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f265760405162461bcd60e51b8152600401610c74906132aa565b612710610f3260025490565b610f3d906064613365565b610f47919061337c565b811015610f675760405163a51c909d60e01b815260040160405180910390fd5b600f8190556040518181527f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace906020015b60405180910390a150565b6005546001600160a01b03163314610fcd5760405162461bcd60e51b8152600401610c74906132aa565b60026006540361101f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b60026006554760008190036110475760405163081ceff360e41b815260040160405180910390fd5b600061105b6005546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d80600081146110a5576040519150601f19603f3d011682016040523d82523d6000602084013e6110aa565b606091505b50509050806110cc5760405163081ceff360e41b815260040160405180910390fd5b50506001600655565b336001600160a01b037f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a161461111d5760405162461bcd60e51b8152600401610c749061339e565b601d54610100900460ff166111445760405162461bcd60e51b8152600401610c74906133ce565b601d805461ff0019169055565b600061115e848484611f55565b6001600160a01b0384166000908152600160209081526040808320338085529252909120546111999186916111949086906133fd565b611e30565b5060019392505050565b336001600160a01b037f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a16146111eb5760405162461bcd60e51b8152600401610c749061339e565b601d546301000000900460ff166112145760405162461bcd60e51b8152600401610c74906133ce565b601d805463ff00000019169055565b336001600160a01b037f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a161461126b5760405162461bcd60e51b8152600401610c749061339e565b601d5462010000900460ff166112935760405162461bcd60e51b8152600401610c74906133ce565b601d805462ff000019169055565b6005546001600160a01b031633146112cb5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166112f25760405163f12aab9d60e01b815260040160405180910390fd5b600a546040516001600160a01b03918216918316907fd5bab94e3f642caa9f25830fdd5537e2df93309890c3a49998c6d0eb0c8c053b90600090a3600a80546001600160a01b0319166001600160a01b0392909216919091179055565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e44918590611194908690613410565b6005546001600160a01b031633146113b05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166113d75760405163f12aab9d60e01b815260040160405180910390fd5b6009546040516001600160a01b03918216918316907f5636c2b58fb71de1761762b630fb3be56d15e4474444f0f8e517c11aad57033a90600090a3600980546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461145e5760405162461bcd60e51b8152600401610c74906132aa565b6103e881111561148157604051633f86cacf60e11b815260040160405180910390fd5b60158190556040518181527fd08d3952aefe7cb7a7c742db67cd6bdb7cfea25b875f3797f4959c12a261197790602001610f98565b6005546001600160a01b031633146114e05760405162461bcd60e51b8152600401610c74906132aa565b601b5460ff166115295760405162461bcd60e51b815260206004820152601460248201527357686974656c697374206e6f742061637469766560601b6044820152606401610c74565b601b805460ff19169055565b6005546001600160a01b0316331461155f5760405162461bcd60e51b8152600401610c74906132aa565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146115d35760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b0381166115fa5760405163f12aab9d60e01b815260040160405180910390fd5b6008546040516001600160a01b03918216918316907fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e790600090a3600880546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146116815760405162461bcd60e51b8152600401610c74906132aa565b6011548111156116a457604051631f333b8160e01b815260040160405180910390fd5b601181905560108190556040518181527f491005465ab6f82fd10f4b13a1b1e5ca452bc4856b019f63775e33a6b1ad2feb90602001610f98565b6005546000906001600160a01b0316331461170b5760405162461bcd60e51b8152600401610c74906132aa565b600b805460ff60b81b191690556040517f7bfa7bacf025baa75e5308bf15bcf2948f406c7ebe3eb1a8bb611862b9d647ef90600090a15060015b90565b6005546001600160a01b031633146117725760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260186020908152604091829020805460ff191685151590811790915591519182527f388758d239a7790471b273e3760fe65d6424024ca3adb4582f843cec8e71ba5e91015b60405180910390a25050565b6005546001600160a01b031633146117fc5760405162461bcd60e51b8152600401610c74906132aa565b6008546001600160a01b03166118255760405163f12aab9d60e01b815260040160405180910390fd5b6009546001600160a01b031661184e5760405163f12aab9d60e01b815260040160405180910390fd5b600a546001600160a01b03166118775760405163f12aab9d60e01b815260040160405180910390fd5b600b546001600160a01b03166118a05760405163f12aab9d60e01b815260040160405180910390fd5b600b805462ffffff60a81b19166201010160a81b17905543600c81905542600d819055601a55601b805460ff191660011790556040519081527fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e9239060200160405180910390a1565b6005546001600160a01b031633146119325760405162461bcd60e51b8152600401610c74906132aa565b600b8054821515600160b01b0260ff60b01b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a1290610f9890831515815260200190565b606060048054610db490613315565b6005546001600160a01b031633146119b85760405162461bcd60e51b8152600401610c74906132aa565b6007546001600160a01b03908116908316036119e757604051630277ae4960e21b815260040160405180910390fd5b6119f18282612685565b5050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610e449185906111949086906133fd565b6000610e44338484611f55565b6005546001600160a01b03163314611a635760405162461bcd60e51b8152600401610c74906132aa565b612710611a6f60025490565b611a7a906064613365565b611a84919061337c565b811015611aa45760405163c7d1448f60e01b815260040160405180910390fd5b600e8190556040518181527f7c1cb3702d8e1fa6d24b12dd90670ab69c6d66d58233103d37da8b07d6b850ac90602001610f98565b6005546001600160a01b03163314611b035760405162461bcd60e51b8152600401610c74906132aa565b60005b82811015610d9f5781601c6000868685818110611b2557611b25613423565b9050602002016020810190611b3a919061308c565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055838382818110611b7457611b74613423565b9050602002016020810190611b89919061308c565b6001600160a01b03167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a2600101611b06565b6005546001600160a01b03163314611bf05760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df791016117c6565b336001600160a01b037f000000000000000000000000b75de041db2989e917bc2dd809681165f6fd9a1a1614611c905760405162461bcd60e51b8152600401610c749061339e565b601d5460ff16611cb25760405162461bcd60e51b8152600401610c74906133ce565b601d805460ff19169055565b6005546001600160a01b03163314611ce85760405162461bcd60e51b8152600401610c74906132aa565b601354811115611d0b57604051631f333b8160e01b815260040160405180910390fd5b601381905560128190556040518181527f16df2c25b3392f376a685a3826b941b25140108d95899d6b1bd983feafbc1c5590602001610f98565b6005546001600160a01b03163314611d6f5760405162461bcd60e51b8152600401610c74906132aa565b6001600160a01b038116611dd45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610c74565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611e925760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610c74565b6001600160a01b038216611ef35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610c74565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316611f7c57604051630b07e54560e11b815260040160405180910390fd5b6001600160a01b038216611fa357604051633a954ecd60e21b815260040160405180910390fd5b600b54600160a81b900460ff16612014576001600160a01b03831660009081526017602052604090205460ff16158015611ff657506001600160a01b03821660009081526017602052604090205460ff16155b1561201457604051632924508760e21b815260040160405180910390fd5b8060000361202d57612028838360006126d9565b505050565b600b54600160b81b900460ff1680156120505750600b54600160a01b900460ff16155b1561244f576005546001600160a01b0384811691161480159061208157506005546001600160a01b03838116911614155b801561209557506001600160a01b03821615155b80156120ac57506001600160a01b03821661dead14155b1561244f57601b5460009060ff1680156120d35750601a546120d09061012c613410565b42105b90506000808215612129576127106120ea60025490565b6120f5906028613365565b6120ff919061337c565b915061271061210d60025490565b612118906028613365565b612122919061337c565b9050612147565b5050600e54600f54601b5460ff161561214757601b805460ff191690555b82156122c4576001600160a01b03861660009081526019602052604090205460ff16156121ab576001600160a01b0385166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6122c4565b6001600160a01b03851660009081526019602052604090205460ff1615612204576001600160a01b0386166000908152601c602052604090205460ff166121a65760405162461bcd60e51b8152600401610c7490613439565b6001600160a01b0386166000908152601c602052604090205460ff16801561224457506001600160a01b0385166000908152601c602052604090205460ff165b6122c45760405162461bcd60e51b815260206004820152604560248201527f426f74682073656e64657220616e6420726563697069656e74206d757374206260448201527f652077686974656c697374656420647572696e672077686974656c6973742070606482015264195c9a5bd960da1b608482015260a401610c74565b6001600160a01b03861660009081526019602052604090205460ff16801561230557506001600160a01b03851660009081526018602052604090205460ff16155b1561237a578184111561232b5760405163fdeb075d60e01b815260040160405180910390fd5b808461234c876001600160a01b031660009081526020819052604090205490565b6123569190613410565b11156123755760405163fd42866160e01b815260040160405180910390fd5b61244b565b6001600160a01b03851660009081526019602052604090205460ff1680156123bb57506001600160a01b03861660009081526018602052604090205460ff16155b156123e157818411156123755760405163fdeb075d60e01b815260040160405180910390fd5b6001600160a01b03851660009081526018602052604090205460ff1661244b578084612422876001600160a01b031660009081526020819052604090205490565b61242c9190613410565b111561244b5760405163fd42866160e01b815260040160405180910390fd5b5050505b3060009081526020819052604081205460165490919082108015919082906124805750600b54600160b01b900460ff165b80156124965750600b54600160a01b900460ff16155b80156124ba57506001600160a01b03851660009081526019602052604090205460ff165b80156124cf57506001600160a01b0386163014155b80156124f457506001600160a01b03861660009081526017602052604090205460ff16155b9050801561252657600b805460ff60a01b1916600160a01b17905561251884612840565b600b805460ff60a01b191690555b600b546001600160a01b03871660009081526017602052604090205460ff600160a01b90920482161591168061257457506001600160a01b03861660009081526017602052604090205460ff165b1561257d575060005b60008115612670576001600160a01b03871660009081526019602052604090205460ff1680156125af57506000601254115b156125ee57612710601254876125c59190613365565b6125cf919061337c565b905080601460008282546125e39190613410565b909155506126529050565b6001600160a01b03881660009081526019602052604090205460ff16801561261857506000601054115b15612652576127106010548761262e9190613365565b612638919061337c565b9050806014600082825461264c9190613410565b90915550505b8015612663576126638830836126d9565b61266d81876133fd565b95505b61267b8888886126d9565b5050505050505050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b03831661273d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610c74565b6001600160a01b03821661279f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610c74565b6001600160a01b038316600090815260208190526040812080548392906127c79084906133fd565b90915550506001600160a01b038216600090815260208190526040812080548392906127f4908490613410565b92505081905550816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4891815260200190565b6002600654036128925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610c74565b6002600655306000908152602081905260409020546014548115806128b5575080155b156128c157505061296e565b60006127106015546128d260025490565b6128dc9190613365565b6128e6919061337c565b905083818111156128f45750805b828111156128ff5750815b8381111561290a5750825b60165481101561291d575050505061296e565b600061292882612976565b9050801561295e57816014600082825461294291906133fd565b9091555047905080156129585761295881612c57565b50612968565b505050505061296e565b50505050505b506001600655565b6040805160028082526060820183526000928392919060208301908036833701905050905030816000815181106129af576129af613423565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a519190613480565b81600181518110612a6457612a64613423565b60200260200101906001600160a01b031690816001600160a01b031681525050612aaf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d85611e30565b60405163791ac94760e01b815247906001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790612b0690879060009087903090429060040161349d565b600060405180830381600087803b158015612b2057600080fd5b505af1925050508015612b31575060015b612c0257612b3d61350f565b806308c379a003612b9f5750612b51613565565b80612b5c5750612ba1565b7fdf56312a616c0a93bb5bc464e3b9e2514160a42cbc69db8a095db22d397b4a198582604051612b8d9291906135ea565b60405180910390a16000935050612c50565b505b3d808015612bcb576040519150601f19603f3d011682016040523d82523d6000602084013e612bd0565b606091505b507fcac61de4cc24e08946cbe1f74266e89411092e0723d52258d0b9f3b6142c1df68582604051612b8d9291906135ea565b6000612c0e82476133fd565b60408051878152602081018390529192507fa808b9f34dc92cf15d3573b357678c78b5aeb0ae55a5d0fb3915b2a3611649c5910160405180910390a160019350505b5050919050565b80600003612c625750565b6000806000806000601d60029054906101000a900460ff1615612c91576106d69350612c8e8486613410565b94505b601d546301000000900460ff1615612cb5576101f49250612cb28386613410565b94505b601d5460ff1615612cd257610f239150612ccf8286613410565b94505b601d54610100900460ff1615612cf35750610f23612cf08186613410565b94505b84600003612d0357505050505050565b60008415612dc657600086612d18878a613365565b612d22919061337c565b9050612d2e8183613410565b600a546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612d80576040519150601f19603f3d011682016040523d82523d6000602084013e612d85565b606091505b5050905080612dc357600a54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8315612e8757600086612dd9868a613365565b612de3919061337c565b9050612def8183613410565b600b546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612e41576040519150601f19603f3d011682016040523d82523d6000602084013e612e46565b606091505b5050905080612e8457600b54604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8215612f4857600086612e9a858a613365565b612ea4919061337c565b9050612eb08183613410565b6008546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612f02576040519150601f19603f3d011682016040523d82523d6000602084013e612f07565b606091505b5050905080612f4557600854604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b811561300957600086612f5b848a613365565b612f65919061337c565b9050612f718183613410565b6009546040519193506000916001600160a01b039091169083908381818185875af1925050503d8060008114612fc3576040519150601f19603f3d011682016040523d82523d6000602084013e612fc8565b606091505b505090508061300657600954604080516001600160a01b0390921682526020820184905260008051602061360c833981519152910160405180910390a15b50505b8681111561306b5760405162461bcd60e51b815260206004820152602960248201527f496e73756666696369656e74204554482062616c616e636520666f72206469736044820152683a3934b13aba34b7b760b91b6064820152608401610c74565b50505050505050565b6001600160a01b038116811461308957600080fd5b50565b60006020828403121561309e57600080fd5b81356130a981613074565b9392505050565b6000815180845260005b818110156130d6576020818501810151868301820152016130ba565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006130a960208301846130b0565b6000806040838503121561311c57600080fd5b823561312781613074565b946020939093013593505050565b60006020828403121561314757600080fd5b5035919050565b60008060006060848603121561316357600080fd5b833561316e81613074565b9250602084013561317e81613074565b929592945050506040919091013590565b801515811461308957600080fd5b600080604083850312156131b057600080fd5b82356131bb81613074565b915060208301356131cb8161318f565b809150509250929050565b6000602082840312156131e857600080fd5b81356130a98161318f565b60008060006040848603121561320857600080fd5b833567ffffffffffffffff81111561321f57600080fd5b8401601f8101861361323057600080fd5b803567ffffffffffffffff81111561324757600080fd5b8660208260051b840101111561325c57600080fd5b6020918201945092508401356132718161318f565b809150509250925092565b6000806040838503121561328f57600080fd5b823561329a81613074565b915060208301356131cb81613074565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000602082840312156132f157600080fd5b5051919050565b60006020828403121561330a57600080fd5b81516130a98161318f565b600181811c9082168061332957607f821691505b60208210810361334957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610e4857610e4861334f565b60008261339957634e487b7160e01b600052601260045260246000fd5b500490565b60208082526016908201527513db9b1e4819195c1b1bde595c8818d85b8818d85b1b60521b604082015260600190565b60208082526015908201527415185e195cc8185b1c9958591e481c995d9bdad959605a1b604082015260600190565b81810381811115610e4857610e4861334f565b80820180821115610e4857610e4861334f565b634e487b7160e01b600052603260045260246000fd5b60208082526027908201527f4e6f742077686974656c697374656420647572696e672077686974656c697374604082015266081c195c9a5bd960ca1b606082015260800190565b60006020828403121561349257600080fd5b81516130a981613074565b600060a0820187835286602084015260a0604084015280865180835260c08501915060208801925060005b818110156134ef5783516001600160a01b03168352602093840193909201916001016134c8565b50506001600160a01b039590951660608401525050608001529392505050565b600060033d11156117455760046000803e5060005160e01c90565b601f8201601f1916810167ffffffffffffffff8111828210171561355e57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d10156135735790565b6040513d600319016004823e80513d602482011167ffffffffffffffff8211171561359d57505090565b808201805167ffffffffffffffff8111156135b9575050505090565b3d84016003190182820160200111156135d3575050505090565b6135e26020828501018561352a565b509392505050565b82815260406020820152600061360360408301846130b0565b94935050505056fe1c43b9761b3fba5321ca8212bfc231945f668ccc0c446f333999eea9ce8fda81a26469706673582212200445f9ff9c42853ab4dc000cc1ca708c9fca37f2326b0427bfbcb23ed5d17d2764736f6c634300081b0033
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.
Add Token to MetaMask (Web3)