Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 6,717 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 25874028 | 1 hr ago | IN | 0 HYPE | 0.00054616 | ||||
| Approve | 25873849 | 1 hr ago | IN | 0 HYPE | 0.00014749 | ||||
| Approve | 25873798 | 1 hr ago | IN | 0 HYPE | 0.00050807 | ||||
| Approve | 25873773 | 1 hr ago | IN | 0 HYPE | 0.00067738 | ||||
| Approve | 25873191 | 1 hr ago | IN | 0 HYPE | 0.00030869 | ||||
| Approve | 25873168 | 1 hr ago | IN | 0 HYPE | 0.00041578 | ||||
| Approve | 25837824 | 11 hrs ago | IN | 0 HYPE | 0.0002647 | ||||
| Approve | 25823235 | 15 hrs ago | IN | 0 HYPE | 0.00022368 | ||||
| Approve | 25807178 | 19 hrs ago | IN | 0 HYPE | 0.00018863 | ||||
| Approve | 25807146 | 19 hrs ago | IN | 0 HYPE | 0.00020538 | ||||
| Transfer | 25771306 | 29 hrs ago | IN | 0 HYPE | 0.00006012 | ||||
| Approve | 25768852 | 30 hrs ago | IN | 0 HYPE | 0.00020951 | ||||
| Approve | 25768829 | 30 hrs ago | IN | 0 HYPE | 0.00017832 | ||||
| Approve | 25766187 | 30 hrs ago | IN | 0 HYPE | 0.0000467 | ||||
| Approve | 25765914 | 30 hrs ago | IN | 0 HYPE | 0.0000465 | ||||
| Approve | 25765792 | 31 hrs ago | IN | 0 HYPE | 0.0003577 | ||||
| Approve | 25743831 | 37 hrs ago | IN | 0 HYPE | 0.00001035 | ||||
| Approve | 25731758 | 40 hrs ago | IN | 0 HYPE | 0.00049818 | ||||
| Approve | 25689275 | 2 days ago | IN | 0 HYPE | 0.00008804 | ||||
| Approve | 25648135 | 2 days ago | IN | 0 HYPE | 0.00008088 | ||||
| Approve | 25639176 | 2 days ago | IN | 0 HYPE | 0.00016224 | ||||
| Approve | 25602981 | 3 days ago | IN | 0 HYPE | 0.00002938 | ||||
| Approve | 25600964 | 3 days ago | IN | 0 HYPE | 0.00000626 | ||||
| Approve | 25600964 | 3 days ago | IN | 0 HYPE | 0.00000304 | ||||
| Approve | 25600913 | 3 days ago | IN | 0 HYPE | 0.00000262 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Block | From | To | |||
|---|---|---|---|---|---|---|
| 25874157 | 1 hr ago | 1.9455272 HYPE | ||||
| 25874157 | 1 hr ago | 1.9455272 HYPE | ||||
| 25873996 | 1 hr ago | 1.95790397 HYPE | ||||
| 25873996 | 1 hr ago | 1.95790397 HYPE | ||||
| 25873898 | 1 hr ago | 1.98222266 HYPE | ||||
| 25873898 | 1 hr ago | 1.98222266 HYPE | ||||
| 25837831 | 11 hrs ago | 2.13247165 HYPE | ||||
| 25837831 | 11 hrs ago | 2.13247165 HYPE | ||||
| 25823304 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25823304 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25823274 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25823274 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25823249 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25823249 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25822472 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25822472 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25822422 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25822422 | 15 hrs ago | 2.17862115 HYPE | ||||
| 25801092 | 21 hrs ago | 1.96621477 HYPE | ||||
| 25801092 | 21 hrs ago | 1.96621477 HYPE | ||||
| 25768899 | 30 hrs ago | 2.0346198 HYPE | ||||
| 25768899 | 30 hrs ago | 2.0346198 HYPE | ||||
| 25766333 | 30 hrs ago | 2.0346198 HYPE | ||||
| 25766333 | 30 hrs ago | 2.0346198 HYPE | ||||
| 25766212 | 30 hrs ago | 2.0346198 HYPE |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
HypurrStrategy
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
interface IHyperSwapRouter {
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
address referrer,
uint deadline
) external;
}
contract HypurrStrategy is ERC20, Ownable {
// Fees en basis points (100 = 1%)
uint16 public buyFee = 1000; // 10%
uint16 public sellFee = 1000; // 10%
uint16 constant MAX_FEE = 1000; // 10% max
uint16 constant FEE_DENOMINATOR = 10000;
address public marketingWallet;
IHyperSwapRouter public router;
address public pair;
bool private inSwap;
bool public swapEnabled = true;
bool public tradingEnabled = false;
uint256 public swapThreshold;
mapping(address => bool) public isExempt;
mapping(address => bool) public isPair;
event FeesUpdated(uint16 buyFee, uint16 sellFee);
event MarketingWalletUpdated(address wallet);
event SwapBackExecuted(uint256 tokensSwapped, uint256 ethReceived);
event TradingEnabled();
modifier lockSwap() {
inSwap = true;
_;
inSwap = false;
}
constructor(
string memory name_,
string memory symbol_,
uint256 supply_,
address marketing_,
address router_
) ERC20(name_, symbol_) Ownable(msg.sender) {
require(marketing_ != address(0), "Invalid marketing wallet");
marketingWallet = marketing_;
router = IHyperSwapRouter(router_);
// Mint total supply to deployer
_mint(msg.sender, supply_);
// Set swap threshold (0.25% of supply)
swapThreshold = supply_ / 400;
// Exemptions
isExempt[msg.sender] = true;
isExempt[address(this)] = true;
isExempt[marketing_] = true;
}
function setPair(address pair_) external onlyOwner {
require(pair_ != address(0), "Invalid pair");
pair = pair_;
isPair[pair_] = true;
}
function setFees(uint16 buy_, uint16 sell_) external onlyOwner {
require(buy_ <= MAX_FEE && sell_ <= MAX_FEE, "Fee too high");
buyFee = buy_;
sellFee = sell_;
emit FeesUpdated(buy_, sell_);
}
function setMarketingWallet(address wallet_) external onlyOwner {
require(wallet_ != address(0), "Invalid wallet");
marketingWallet = wallet_;
isExempt[wallet_] = true;
emit MarketingWalletUpdated(wallet_);
}
function setExempt(address account_, bool exempt_) external onlyOwner {
isExempt[account_] = exempt_;
}
function setSwapSettings(bool enabled_, uint256 threshold_) external onlyOwner {
swapEnabled = enabled_;
swapThreshold = threshold_;
}
function enableTrading() external onlyOwner {
require(!tradingEnabled, "Trading already enabled");
require(pair != address(0), "Pair not set");
tradingEnabled = true;
emit TradingEnabled();
}
function _update(address from, address to, uint256 amount) internal override {
// Check if trading is enabled (owner always exempt)
if (!tradingEnabled && from != owner() && to != owner()) {
revert("Trading not enabled");
}
// Swap back logic (only on sells)
if (
swapEnabled &&
!inSwap &&
isPair[to] &&
balanceOf(address(this)) >= swapThreshold
) {
_swapBack();
}
// Calculate fees
uint256 fees = 0;
if (!isExempt[from] && !isExempt[to]) {
// Buy
if (isPair[from] && buyFee > 0) {
fees = (amount * buyFee) / FEE_DENOMINATOR;
}
// Sell
else if (isPair[to] && sellFee > 0) {
fees = (amount * sellFee) / FEE_DENOMINATOR;
}
}
if (fees > 0) {
super._update(from, address(this), fees);
amount -= fees;
}
super._update(from, to, amount);
}
function _swapBack() private lockSwap {
uint256 contractBalance = balanceOf(address(this));
if (contractBalance == 0) return;
// Limit swap amount to threshold * 2 for gas efficiency
uint256 amountToSwap = contractBalance > swapThreshold * 2
? swapThreshold * 2
: contractBalance;
_approve(address(this), address(router), amountToSwap);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
uint256 balanceBefore = address(this).balance;
try router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
address(0), // referrer = address(0)
block.timestamp
) {
uint256 ethReceived = address(this).balance - balanceBefore;
if (ethReceived > 0) {
(bool success,) = marketingWallet.call{value: ethReceived}("");
require(success, "ETH transfer failed");
emit SwapBackExecuted(amountToSwap, ethReceived);
}
} catch {}
}
function manualSwap() external onlyOwner {
_swapBack();
}
function withdrawTokens(uint256 amount) external onlyOwner {
require(amount > 0, "Amount must be > 0");
uint256 contractBalance = balanceOf(address(this));
require(amount <= contractBalance, "Insufficient balance");
_transfer(address(this), owner(), amount);
}
function rescueETH() external onlyOwner {
(bool success,) = owner().call{value: address(this).balance}("");
require(success, "ETH rescue failed");
}
function rescueTokens(address token_) external onlyOwner {
require(token_ != address(this), "Cannot rescue own token");
uint256 balance = IERC20(token_).balanceOf(address(this));
IERC20(token_).transfer(owner(), balance);
}
receive() external payable {}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* The initial owner is set to the address provided by the deployer. This can
* later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/ERC20.sol)
pragma solidity ^0.8.20;
import {IERC20} from "./IERC20.sol";
import {IERC20Metadata} from "./extensions/IERC20Metadata.sol";
import {Context} from "../../utils/Context.sol";
import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol";
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
*
* TIP: For a detailed writeup see our guide
* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* The default value of {decimals} is 18. To change this, you should override
* this function so it returns a different value.
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC-20
* applications.
*/
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
mapping(address account => uint256) private _balances;
mapping(address account => mapping(address spender => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* Both values are immutable: they can only be set once during construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the default value returned by this function, unless
* it's overridden.
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual returns (uint8) {
return 18;
}
/// @inheritdoc IERC20
function totalSupply() public view virtual returns (uint256) {
return _totalSupply;
}
/// @inheritdoc IERC20
function balanceOf(address account) public view virtual returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `value`.
*/
function transfer(address to, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_transfer(owner, to, value);
return true;
}
/// @inheritdoc IERC20
function allowance(address owner, address spender) public view virtual returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `value` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 value) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, value);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Skips emitting an {Approval} event indicating an allowance update. This is not
* required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `value`.
* - the caller must have allowance for ``from``'s tokens of at least
* `value`.
*/
function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, value);
_transfer(from, to, value);
return true;
}
/**
* @dev Moves a `value` amount of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _transfer(address from, address to, uint256 value) internal {
if (from == address(0)) {
revert ERC20InvalidSender(address(0));
}
if (to == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(from, to, value);
}
/**
* @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
* (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
* this function.
*
* Emits a {Transfer} event.
*/
function _update(address from, address to, uint256 value) internal virtual {
if (from == address(0)) {
// Overflow check required: The rest of the code assumes that totalSupply never overflows
_totalSupply += value;
} else {
uint256 fromBalance = _balances[from];
if (fromBalance < value) {
revert ERC20InsufficientBalance(from, fromBalance, value);
}
unchecked {
// Overflow not possible: value <= fromBalance <= totalSupply.
_balances[from] = fromBalance - value;
}
}
if (to == address(0)) {
unchecked {
// Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
_totalSupply -= value;
}
} else {
unchecked {
// Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
_balances[to] += value;
}
}
emit Transfer(from, to, value);
}
/**
* @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
* Relies on the `_update` mechanism
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead.
*/
function _mint(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidReceiver(address(0));
}
_update(address(0), account, value);
}
/**
* @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
* Relies on the `_update` mechanism.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* NOTE: This function is not virtual, {_update} should be overridden instead
*/
function _burn(address account, uint256 value) internal {
if (account == address(0)) {
revert ERC20InvalidSender(address(0));
}
_update(account, address(0), value);
}
/**
* @dev Sets `value` as the allowance of `spender` over the `owner`'s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*
* Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
*/
function _approve(address owner, address spender, uint256 value) internal {
_approve(owner, spender, value, true);
}
/**
* @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
*
* By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
* `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
* `Approval` event during `transferFrom` operations.
*
* Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
* true using the following override:
*
* ```solidity
* function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
* super._approve(owner, spender, value, true);
* }
* ```
*
* Requirements are the same as {_approve}.
*/
function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
if (owner == address(0)) {
revert ERC20InvalidApprover(address(0));
}
if (spender == address(0)) {
revert ERC20InvalidSpender(address(0));
}
_allowances[owner][spender] = value;
if (emitEvent) {
emit Approval(owner, spender, value);
}
}
/**
* @dev Updates `owner`'s allowance for `spender` based on spent `value`.
*
* Does not update the allowance value in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Does not emit an {Approval} event.
*/
function _spendAllowance(address owner, address spender, uint256 value) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance < type(uint256).max) {
if (currentAllowance < value) {
revert ERC20InsufficientAllowance(spender, currentAllowance, value);
}
unchecked {
_approve(owner, spender, currentAllowance - value, false);
}
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (interfaces/draft-IERC6093.sol)
pragma solidity >=0.8.4;
/**
* @dev Standard ERC-20 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
*/
interface IERC20Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC20InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC20InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
* @param spender Address that may be allowed to operate on tokens without being their owner.
* @param allowance Amount of tokens a `spender` is allowed to operate with.
* @param needed Minimum amount required to perform a transfer.
*/
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC20InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `spender` to be approved. Used in approvals.
* @param spender Address that may be allowed to operate on tokens without being their owner.
*/
error ERC20InvalidSpender(address spender);
}
/**
* @dev Standard ERC-721 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
*/
interface IERC721Errors {
/**
* @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
* Used in balance queries.
* @param owner Address of the current owner of a token.
*/
error ERC721InvalidOwner(address owner);
/**
* @dev Indicates a `tokenId` whose `owner` is the zero address.
* @param tokenId Identifier number of a token.
*/
error ERC721NonexistentToken(uint256 tokenId);
/**
* @dev Indicates an error related to the ownership over a particular token. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param tokenId Identifier number of a token.
* @param owner Address of the current owner of a token.
*/
error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC721InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC721InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param tokenId Identifier number of a token.
*/
error ERC721InsufficientApproval(address operator, uint256 tokenId);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC721InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC721InvalidOperator(address operator);
}
/**
* @dev Standard ERC-1155 Errors
* Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
*/
interface IERC1155Errors {
/**
* @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
* @param balance Current balance for the interacting account.
* @param needed Minimum amount required to perform a transfer.
* @param tokenId Identifier number of a token.
*/
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);
/**
* @dev Indicates a failure with the token `sender`. Used in transfers.
* @param sender Address whose tokens are being transferred.
*/
error ERC1155InvalidSender(address sender);
/**
* @dev Indicates a failure with the token `receiver`. Used in transfers.
* @param receiver Address to which tokens are being transferred.
*/
error ERC1155InvalidReceiver(address receiver);
/**
* @dev Indicates a failure with the `operator`’s approval. Used in transfers.
* @param operator Address that may be allowed to operate on tokens without being their owner.
* @param owner Address of the current owner of a token.
*/
error ERC1155MissingApprovalForAll(address operator, address owner);
/**
* @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
* @param approver Address initiating an approval operation.
*/
error ERC1155InvalidApprover(address approver);
/**
* @dev Indicates a failure with the `operator` to be approved. Used in approvals.
* @param operator Address that may be allowed to operate on tokens without being their owner.
*/
error ERC1155InvalidOperator(address operator);
/**
* @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
* Used in batch transfers.
* @param idsLength Length of the array of token identifiers
* @param valuesLength Length of the array of token amounts
*/
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/extensions/IERC20Metadata.sol)
pragma solidity >=0.6.2;
import {IERC20} from "../IERC20.sol";
/**
* @dev Interface for the optional metadata functions from the ERC-20 standard.
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.4.0) (token/ERC20/IERC20.sol)
pragma solidity >=0.4.16;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 value) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets a `value` amount of tokens as the allowance of `spender` over the
* caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address from, address to, uint256 value) external returns (bool);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": [],
"evmVersion": "paris"
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"supply_","type":"uint256"},{"internalType":"address","name":"marketing_","type":"address"},{"internalType":"address","name":"router_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","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":"uint16","name":"buyFee","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"sellFee","type":"uint16"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"wallet","type":"address"}],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"SwapBackExecuted","type":"event"},{"anonymous":false,"inputs":[],"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"},{"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":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token_","type":"address"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IHyperSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account_","type":"address"},{"internalType":"bool","name":"exempt_","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"buy_","type":"uint16"},{"internalType":"uint16","name":"sell_","type":"uint16"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet_","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair_","type":"address"}],"name":"setPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled_","type":"bool"},{"internalType":"uint256","name":"threshold_","type":"uint256"}],"name":"setSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405260058054627d007d60a31b63ffffffff60a01b199091161790556008805461ffff60a81b1916600160a81b1790553480156200003f57600080fd5b506040516200279f3803806200279f833981016040819052620000629162000a89565b338585600362000073838262000bb0565b50600462000082828262000bb0565b5050506001600160a01b038116620000b557604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000c081620001b6565b506001600160a01b038216620001195760405162461bcd60e51b815260206004820152601860248201527f496e76616c6964206d61726b6574696e672077616c6c657400000000000000006044820152606401620000ac565b600680546001600160a01b038085166001600160a01b031992831617909255600780549284169290911691909117905562000155338462000208565b620001636101908462000c92565b60095550336000908152600a60205260408082208054600160ff19918216811790925530845282842080548216831790556001600160a01b03949094168352912080549092161790555062000db7915050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620002345760405163ec442f0560e01b815260006004820152602401620000ac565b620002426000838362000246565b5050565b600854600160b01b900460ff161580156200026f57506005546001600160a01b03848116911614155b80156200028a57506005546001600160a01b03838116911614155b15620002d95760405162461bcd60e51b815260206004820152601360248201527f54726164696e67206e6f7420656e61626c6564000000000000000000000000006044820152606401620000ac565b600854600160a81b900460ff168015620002fd5750600854600160a01b900460ff16155b80156200032257506001600160a01b0382166000908152600b602052604090205460ff165b80156200034057506009543060009081526020819052604090205410155b15620003505762000350620004a4565b6001600160a01b0383166000908152600a602052604081205460ff161580156200039357506001600160a01b0383166000908152600a602052604090205460ff16155b156200046e576001600160a01b0384166000908152600b602052604090205460ff168015620003ce5750600554600160a01b900461ffff1615155b15620004065760055461271090620003f290600160a01b900461ffff168462000cb5565b620003fe919062000c92565b90506200046e565b6001600160a01b0383166000908152600b602052604090205460ff1680156200043b5750600554600160b01b900461ffff1615155b156200046e57600554612710906200045f90600160b01b900461ffff168462000cb5565b6200046b919062000c92565b90505b801562000491576200048284308362000785565b6200048e818362000cd5565b91505b6200049e84848462000785565b50505050565b6008805460ff60a01b1916600160a01b17905530600090815260208190526040812054905080600003620004d9575062000776565b60006009546002620004ec919062000cb5565b8211620004fa57816200050a565b6009546200050a90600262000cb5565b600754909150620005279030906001600160a01b031683620008b8565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106200055f576200055f62000ceb565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015620005b9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005df919062000d01565b81600181518110620005f557620005f562000ceb565b6001600160a01b039283166020918202929092010152600754604051632955261160e11b8152479291909116906352aa4c229062000643908690600090879030908390429060040162000d26565b600060405180830381600087803b1580156200065e57600080fd5b505af192505050801562000670575060015b156200077157600062000684824762000cd5565b905080156200076f576006546040516000916001600160a01b03169083908381818185875af1925050503d8060008114620006dc576040519150601f19603f3d011682016040523d82523d6000602084013e620006e1565b606091505b5050905080620007345760405162461bcd60e51b815260206004820152601360248201527f455448207472616e73666572206661696c6564000000000000000000000000006044820152606401620000ac565b60408051868152602081018490527fd7f052835057cec2a1decd4aca816a27eeacf3dea0afb8d6d017f545e4c9ebb3910160405180910390a1505b505b505050505b6008805460ff60a01b19169055565b6001600160a01b038316620007b4578060026000828254620007a8919062000da1565b90915550620008289050565b6001600160a01b03831660009081526020819052604090205481811015620008095760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000ac565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620008465760028054829003905562000865565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620008ab91815260200190565b60405180910390a3505050565b620008c78383836001620008cc565b505050565b6001600160a01b038416620008f85760405163e602df0560e01b815260006004820152602401620000ac565b6001600160a01b0383166200092457604051634a1406b160e11b815260006004820152602401620000ac565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156200049e57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516200099991815260200190565b60405180910390a350505050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620009cf57600080fd5b81516001600160401b0380821115620009ec57620009ec620009a7565b604051601f8301601f19908116603f0116810190828211818310171562000a175762000a17620009a7565b8160405283815260209250868385880101111562000a3457600080fd5b600091505b8382101562000a58578582018301518183018401529082019062000a39565b600093810190920192909252949350505050565b80516001600160a01b038116811462000a8457600080fd5b919050565b600080600080600060a0868803121562000aa257600080fd5b85516001600160401b038082111562000aba57600080fd5b62000ac889838a01620009bd565b9650602088015191508082111562000adf57600080fd5b5062000aee88828901620009bd565b9450506040860151925062000b066060870162000a6c565b915062000b166080870162000a6c565b90509295509295909350565b600181811c9082168062000b3757607f821691505b60208210810362000b5857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008c757600081815260208120601f850160051c8101602086101562000b875750805b601f850160051c820191505b8181101562000ba85782815560010162000b93565b505050505050565b81516001600160401b0381111562000bcc5762000bcc620009a7565b62000be48162000bdd845462000b22565b8462000b5e565b602080601f83116001811462000c1c576000841562000c035750858301515b600019600386901b1c1916600185901b17855562000ba8565b600085815260208120601f198616915b8281101562000c4d5788860151825594840194600190910190840162000c2c565b508582101562000c6c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b60008262000cb057634e487b7160e01b600052601260045260246000fd5b500490565b808202811582820484141762000ccf5762000ccf62000c7c565b92915050565b8181038181111562000ccf5762000ccf62000c7c565b634e487b7160e01b600052603260045260246000fd5b60006020828403121562000d1457600080fd5b62000d1f8262000a6c565b9392505050565b600060c082018883526020888185015260c0604085015281885180845260e086019150828a01935060005b8181101562000d785784516001600160a01b03168352938301939183019160010162000d51565b50506001600160a01b039788166060860152959096166080840152505060a00152949350505050565b8082018082111562000ccf5762000ccf62000c7c565b6119d88062000dc76000396000f3fe6080604052600436106101e65760003560e01c8063715018a611610102578063a8aa1b3111610095578063dd62ed3e11610064578063dd62ed3e1461059e578063e5e31b13146105e4578063f2fde38b14610614578063f887ea401461063457600080fd5b8063a8aa1b311461050e578063a9059cbb1461052e578063ad5dff731461054e578063d0e103261461057e57600080fd5b80638da5cb5b116100d15780638da5cb5b1461049b57806395d89b41146104b95780639ef833d4146104ce5780639fde54f5146104ee57600080fd5b8063715018a61461041957806375f0a8741461042e5780638187f516146104665780638a8c523c1461048657600080fd5b8063313ce5671161017a57806351bc3c851161014957806351bc3c851461038d5780635d098b38146103a25780636ddd1713146103c257806370a08231146103e357600080fd5b8063313ce5671461030e578063315a095d1461032a578063470624021461034a5780634ada218b1461036c57600080fd5b806318160ddd116101b657806318160ddd1461028f57806320800a00146102a457806323b872dd146102b95780632b14ca56146102d957600080fd5b8062ae3bf8146101f25780630445b6671461021457806306fdde031461023d578063095ea7b31461025f57600080fd5b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021261020d36600461163c565b610654565b005b34801561022057600080fd5b5061022a60095481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b506102526107bd565b6040516102349190611660565b34801561026b57600080fd5b5061027f61027a3660046116ae565b61084f565b6040519015158152602001610234565b34801561029b57600080fd5b5060025461022a565b3480156102b057600080fd5b50610212610869565b3480156102c557600080fd5b5061027f6102d43660046116da565b61091c565b3480156102e557600080fd5b506005546102fb90600160b01b900461ffff1681565b60405161ffff9091168152602001610234565b34801561031a57600080fd5b5060405160128152602001610234565b34801561033657600080fd5b5061021261034536600461171b565b610940565b34801561035657600080fd5b506005546102fb90600160a01b900461ffff1681565b34801561037857600080fd5b5060085461027f90600160b01b900460ff1681565b34801561039957600080fd5b50610212610a04565b3480156103ae57600080fd5b506102126103bd36600461163c565b610a16565b3480156103ce57600080fd5b5060085461027f90600160a81b900460ff1681565b3480156103ef57600080fd5b5061022a6103fe36600461163c565b6001600160a01b031660009081526020819052604090205490565b34801561042557600080fd5b50610212610ad3565b34801561043a57600080fd5b5060065461044e906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b34801561047257600080fd5b5061021261048136600461163c565b610ae5565b34801561049257600080fd5b50610212610b6c565b3480156104a757600080fd5b506005546001600160a01b031661044e565b3480156104c557600080fd5b50610252610c53565b3480156104da57600080fd5b506102126104e936600461174b565b610c62565b3480156104fa57600080fd5b5061021261050936600461178c565b610d36565b34801561051a57600080fd5b5060085461044e906001600160a01b031681565b34801561053a57600080fd5b5061027f6105493660046116ae565b610d69565b34801561055a57600080fd5b5061027f61056936600461163c565b600a6020526000908152604090205460ff1681565b34801561058a57600080fd5b506102126105993660046117c5565b610d77565b3480156105aa57600080fd5b5061022a6105b93660046117e3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105f057600080fd5b5061027f6105ff36600461163c565b600b6020526000908152604090205460ff1681565b34801561062057600080fd5b5061021261062f36600461163c565b610da1565b34801561064057600080fd5b5060075461044e906001600160a01b031681565b61065c610ddc565b306001600160a01b038216036106b95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420726573637565206f776e20746f6b656e00000000000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190611811565b9050816001600160a01b031663a9059cbb6107476005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b8919061182a565b505050565b6060600380546107cc90611847565b80601f01602080910402602001604051908101604052809291908181526020018280546107f890611847565b80156108455780601f1061081a57610100808354040283529160200191610845565b820191906000526020600020905b81548152906001019060200180831161082857829003601f168201915b5050505050905090565b60003361085d818585610e09565b60019150505b92915050565b610871610ddc565b60006108856005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d80600081146108cf576040519150601f19603f3d011682016040523d82523d6000602084013e6108d4565b606091505b50509050806109195760405162461bcd60e51b8152602060048201526011602482015270115512081c995cd8dd594819985a5b1959607a1b60448201526064016106b0565b50565b60003361092a858285610e16565b610935858585610e95565b506001949350505050565b610948610ddc565b6000811161098d5760405162461bcd60e51b81526020600482015260126024820152710416d6f756e74206d757374206265203e20360741b60448201526064016106b0565b30600090815260208190526040902054808211156109e45760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016106b0565b610a00306109fa6005546001600160a01b031690565b84610e95565b5050565b610a0c610ddc565b610a14610ef4565b565b610a1e610ddc565b6001600160a01b038116610a655760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081dd85b1b195d60921b60448201526064016106b0565b600680546001600160a01b0319166001600160a01b0383169081179091556000818152600a6020908152604091829020805460ff1916600117905590519182527fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e7910160405180910390a150565b610adb610ddc565b610a1460006111ac565b610aed610ddc565b6001600160a01b038116610b325760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103830b4b960a11b60448201526064016106b0565b600880546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b610b74610ddc565b600854600160b01b900460ff1615610bce5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016106b0565b6008546001600160a01b0316610c155760405162461bcd60e51b815260206004820152600c60248201526b14185a5c881b9bdd081cd95d60a21b60448201526064016106b0565b6008805460ff60b01b1916600160b01b1790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a1565b6060600480546107cc90611847565b610c6a610ddc565b6103e861ffff831611801590610c8657506103e861ffff821611155b610cc15760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016106b0565b6005805463ffffffff60a01b1916600160a01b61ffff85811691820261ffff60b01b191692909217600160b01b928516928302179092556040805192835260208301919091527f2ac80c14c28700f7b5e36f947d572149fe2e3947bac32c3a8c098f3e03722c11910160405180910390a15050565b610d3e610ddc565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60003361085d818585610e95565b610d7f610ddc565b60088054921515600160a81b0260ff60a81b1990931692909217909155600955565b610da9610ddc565b6001600160a01b038116610dd357604051631e4fbdf760e01b8152600060048201526024016106b0565b610919816111ac565b6005546001600160a01b03163314610a145760405163118cdaa760e01b81523360048201526024016106b0565b6107b883838360016111fe565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811015610e8f5781811015610e8057604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016106b0565b610e8f848484840360006111fe565b50505050565b6001600160a01b038316610ebf57604051634b637e8f60e11b8152600060048201526024016106b0565b6001600160a01b038216610ee95760405163ec442f0560e01b8152600060048201526024016106b0565b6107b88383836112d3565b6008805460ff60a01b1916600160a01b17905530600090815260208190526040812054905080600003610f27575061119d565b60006009546002610f389190611897565b8211610f445781610f52565b600954610f52906002611897565b600754909150610f6d9030906001600160a01b031683610e09565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610fa257610fa26118ae565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101f91906118c4565b81600181518110611032576110326118ae565b6001600160a01b039283166020918202929092010152600754604051632955261160e11b8152479291909116906352aa4c229061107e90869060009087903090839042906004016118e1565b600060405180830381600087803b15801561109857600080fd5b505af19250505080156110a9575060015b156111985760006110ba824761195a565b90508015611196576006546040516000916001600160a01b03169083908381818185875af1925050503d806000811461110f576040519150601f19603f3d011682016040523d82523d6000602084013e611114565b606091505b505090508061115b5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016106b0565b60408051868152602081018490527fd7f052835057cec2a1decd4aca816a27eeacf3dea0afb8d6d017f545e4c9ebb3910160405180910390a1505b505b505050505b6008805460ff60a01b19169055565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166112285760405163e602df0560e01b8152600060048201526024016106b0565b6001600160a01b03831661125257604051634a1406b160e11b8152600060048201526024016106b0565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610e8f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112c591815260200190565b60405180910390a350505050565b600854600160b01b900460ff161580156112fb57506005546001600160a01b03848116911614155b801561131557506005546001600160a01b03838116911614155b156113585760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016106b0565b600854600160a81b900460ff16801561137b5750600854600160a01b900460ff16155b801561139f57506001600160a01b0382166000908152600b602052604090205460ff165b80156113bc57506009543060009081526020819052604090205410155b156113c9576113c9610ef4565b6001600160a01b0383166000908152600a602052604081205460ff1615801561140b57506001600160a01b0383166000908152600a602052604090205460ff16155b156114d8576001600160a01b0384166000908152600b602052604090205460ff1680156114445750600554600160a01b900461ffff1615155b15611476576005546127109061146590600160a01b900461ffff1684611897565b61146f919061196d565b90506114d8565b6001600160a01b0383166000908152600b602052604090205460ff1680156114aa5750600554600160b01b900461ffff1615155b156114d857600554612710906114cb90600160b01b900461ffff1684611897565b6114d5919061196d565b90505b80156114f6576114e98430836114fd565b6114f3818361195a565b91505b610e8f8484845b6001600160a01b03831661152857806002600082825461151d919061198f565b9091555061159a9050565b6001600160a01b0383166000908152602081905260409020548181101561157b5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106b0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166115b6576002805482900390556115d5565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161161a91815260200190565b60405180910390a3505050565b6001600160a01b038116811461091957600080fd5b60006020828403121561164e57600080fd5b813561165981611627565b9392505050565b600060208083528351808285015260005b8181101561168d57858101830151858201604001528201611671565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156116c157600080fd5b82356116cc81611627565b946020939093013593505050565b6000806000606084860312156116ef57600080fd5b83356116fa81611627565b9250602084013561170a81611627565b929592945050506040919091013590565b60006020828403121561172d57600080fd5b5035919050565b803561ffff8116811461174657600080fd5b919050565b6000806040838503121561175e57600080fd5b61176783611734565b915061177560208401611734565b90509250929050565b801515811461091957600080fd5b6000806040838503121561179f57600080fd5b82356117aa81611627565b915060208301356117ba8161177e565b809150509250929050565b600080604083850312156117d857600080fd5b82356116cc8161177e565b600080604083850312156117f657600080fd5b823561180181611627565b915060208301356117ba81611627565b60006020828403121561182357600080fd5b5051919050565b60006020828403121561183c57600080fd5b81516116598161177e565b600181811c9082168061185b57607f821691505b60208210810361187b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761086357610863611881565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118d657600080fd5b815161165981611627565b600060c082018883526020888185015260c0604085015281885180845260e086019150828a01935060005b818110156119315784516001600160a01b03168352938301939183019160010161190c565b50506001600160a01b039788166060860152959096166080840152505060a00152949350505050565b8181038181111561086357610863611881565b60008261198a57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108635761086361188156fea26469706673582212201b1fe539db3605c90fffebe7bd54a71a6a6d76c69b32e3752e99f8f627faf2c564736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000007cf3d26d387bb4f30146319d82716335d44f9cc9000000000000000000000000b4a9c4e6ea8e2191d2fa5b380452a634fb21240a000000000000000000000000000000000000000000000000000000000000000e487970757272537472617465677900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064859505354520000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x6080604052600436106101e65760003560e01c8063715018a611610102578063a8aa1b3111610095578063dd62ed3e11610064578063dd62ed3e1461059e578063e5e31b13146105e4578063f2fde38b14610614578063f887ea401461063457600080fd5b8063a8aa1b311461050e578063a9059cbb1461052e578063ad5dff731461054e578063d0e103261461057e57600080fd5b80638da5cb5b116100d15780638da5cb5b1461049b57806395d89b41146104b95780639ef833d4146104ce5780639fde54f5146104ee57600080fd5b8063715018a61461041957806375f0a8741461042e5780638187f516146104665780638a8c523c1461048657600080fd5b8063313ce5671161017a57806351bc3c851161014957806351bc3c851461038d5780635d098b38146103a25780636ddd1713146103c257806370a08231146103e357600080fd5b8063313ce5671461030e578063315a095d1461032a578063470624021461034a5780634ada218b1461036c57600080fd5b806318160ddd116101b657806318160ddd1461028f57806320800a00146102a457806323b872dd146102b95780632b14ca56146102d957600080fd5b8062ae3bf8146101f25780630445b6671461021457806306fdde031461023d578063095ea7b31461025f57600080fd5b366101ed57005b600080fd5b3480156101fe57600080fd5b5061021261020d36600461163c565b610654565b005b34801561022057600080fd5b5061022a60095481565b6040519081526020015b60405180910390f35b34801561024957600080fd5b506102526107bd565b6040516102349190611660565b34801561026b57600080fd5b5061027f61027a3660046116ae565b61084f565b6040519015158152602001610234565b34801561029b57600080fd5b5060025461022a565b3480156102b057600080fd5b50610212610869565b3480156102c557600080fd5b5061027f6102d43660046116da565b61091c565b3480156102e557600080fd5b506005546102fb90600160b01b900461ffff1681565b60405161ffff9091168152602001610234565b34801561031a57600080fd5b5060405160128152602001610234565b34801561033657600080fd5b5061021261034536600461171b565b610940565b34801561035657600080fd5b506005546102fb90600160a01b900461ffff1681565b34801561037857600080fd5b5060085461027f90600160b01b900460ff1681565b34801561039957600080fd5b50610212610a04565b3480156103ae57600080fd5b506102126103bd36600461163c565b610a16565b3480156103ce57600080fd5b5060085461027f90600160a81b900460ff1681565b3480156103ef57600080fd5b5061022a6103fe36600461163c565b6001600160a01b031660009081526020819052604090205490565b34801561042557600080fd5b50610212610ad3565b34801561043a57600080fd5b5060065461044e906001600160a01b031681565b6040516001600160a01b039091168152602001610234565b34801561047257600080fd5b5061021261048136600461163c565b610ae5565b34801561049257600080fd5b50610212610b6c565b3480156104a757600080fd5b506005546001600160a01b031661044e565b3480156104c557600080fd5b50610252610c53565b3480156104da57600080fd5b506102126104e936600461174b565b610c62565b3480156104fa57600080fd5b5061021261050936600461178c565b610d36565b34801561051a57600080fd5b5060085461044e906001600160a01b031681565b34801561053a57600080fd5b5061027f6105493660046116ae565b610d69565b34801561055a57600080fd5b5061027f61056936600461163c565b600a6020526000908152604090205460ff1681565b34801561058a57600080fd5b506102126105993660046117c5565b610d77565b3480156105aa57600080fd5b5061022a6105b93660046117e3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156105f057600080fd5b5061027f6105ff36600461163c565b600b6020526000908152604090205460ff1681565b34801561062057600080fd5b5061021261062f36600461163c565b610da1565b34801561064057600080fd5b5060075461044e906001600160a01b031681565b61065c610ddc565b306001600160a01b038216036106b95760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420726573637565206f776e20746f6b656e00000000000000000060448201526064015b60405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610700573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107249190611811565b9050816001600160a01b031663a9059cbb6107476005546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b8919061182a565b505050565b6060600380546107cc90611847565b80601f01602080910402602001604051908101604052809291908181526020018280546107f890611847565b80156108455780601f1061081a57610100808354040283529160200191610845565b820191906000526020600020905b81548152906001019060200180831161082857829003601f168201915b5050505050905090565b60003361085d818585610e09565b60019150505b92915050565b610871610ddc565b60006108856005546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d80600081146108cf576040519150601f19603f3d011682016040523d82523d6000602084013e6108d4565b606091505b50509050806109195760405162461bcd60e51b8152602060048201526011602482015270115512081c995cd8dd594819985a5b1959607a1b60448201526064016106b0565b50565b60003361092a858285610e16565b610935858585610e95565b506001949350505050565b610948610ddc565b6000811161098d5760405162461bcd60e51b81526020600482015260126024820152710416d6f756e74206d757374206265203e20360741b60448201526064016106b0565b30600090815260208190526040902054808211156109e45760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e742062616c616e636560601b60448201526064016106b0565b610a00306109fa6005546001600160a01b031690565b84610e95565b5050565b610a0c610ddc565b610a14610ef4565b565b610a1e610ddc565b6001600160a01b038116610a655760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a59081dd85b1b195d60921b60448201526064016106b0565b600680546001600160a01b0319166001600160a01b0383169081179091556000818152600a6020908152604091829020805460ff1916600117905590519182527fbf86feedee5b30c30a8243bd21deebb704d141478d39b1be04fe5ee739f214e7910160405180910390a150565b610adb610ddc565b610a1460006111ac565b610aed610ddc565b6001600160a01b038116610b325760405162461bcd60e51b815260206004820152600c60248201526b24b73b30b634b2103830b4b960a11b60448201526064016106b0565b600880546001600160a01b039092166001600160a01b0319909216821790556000908152600b60205260409020805460ff19166001179055565b610b74610ddc565b600854600160b01b900460ff1615610bce5760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c656400000000000000000060448201526064016106b0565b6008546001600160a01b0316610c155760405162461bcd60e51b815260206004820152600c60248201526b14185a5c881b9bdd081cd95d60a21b60448201526064016106b0565b6008805460ff60b01b1916600160b01b1790556040517f799663458a5ef2936f7fa0c99b3336c69c25890f82974f04e811e5bb359186c790600090a1565b6060600480546107cc90611847565b610c6a610ddc565b6103e861ffff831611801590610c8657506103e861ffff821611155b610cc15760405162461bcd60e51b815260206004820152600c60248201526b08ccaca40e8dede40d0d2ced60a31b60448201526064016106b0565b6005805463ffffffff60a01b1916600160a01b61ffff85811691820261ffff60b01b191692909217600160b01b928516928302179092556040805192835260208301919091527f2ac80c14c28700f7b5e36f947d572149fe2e3947bac32c3a8c098f3e03722c11910160405180910390a15050565b610d3e610ddc565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60003361085d818585610e95565b610d7f610ddc565b60088054921515600160a81b0260ff60a81b1990931692909217909155600955565b610da9610ddc565b6001600160a01b038116610dd357604051631e4fbdf760e01b8152600060048201526024016106b0565b610919816111ac565b6005546001600160a01b03163314610a145760405163118cdaa760e01b81523360048201526024016106b0565b6107b883838360016111fe565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811015610e8f5781811015610e8057604051637dc7a0d960e11b81526001600160a01b038416600482015260248101829052604481018390526064016106b0565b610e8f848484840360006111fe565b50505050565b6001600160a01b038316610ebf57604051634b637e8f60e11b8152600060048201526024016106b0565b6001600160a01b038216610ee95760405163ec442f0560e01b8152600060048201526024016106b0565b6107b88383836112d3565b6008805460ff60a01b1916600160a01b17905530600090815260208190526040812054905080600003610f27575061119d565b60006009546002610f389190611897565b8211610f445781610f52565b600954610f52906002611897565b600754909150610f6d9030906001600160a01b031683610e09565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110610fa257610fa26118ae565b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101f91906118c4565b81600181518110611032576110326118ae565b6001600160a01b039283166020918202929092010152600754604051632955261160e11b8152479291909116906352aa4c229061107e90869060009087903090839042906004016118e1565b600060405180830381600087803b15801561109857600080fd5b505af19250505080156110a9575060015b156111985760006110ba824761195a565b90508015611196576006546040516000916001600160a01b03169083908381818185875af1925050503d806000811461110f576040519150601f19603f3d011682016040523d82523d6000602084013e611114565b606091505b505090508061115b5760405162461bcd60e51b8152602060048201526013602482015272115512081d1c985b9cd9995c8819985a5b1959606a1b60448201526064016106b0565b60408051868152602081018490527fd7f052835057cec2a1decd4aca816a27eeacf3dea0afb8d6d017f545e4c9ebb3910160405180910390a1505b505b505050505b6008805460ff60a01b19169055565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0384166112285760405163e602df0560e01b8152600060048201526024016106b0565b6001600160a01b03831661125257604051634a1406b160e11b8152600060048201526024016106b0565b6001600160a01b0380851660009081526001602090815260408083209387168352929052208290558015610e8f57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516112c591815260200190565b60405180910390a350505050565b600854600160b01b900460ff161580156112fb57506005546001600160a01b03848116911614155b801561131557506005546001600160a01b03838116911614155b156113585760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b60448201526064016106b0565b600854600160a81b900460ff16801561137b5750600854600160a01b900460ff16155b801561139f57506001600160a01b0382166000908152600b602052604090205460ff165b80156113bc57506009543060009081526020819052604090205410155b156113c9576113c9610ef4565b6001600160a01b0383166000908152600a602052604081205460ff1615801561140b57506001600160a01b0383166000908152600a602052604090205460ff16155b156114d8576001600160a01b0384166000908152600b602052604090205460ff1680156114445750600554600160a01b900461ffff1615155b15611476576005546127109061146590600160a01b900461ffff1684611897565b61146f919061196d565b90506114d8565b6001600160a01b0383166000908152600b602052604090205460ff1680156114aa5750600554600160b01b900461ffff1615155b156114d857600554612710906114cb90600160b01b900461ffff1684611897565b6114d5919061196d565b90505b80156114f6576114e98430836114fd565b6114f3818361195a565b91505b610e8f8484845b6001600160a01b03831661152857806002600082825461151d919061198f565b9091555061159a9050565b6001600160a01b0383166000908152602081905260409020548181101561157b5760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016106b0565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166115b6576002805482900390556115d5565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161161a91815260200190565b60405180910390a3505050565b6001600160a01b038116811461091957600080fd5b60006020828403121561164e57600080fd5b813561165981611627565b9392505050565b600060208083528351808285015260005b8181101561168d57858101830151858201604001528201611671565b506000604082860101526040601f19601f8301168501019250505092915050565b600080604083850312156116c157600080fd5b82356116cc81611627565b946020939093013593505050565b6000806000606084860312156116ef57600080fd5b83356116fa81611627565b9250602084013561170a81611627565b929592945050506040919091013590565b60006020828403121561172d57600080fd5b5035919050565b803561ffff8116811461174657600080fd5b919050565b6000806040838503121561175e57600080fd5b61176783611734565b915061177560208401611734565b90509250929050565b801515811461091957600080fd5b6000806040838503121561179f57600080fd5b82356117aa81611627565b915060208301356117ba8161177e565b809150509250929050565b600080604083850312156117d857600080fd5b82356116cc8161177e565b600080604083850312156117f657600080fd5b823561180181611627565b915060208301356117ba81611627565b60006020828403121561182357600080fd5b5051919050565b60006020828403121561183c57600080fd5b81516116598161177e565b600181811c9082168061185b57607f821691505b60208210810361187b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761086357610863611881565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156118d657600080fd5b815161165981611627565b600060c082018883526020888185015260c0604085015281885180845260e086019150828a01935060005b818110156119315784516001600160a01b03168352938301939183019160010161190c565b50506001600160a01b039788166060860152959096166080840152505060a00152949350505050565b8181038181111561086357610863611881565b60008261198a57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108635761086361188156fea26469706673582212201b1fe539db3605c90fffebe7bd54a71a6a6d76c69b32e3752e99f8f627faf2c564736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000007cf3d26d387bb4f30146319d82716335d44f9cc9000000000000000000000000b4a9c4e6ea8e2191d2fa5b380452a634fb21240a000000000000000000000000000000000000000000000000000000000000000e487970757272537472617465677900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064859505354520000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): HypurrStrategy
Arg [1] : symbol_ (string): HYPSTR
Arg [2] : supply_ (uint256): 1000000000000000000000000000
Arg [3] : marketing_ (address): 0x7Cf3d26D387BB4F30146319D82716335d44F9cC9
Arg [4] : router_ (address): 0xb4a9C4e6Ea8E2191d2FA5B380452a634Fb21240A
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [3] : 0000000000000000000000007cf3d26d387bb4f30146319d82716335d44f9cc9
Arg [4] : 000000000000000000000000b4a9c4e6ea8e2191d2fa5b380452a634fb21240a
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000e
Arg [6] : 4879707572725374726174656779000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [8] : 4859505354520000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.