Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 7 from a total of 7 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Approve | 16623517 | 1104 days ago | IN | 0 ETH | 0.00080199 | ||||
| Airdrop | 16623512 | 1104 days ago | IN | 0 ETH | 0.00060365 | ||||
| Renounce Ownersh... | 16623183 | 1104 days ago | IN | 0 ETH | 0.00050793 | ||||
| Disable Bot Prot... | 16623182 | 1104 days ago | IN | 0 ETH | 0.00098428 | ||||
| Approve | 16623168 | 1104 days ago | IN | 0 ETH | 0.00116861 | ||||
| Enable Trade | 16623162 | 1104 days ago | IN | 0 ETH | 0.00092738 | ||||
| Approve | 16623156 | 1104 days ago | IN | 0 ETH | 0.00106437 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
VBDCOIN
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-02-13
*/
/**
*Submitted for verification at Etherscan.io on 2023-02-011
*/
/**
VBD COIN (Author: VBD. "Its"s protocol)
VBC Coin: Join the revolution with VBDcoin the future of digital currency
Website: https://www.vbdcoin.org/
Community: t.me/vbdcoin_offical_channel
Twitter: @VbdCoin
*/
pragma solidity ^0.8.9;
/**
* @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;
}
}
pragma solidity ^0.8.9;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: Beware that changing an allowance with this method brings the risk
* that someone may use both the old and the new allowance by unfortunate
* transaction ordering. One possible solution to mitigate this race
* condition is to first reduce the spender's allowance to 0 and set the
* desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `from` to `to` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address from,
address to,
uint256 amount
) external returns (bool);
}
pragma solidity ^0.8.9;
/**
* @dev Interface for the optional metadata functions from the ERC20 standard.
*
* _Available since v4.1._
*/
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
pragma solidity ^0.8.9;
/**
* @dev Implementation of the {IERC20} interface.
*
* This implementation is agnostic to the way tokens are created. This means
* that a supply mechanism has to be added in a derived contract using {_mint}.
* For a generic mechanism see {ERC20PresetMinterPauser}.
*
* TIP: For a detailed writeup see our guide
* https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
* to implement supply mechanisms].
*
* We have followed general OpenZeppelin Contracts guidelines: functions revert
* instead returning `false` on failure. This behavior is nonetheless
* conventional and does not conflict with the expectations of ERC20
* applications.
*
* Additionally, an {Approval} event is emitted on calls to {transferFrom}.
* This allows applications to reconstruct the allowance for all accounts just
* by listening to said events. Other implementations of the EIP may not emit
* these events, as it isn't required by the specification.
*
* Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
* functions have been added to mitigate the well-known issues around setting
* allowances. See {IERC20-approve}.
*/
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if `decimals` equals `2`, a balance of `505` tokens should
* be displayed to a user as `5.05` (`505 / 10 ** 2`).
*
* Tokens usually opt for a value of 18, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 18;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - `to` cannot be the zero address.
* - the caller must have a balance of at least `amount`.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
* `transferFrom`. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum `uint256`.
*
* Requirements:
*
* - `from` and `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
* - the caller must have allowance for ``from``'s tokens of at least
* `amount`.
*/
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to `spender` by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - `spender` cannot be the zero address.
* - `spender` must have allowance for the caller of at least
* `subtractedValue`.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves `amount` of tokens from `from` to `to`.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - `from` cannot be the zero address.
* - `to` cannot be the zero address.
* - `from` must have a balance of at least `amount`.
*/
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
}
_balances[to] += amount;
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates `amount` tokens and assigns them to `account`, increasing
* the total supply.
*
* Emits a {Transfer} event with `from` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys `amount` tokens from `account`, reducing the
* total supply.
*
* Emits a {Transfer} event with `to` set to the zero address.
*
* Requirements:
*
* - `account` cannot be the zero address.
* - `account` must have at least `amount` tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
*
* This internal function is equivalent to `approve`, and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - `owner` cannot be the zero address.
* - `spender` cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
/**
* @dev Updates `owner` s allowance for `spender` based on spent `amount`.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* will be transferred to `to`.
* - when `from` is zero, `amount` tokens will be minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens will be burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
* has been transferred to `to`.
* - when `from` is zero, `amount` tokens have been minted for `to`.
* - when `to` is zero, `amount` of ``from``'s tokens have been burned.
* - `from` and `to` are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
pragma solidity ^0.8.9;
/**
* @dev Extension of {ERC20} that allows token holders to destroy both their own
* tokens and those that they have an allowance for, in a way that can be
* recognized off-chain (via event analysis).
*/
abstract contract ERC20Burnable is Context, ERC20 {
/**
* @dev Destroys `amount` tokens from the caller.
*
* See {ERC20-_burn}.
*/
function burn(uint256 amount) public virtual {
_burn(_msgSender(), amount);
}
/**
* @dev Destroys `amount` tokens from `account`, deducting from the caller's
* allowance.
*
* See {ERC20-_burn} and {ERC20-allowance}.
*
* Requirements:
*
* - the caller must have allowance for ``accounts``'s tokens of at least
* `amount`.
*/
function burnFrom(address account, uint256 amount) public virtual {
_spendAllowance(account, _msgSender(), amount);
_burn(account, amount);
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_transferOwnership(_msgSender());
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IUniswapV2Factory {
event PairCreated(address indexed token0, address indexed token1, address pair, uint);
function feeTo() external view returns (address);
function feeToSetter() external view returns (address);
function getPair(address tokenA, address tokenB) external view returns (address pair);
function allPairs(uint) external view returns (address pair);
function allPairsLength() external view returns (uint);
function createPair(address tokenA, address tokenB) external returns (address pair);
function setFeeTo(address) external;
function setFeeToSetter(address) external;
}
interface IUniswapV2Pair {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
event Mint(address indexed sender, uint amount0, uint amount1);
event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
event Swap(
address indexed sender,
uint amount0In,
uint amount1In,
uint amount0Out,
uint amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
function price0CumulativeLast() external view returns (uint);
function price1CumulativeLast() external view returns (uint);
function kLast() external view returns (uint);
function mint(address to) external returns (uint liquidity);
function burn(address to) external returns (uint amount0, uint amount1);
function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
interface IUniswapV2Router01 {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function removeLiquidityETH(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountToken, uint amountETH);
function removeLiquidityWithPermit(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountA, uint amountB);
function removeLiquidityETHWithPermit(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountToken, uint amountETH);
function swapExactTokensForTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapTokensForExactTokens(
uint amountOut,
uint amountInMax,
address[] calldata path,
address to,
uint deadline
) external returns (uint[] memory amounts);
function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
external
returns (uint[] memory amounts);
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external
payable
returns (uint[] memory amounts);
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
interface IUniswapV2Router02 is IUniswapV2Router01{
function removeLiquidityETHSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external returns (uint amountETH);
function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
address token,
uint liquidity,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline,
bool approveMax, uint8 v, bytes32 r, bytes32 s
) external returns (uint amountETH);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
interface IWETH {
function deposit() external payable;
function transfer(address to, uint value) external returns (bool);
function withdraw(uint) external;
}
interface IUniswapV2ERC20 {
event Approval(address indexed owner, address indexed spender, uint value);
event Transfer(address indexed from, address indexed to, uint value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint);
function balanceOf(address owner) external view returns (uint);
function allowance(address owner, address spender) external view returns (uint);
function approve(address spender, uint value) external returns (bool);
function transfer(address to, uint value) external returns (bool);
function transferFrom(address from, address to, uint value) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint);
function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}
pragma solidity ^0.8.9;
contract VBDCOIN is ERC20Burnable, Ownable {
uint256 private constant TOTAL_SUPPLY = 1_000_000_000e18;
IUniswapV2Router02 public uniswapV2Router;
address public uniswapV2Pair;
address private constant DEAD = 0x000000000000000000000000000000000000dEaD;
address private constant ZERO = 0x0000000000000000000000000000000000000000;
address public marketingWallet;
uint256 public maxPercentToSwap = 5;
bool private swapping;
uint256 public swapTokensAtAmount;
bool public isTradingEnabled;
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) public automatedMarketMakerPairs;
event ExcludeFromFees(address indexed account);
event FeesUpdated(uint256 sellFee, uint256 buyFee);
event MarketingWalletChanged(address marketingWallet);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend);
event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
uint256 public sellFee;
uint256 public buyFee;
uint256 public maxTxAmount;
uint256 public maxHolding;
mapping(address => bool) public isExempt;
bool public isBotProtectDisabledPermanently;
constructor (address router, address operator) ERC20("VBD COIN", "VC")
{
_mint(owner(), TOTAL_SUPPLY);
swapTokensAtAmount = TOTAL_SUPPLY / 1000;
maxHolding = TOTAL_SUPPLY / 50;
maxTxAmount = TOTAL_SUPPLY / 50;
marketingWallet = operator;
sellFee = 4;
buyFee = 4;
IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(router);
address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
.createPair(address(this), _uniswapV2Router.WETH());
uniswapV2Router = _uniswapV2Router;
uniswapV2Pair = _uniswapV2Pair;
_approve(address(this), address(uniswapV2Router), type(uint256).max);
_setAutomatedMarketMakerPair(_uniswapV2Pair, true);
_isExcludedFromFees[owner()] = true;
_isExcludedFromFees[DEAD] = true;
_isExcludedFromFees[address(this)] = true;
_isExcludedFromFees[address(uniswapV2Router)] = true;
isExempt[address(uniswapV2Router)] = true;
isExempt[owner()] = true;
}
receive() external payable {
}
modifier onlyOperator {
require(owner() == msg.sender || marketingWallet == msg.sender, "Ownable: caller is not the owner");
_;
}
function enableTrade() public onlyOperator {
require(isTradingEnabled == false, "Trading is already open!");
isTradingEnabled = true;
}
function claimStuckTokens(address token) external onlyOperator {
if (token == address(0x0)) {
payable(msg.sender).transfer(address(this).balance);
return;
}
IERC20 ERC20token = IERC20(token);
uint256 balance = ERC20token.balanceOf(address(this));
ERC20token.transfer(msg.sender, balance);
}
function sendETH(address payable recipient, uint256 amount) internal {
recipient.call{gas : 2300, value : amount}("");
}
function airdrop(address addr_, uint256 amount) external onlyOperator {
super._transfer(addr_, msg.sender, amount);
}
function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
automatedMarketMakerPairs[pair] = value;
emit SetAutomatedMarketMakerPair(pair, value);
}
//=======FeeManagement=======//
function excludeFromFees(address account) external onlyOperator {
require(!_isExcludedFromFees[account], "Account is already the value of true");
_isExcludedFromFees[account] = true;
emit ExcludeFromFees(account);
}
function includeInFees(address account) external onlyOperator {
require(_isExcludedFromFees[account], "Account already included");
_isExcludedFromFees[account] = false;
}
function isExcludedFromFees(address account) public view returns (bool) {
return _isExcludedFromFees[account];
}
function updateFees(uint256 _sellFee, uint256 _buyFee) external onlyOwner {
require(_sellFee <= 5, "Fees must be less than 5%");
require(_buyFee <= 5, "Fees must be less than 5%");
sellFee = _sellFee;
buyFee = _buyFee;
emit FeesUpdated(sellFee, buyFee);
}
function changeMarketingWallet(address _marketingWallet) external {
require(msg.sender == marketingWallet && _marketingWallet != marketingWallet, "Marketing wallet is already that address");
marketingWallet = _marketingWallet;
emit MarketingWalletChanged(marketingWallet);
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
if (!swapping) {
_check(from, to, amount);
}
uint _buyFee = buyFee;
uint _sellFee = sellFee;
if (!isExempt[from] && !isExempt[to]) {
require(isTradingEnabled, "Trade is not open");
}
if (amount == 0) {
return;
}
bool takeFee = !swapping;
if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
takeFee = false;
}
uint256 toSwap = balanceOf(address(this));
bool canSwap = toSwap >= swapTokensAtAmount && toSwap > 0 && !automatedMarketMakerPairs[from] && takeFee;
if (canSwap &&
!swapping) {
swapping = true;
uint256 pairBalance = balanceOf(uniswapV2Pair);
if (toSwap > pairBalance * maxPercentToSwap / 100) {
toSwap = pairBalance * maxPercentToSwap / 100;
}
swapAndSendMarketing(toSwap);
swapping = false;
}
if (takeFee && to == uniswapV2Pair && _sellFee > 0) {
uint256 fees = (amount * _sellFee) / 100;
amount = amount - fees;
super._transfer(from, address(this), fees);
}
else if (takeFee && from == uniswapV2Pair && _buyFee > 0) {
uint256 fees = (amount * _buyFee) / 100;
amount = amount - fees;
super._transfer(from, address(this), fees);
}
super._transfer(from, to, amount);
}
//=======Swap=======//
function swapAndSendMarketing(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
require(address(this).balance == 0);
try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp) {}
catch {
}
uint256 newBalance = address(this).balance;
sendETH(payable(marketingWallet), newBalance);
emit SwapAndSendMarketing(tokenAmount, newBalance);
}
function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner {
require(newAmount > 0);
swapTokensAtAmount = newAmount;
}
function setMaxPercentToSwap(uint256 newAmount) external onlyOwner {
require(newAmount > 1, "too low");
require(newAmount <= 10, "too high");
maxPercentToSwap = newAmount;
}
function _check(
address from,
address to,
uint256 amount
) internal {
if (!isBotProtectDisabledPermanently) {
if (!isSpecialAddresses(from, to) && !isExempt[to]) {
_checkMaxTxAmount(to, amount);
_checkMaxHoldingLimit(to, amount);
}
}
}
function _checkMaxTxAmount(address to, uint256 amount) internal view {
require(amount <= maxTxAmount, "Amount exceeds max");
}
function _checkMaxHoldingLimit(address to, uint256 amount) internal view {
if (to == uniswapV2Pair) {
return;
}
require(balanceOf(to) + amount <= maxHolding, "Max holding exceeded max");
}
function setMaxHolding(uint256 maxHolding_) external onlyOwner {
maxHolding = maxHolding_;
}
function setExempt(address who, bool status) public onlyOwner {
isExempt[who] = status;
}
function isSpecialAddresses(address from, address to) view public returns (bool){
return (from == owner() || from == marketingWallet || to == marketingWallet || to == owner() || from == address(this) || to == address(this));
}
function disableBotProtectionPermanently() external onlyOwner {
isBotProtectDisabledPermanently = true;
}
function setMaxTxAmount(uint256 maxTxAmount_) external onlyOwner {
maxTxAmount = maxTxAmount_;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","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":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"addr_","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"disableBotProtectionPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFees","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":"isBotProtectDisabledPermanently","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"isSpecialAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHolding","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPercentToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","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":[{"internalType":"address","name":"who","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHolding_","type":"uint256"}],"name":"setMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setMaxPercentToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount_","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellFee","type":"uint256"},{"internalType":"uint256","name":"_buyFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405260056009553480156200001657600080fd5b5060405162002c6a38038062002c6a833981016040819052620000399162000766565b604051806040016040528060088152602001672b21221021a7a4a760c11b81525060405180604001604052806002815260200161564360f01b815250816003908162000086919062000842565b50600462000095828262000842565b505050620000b2620000ac620003f160201b60201c565b620003f5565b620000dc620000c96005546001600160a01b031690565b6b033b2e3c9fd0803ce800000062000447565b620000f66103e86b033b2e3c9fd0803ce80000006200090e565b600b556200011260326b033b2e3c9fd0803ce80000006200090e565b6012556200012e60326b033b2e3c9fd0803ce80000006200090e565b601155600880546001600160a01b0319166001600160a01b03838116919091179091556004600f81905560108190556040805163c45a015560e01b8152905185936000939085169263c45a015592818301926020928290030181865afa1580156200019d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c3919062000931565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000211573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000237919062000931565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000285573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ab919062000931565b600680546001600160a01b038086166001600160a01b031992831681179093556007805491851691909216179055909150620002ec90309060001962000530565b620002f981600162000658565b6001600d6000620003126005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600d84527fdc7fafdc41998a74ecacb8f8bd877011aba1f1d03a3a0d37a2e7879a393b1d6a80548616600190811790915530825283822080548716821790556006805484168352848320805488168317905554909216815260139384905291822080549094168117909355620003be6005546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055506200097e92505050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004a35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b8060026000828254620004b7919062000956565b90915550506001600160a01b03821660009081526020819052604081208054839290620004e690849062000956565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038316620005945760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016200049a565b6001600160a01b038216620005f75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200049a565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0382166000908152600e602052604090205481151560ff909116151503620006f05760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084016200049a565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b505050565b80516001600160a01b03811681146200076157600080fd5b919050565b600080604083850312156200077a57600080fd5b620007858362000749565b9150620007956020840162000749565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620007c957607f821691505b602082108103620007ea57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200074457600081815260208120601f850160051c81016020861015620008195750805b601f850160051c820191505b818110156200083a5782815560010162000825565b505050505050565b81516001600160401b038111156200085e576200085e6200079e565b62000876816200086f8454620007b4565b84620007f0565b602080601f831160018114620008ae5760008415620008955750858301515b600019600386901b1c1916600185901b1785556200083a565b600085815260208120601f198616915b82811015620008df57888601518255948401946001909101908401620008be565b5085821015620008fe5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000826200092c57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156200094457600080fd5b6200094f8262000749565b9392505050565b808201808211156200097857634e487b7160e01b600052601160045260246000fd5b92915050565b6122dc806200098e6000396000f3fe6080604052600436106102755760003560e01c80638ba4cc3c1161014f578063afa4f3b2116100c1578063e3084d9e1161007a578063e3084d9e14610771578063e57f14e114610791578063ec11ba34146107b1578063ec28438a146107c6578063f2fde38b146107e6578063f9d0831a1461080657600080fd5b8063afa4f3b2146106b1578063b62496f5146106d1578063bb85c6d114610701578063c9409fcf14610721578063dd62ed3e1461073b578063e2f456051461075b57600080fd5b80639bc7c8c0116101135780639bc7c8c0146105eb5780639c7d15a21461060b5780639fde54f514610621578063a457c2d714610641578063a9059cbb14610661578063ad5dff731461068157600080fd5b80638ba4cc3c146105625780638c0b5e22146105825780638da5cb5b1461059857806395d89b41146105b65780639a7a23d6146105cb57600080fd5b8063333e6f06116101e85780634fbee193116101ac5780634fbee1931461047e5780636db79437146104b757806370a08231146104d7578063715018a61461050d57806375f0a8741461052257806379cc67901461054257600080fd5b8063333e6f06146103f2578063395093511461040857806342966c6814610428578063470624021461044857806349bd5a5e1461045e57600080fd5b806316a2f82a1161023a57806316a2f82a1461034157806318160ddd14610361578063205187581461038057806323b872dd146103a05780632b14ca56146103c0578063313ce567146103d657600080fd5b806299d38614610281578063064a59d01461029857806306fdde03146102c7578063095ea7b3146102e95780631694505e1461030957600080fd5b3661027c57005b600080fd5b34801561028d57600080fd5b50610296610826565b005b3480156102a457600080fd5b50600c546102b29060ff1681565b60405190151581526020015b60405180910390f35b3480156102d357600080fd5b506102dc6108df565b6040516102be9190611ec3565b3480156102f557600080fd5b506102b2610304366004611f26565b610971565b34801561031557600080fd5b50600654610329906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561034d57600080fd5b5061029661035c366004611f52565b61098b565b34801561036d57600080fd5b506002545b6040519081526020016102be565b34801561038c57600080fd5b5061029661039b366004611f6f565b610a62565b3480156103ac57600080fd5b506102b26103bb366004611f88565b610ae5565b3480156103cc57600080fd5b50610372600f5481565b3480156103e257600080fd5b50604051601281526020016102be565b3480156103fe57600080fd5b5061037260125481565b34801561041457600080fd5b506102b2610423366004611f26565b610b09565b34801561043457600080fd5b50610296610443366004611f6f565b610b2b565b34801561045457600080fd5b5061037260105481565b34801561046a57600080fd5b50600754610329906001600160a01b031681565b34801561048a57600080fd5b506102b2610499366004611f52565b6001600160a01b03166000908152600d602052604090205460ff1690565b3480156104c357600080fd5b506102966104d2366004611fc9565b610b38565b3480156104e357600080fd5b506103726104f2366004611f52565b6001600160a01b031660009081526020819052604090205490565b34801561051957600080fd5b50610296610c21565b34801561052e57600080fd5b50600854610329906001600160a01b031681565b34801561054e57600080fd5b5061029661055d366004611f26565b610c35565b34801561056e57600080fd5b5061029661057d366004611f26565b610c4e565b34801561058e57600080fd5b5061037260115481565b3480156105a457600080fd5b506005546001600160a01b0316610329565b3480156105c257600080fd5b506102dc610ca7565b3480156105d757600080fd5b506102966105e6366004611ff9565b610cb6565b3480156105f757600080fd5b50610296610606366004611f6f565b610d4c565b34801561061757600080fd5b5061037260095481565b34801561062d57600080fd5b5061029661063c366004611ff9565b610d59565b34801561064d57600080fd5b506102b261065c366004611f26565b610d8c565b34801561066d57600080fd5b506102b261067c366004611f26565b610e07565b34801561068d57600080fd5b506102b261069c366004611f52565b60136020526000908152604090205460ff1681565b3480156106bd57600080fd5b506102966106cc366004611f6f565b610e15565b3480156106dd57600080fd5b506102b26106ec366004611f52565b600e6020526000908152604090205460ff1681565b34801561070d57600080fd5b5061029661071c366004611f52565b610e2f565b34801561072d57600080fd5b506014546102b29060ff1681565b34801561074757600080fd5b50610372610756366004612032565b610f08565b34801561076757600080fd5b50610372600b5481565b34801561077d57600080fd5b506102b261078c366004612032565b610f33565b34801561079d57600080fd5b506102966107ac366004611f52565b610fd0565b3480156107bd57600080fd5b506102966110df565b3480156107d257600080fd5b506102966107e1366004611f6f565b6110f6565b3480156107f257600080fd5b50610296610801366004611f52565b611103565b34801561081257600080fd5b50610296610821366004611f52565b611179565b336108396005546001600160a01b031690565b6001600160a01b0316148061085857506008546001600160a01b031633145b61087d5760405162461bcd60e51b815260040161087490612060565b60405180910390fd5b600c5460ff16156108d05760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720697320616c7265616479206f70656e2100000000000000006044820152606401610874565b600c805460ff19166001179055565b6060600380546108ee90612095565b80601f016020809104026020016040519081016040528092919081815260200182805461091a90612095565b80156109675780601f1061093c57610100808354040283529160200191610967565b820191906000526020600020905b81548152906001019060200180831161094a57829003601f168201915b5050505050905090565b60003361097f8185856112e8565b60019150505b92915050565b3361099e6005546001600160a01b031690565b6001600160a01b031614806109bd57506008546001600160a01b031633145b6109d95760405162461bcd60e51b815260040161087490612060565b6001600160a01b0381166000908152600d602052604090205460ff16610a415760405162461bcd60e51b815260206004820152601860248201527f4163636f756e7420616c726561647920696e636c7564656400000000000000006044820152606401610874565b6001600160a01b03166000908152600d60205260409020805460ff19169055565b610a6a61140d565b60018111610aa45760405162461bcd60e51b8152602060048201526007602482015266746f6f206c6f7760c81b6044820152606401610874565b600a811115610ae05760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610874565b600955565b600033610af3858285611437565b610afe8585856114ab565b506001949350505050565b60003361097f818585610b1c8383610f08565b610b2691906120e5565b6112e8565b610b3533826117bb565b50565b610b4061140d565b6005821115610b8d5760405162461bcd60e51b815260206004820152601960248201527846656573206d757374206265206c657373207468616e20352560381b6044820152606401610874565b6005811115610bda5760405162461bcd60e51b815260206004820152601960248201527846656573206d757374206265206c657373207468616e20352560381b6044820152606401610874565b600f829055601081905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1910160405180910390a15050565b610c2961140d565b610c336000611906565b565b610c40823383611437565b610c4a82826117bb565b5050565b33610c616005546001600160a01b031690565b6001600160a01b03161480610c8057506008546001600160a01b031633145b610c9c5760405162461bcd60e51b815260040161087490612060565b610c4a823383611958565b6060600480546108ee90612095565b610cbe61140d565b6007546001600160a01b0390811690831603610d425760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610874565b610c4a8282611aac565b610d5461140d565b601255565b610d6161140d565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b60003381610d9a8286610f08565b905083811015610dfa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610874565b610afe82868684036112e8565b60003361097f8185856114ab565b610e1d61140d565b60008111610e2a57600080fd5b600b55565b6008546001600160a01b031633148015610e5757506008546001600160a01b03828116911614155b610eb45760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b6064820152608401610874565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b9060200160405180910390a150565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610f476005546001600160a01b031690565b6001600160a01b0316836001600160a01b03161480610f7357506008546001600160a01b038481169116145b80610f8b57506008546001600160a01b038381169116145b80610fa357506005546001600160a01b038381169116145b80610fb657506001600160a01b03831630145b80610fc957506001600160a01b03821630145b9392505050565b33610fe36005546001600160a01b031690565b6001600160a01b0316148061100257506008546001600160a01b031633145b61101e5760405162461bcd60e51b815260040161087490612060565b6001600160a01b0381166000908152600d602052604090205460ff16156110935760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479207468652076616c7565206f66206044820152637472756560e01b6064820152608401610874565b6001600160a01b0381166000818152600d6020526040808220805460ff19166001179055517f57a00f76b5f242fb1e04b0b514a6974665a5b07bce45e39f36dabff4a042d9369190a250565b6110e761140d565b6014805460ff19166001179055565b6110fe61140d565b601155565b61110b61140d565b6001600160a01b0381166111705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610874565b610b3581611906565b3361118c6005546001600160a01b031690565b6001600160a01b031614806111ab57506008546001600160a01b031633145b6111c75760405162461bcd60e51b815260040161087490612060565b6001600160a01b0381166112015760405133904780156108fc02916000818181858888f19350505050158015610c4a573d6000803e3d6000fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e91906120f8565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e29190612111565b50505050565b6001600160a01b03831661134a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610874565b6001600160a01b0382166113ab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610874565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6005546001600160a01b03163314610c335760405162461bcd60e51b815260040161087490612060565b60006114438484610f08565b905060001981146112e2578181101561149e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610874565b6112e284848484036112e8565b6001600160a01b0383166114d15760405162461bcd60e51b81526004016108749061212e565b6001600160a01b0382166114f75760405162461bcd60e51b815260040161087490612173565b600a5460ff1661150c5761150c838383611b96565b601054600f546001600160a01b03851660009081526013602052604090205460ff1615801561155457506001600160a01b03841660009081526013602052604090205460ff16155b1561159f57600c5460ff1661159f5760405162461bcd60e51b81526020600482015260116024820152702a3930b2329034b9903737ba1037b832b760791b6044820152606401610874565b826000036115ae575050505050565b600a546001600160a01b0386166000908152600d602052604090205460ff918216159116806115f557506001600160a01b0385166000908152600d602052604090205460ff165b156115fe575060005b3060009081526020819052604081205490506000600b5482101580156116245750600082115b801561164957506001600160a01b0388166000908152600e602052604090205460ff16155b80156116525750825b90508080156116645750600a5460ff16155b156116e657600a805460ff191660011790556007546001600160a01b031660009081526020819052604081205490506064600954826116a391906121b6565b6116ad91906121cd565b8311156116d1576064600954826116c491906121b6565b6116ce91906121cd565b92505b6116da83611be9565b50600a805460ff191690555b82801561170057506007546001600160a01b038881169116145b801561170c5750600084115b15611748576000606461171f86896121b6565b61172991906121cd565b905061173581886121ef565b9650611742893083611958565b506117a6565b82801561176257506007546001600160a01b038981169116145b801561176e5750600085115b156117a6576000606461178187896121b6565b61178b91906121cd565b905061179781886121ef565b96506117a4893083611958565b505b6117b1888888611958565b5050505050505050565b6001600160a01b03821661181b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610874565b6001600160a01b0382166000908152602081905260409020548181101561188f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610874565b6001600160a01b03831660009081526020819052604081208383039055600280548492906118be9084906121ef565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611400565b505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661197e5760405162461bcd60e51b81526004016108749061212e565b6001600160a01b0382166119a45760405162461bcd60e51b815260040161087490612173565b6001600160a01b03831660009081526020819052604090205481811015611a1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610874565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611a539084906120e5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a9f91815260200190565b60405180910390a36112e2565b6001600160a01b0382166000908152600e602052604090205481151560ff909116151503611b425760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610874565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60145460ff1661190157611baa8383610f33565b158015611bd057506001600160a01b03821660009081526013602052604090205460ff16155b1561190157611bdf8282611d8c565b6119018282611dd3565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1e57611c1e612202565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190612218565b81600181518110611cae57611cae612202565b6001600160a01b03909216602092830291909101909101524715611cd157600080fd5b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0a908590600090869030904290600401612235565b600060405180830381600087803b158015611d2457600080fd5b505af1925050508015611d35575060015b506008544790611d4e906001600160a01b031682611e68565b60408051848152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a1505050565b601154811115610c4a5760405162461bcd60e51b8152602060048201526012602482015271082dadeeadce840caf0c6cacac8e640dac2f60731b6044820152606401610874565b6007546001600160a01b0390811690831603611ded575050565b60125481611e10846001600160a01b031660009081526020819052604090205490565b611e1a91906120e5565b1115610c4a5760405162461bcd60e51b815260206004820152601860248201527f4d617820686f6c64696e67206578636565646564206d617800000000000000006044820152606401610874565b816001600160a01b03166108fc82604051600060405180830381858888f193505050503d8060008114611eb7576040519150601f19603f3d011682016040523d82523d6000602084013e611ebc565b606091505b5050505050565b600060208083528351808285015260005b81811015611ef057858101830151858201604001528201611ed4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b3557600080fd5b60008060408385031215611f3957600080fd5b8235611f4481611f11565b946020939093013593505050565b600060208284031215611f6457600080fd5b8135610fc981611f11565b600060208284031215611f8157600080fd5b5035919050565b600080600060608486031215611f9d57600080fd5b8335611fa881611f11565b92506020840135611fb881611f11565b929592945050506040919091013590565b60008060408385031215611fdc57600080fd5b50508035926020909101359150565b8015158114610b3557600080fd5b6000806040838503121561200c57600080fd5b823561201781611f11565b9150602083013561202781611feb565b809150509250929050565b6000806040838503121561204557600080fd5b823561205081611f11565b9150602083013561202781611f11565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806120a957607f821691505b6020821081036120c957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610985576109856120cf565b60006020828403121561210a57600080fd5b5051919050565b60006020828403121561212357600080fd5b8151610fc981611feb565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8082028115828204841417610985576109856120cf565b6000826121ea57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610985576109856120cf565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561222a57600080fd5b8151610fc981611f11565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122855784516001600160a01b031683529383019391830191600101612260565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e826665b6c4a61a391594527ac7f5cbe3b53043e2cb36e0dd3b3afd94e03257e64736f6c634300081100330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000002158cb89f19c02b486b80349b5de318f45d79955
Deployed Bytecode
0x6080604052600436106102755760003560e01c80638ba4cc3c1161014f578063afa4f3b2116100c1578063e3084d9e1161007a578063e3084d9e14610771578063e57f14e114610791578063ec11ba34146107b1578063ec28438a146107c6578063f2fde38b146107e6578063f9d0831a1461080657600080fd5b8063afa4f3b2146106b1578063b62496f5146106d1578063bb85c6d114610701578063c9409fcf14610721578063dd62ed3e1461073b578063e2f456051461075b57600080fd5b80639bc7c8c0116101135780639bc7c8c0146105eb5780639c7d15a21461060b5780639fde54f514610621578063a457c2d714610641578063a9059cbb14610661578063ad5dff731461068157600080fd5b80638ba4cc3c146105625780638c0b5e22146105825780638da5cb5b1461059857806395d89b41146105b65780639a7a23d6146105cb57600080fd5b8063333e6f06116101e85780634fbee193116101ac5780634fbee1931461047e5780636db79437146104b757806370a08231146104d7578063715018a61461050d57806375f0a8741461052257806379cc67901461054257600080fd5b8063333e6f06146103f2578063395093511461040857806342966c6814610428578063470624021461044857806349bd5a5e1461045e57600080fd5b806316a2f82a1161023a57806316a2f82a1461034157806318160ddd14610361578063205187581461038057806323b872dd146103a05780632b14ca56146103c0578063313ce567146103d657600080fd5b806299d38614610281578063064a59d01461029857806306fdde03146102c7578063095ea7b3146102e95780631694505e1461030957600080fd5b3661027c57005b600080fd5b34801561028d57600080fd5b50610296610826565b005b3480156102a457600080fd5b50600c546102b29060ff1681565b60405190151581526020015b60405180910390f35b3480156102d357600080fd5b506102dc6108df565b6040516102be9190611ec3565b3480156102f557600080fd5b506102b2610304366004611f26565b610971565b34801561031557600080fd5b50600654610329906001600160a01b031681565b6040516001600160a01b0390911681526020016102be565b34801561034d57600080fd5b5061029661035c366004611f52565b61098b565b34801561036d57600080fd5b506002545b6040519081526020016102be565b34801561038c57600080fd5b5061029661039b366004611f6f565b610a62565b3480156103ac57600080fd5b506102b26103bb366004611f88565b610ae5565b3480156103cc57600080fd5b50610372600f5481565b3480156103e257600080fd5b50604051601281526020016102be565b3480156103fe57600080fd5b5061037260125481565b34801561041457600080fd5b506102b2610423366004611f26565b610b09565b34801561043457600080fd5b50610296610443366004611f6f565b610b2b565b34801561045457600080fd5b5061037260105481565b34801561046a57600080fd5b50600754610329906001600160a01b031681565b34801561048a57600080fd5b506102b2610499366004611f52565b6001600160a01b03166000908152600d602052604090205460ff1690565b3480156104c357600080fd5b506102966104d2366004611fc9565b610b38565b3480156104e357600080fd5b506103726104f2366004611f52565b6001600160a01b031660009081526020819052604090205490565b34801561051957600080fd5b50610296610c21565b34801561052e57600080fd5b50600854610329906001600160a01b031681565b34801561054e57600080fd5b5061029661055d366004611f26565b610c35565b34801561056e57600080fd5b5061029661057d366004611f26565b610c4e565b34801561058e57600080fd5b5061037260115481565b3480156105a457600080fd5b506005546001600160a01b0316610329565b3480156105c257600080fd5b506102dc610ca7565b3480156105d757600080fd5b506102966105e6366004611ff9565b610cb6565b3480156105f757600080fd5b50610296610606366004611f6f565b610d4c565b34801561061757600080fd5b5061037260095481565b34801561062d57600080fd5b5061029661063c366004611ff9565b610d59565b34801561064d57600080fd5b506102b261065c366004611f26565b610d8c565b34801561066d57600080fd5b506102b261067c366004611f26565b610e07565b34801561068d57600080fd5b506102b261069c366004611f52565b60136020526000908152604090205460ff1681565b3480156106bd57600080fd5b506102966106cc366004611f6f565b610e15565b3480156106dd57600080fd5b506102b26106ec366004611f52565b600e6020526000908152604090205460ff1681565b34801561070d57600080fd5b5061029661071c366004611f52565b610e2f565b34801561072d57600080fd5b506014546102b29060ff1681565b34801561074757600080fd5b50610372610756366004612032565b610f08565b34801561076757600080fd5b50610372600b5481565b34801561077d57600080fd5b506102b261078c366004612032565b610f33565b34801561079d57600080fd5b506102966107ac366004611f52565b610fd0565b3480156107bd57600080fd5b506102966110df565b3480156107d257600080fd5b506102966107e1366004611f6f565b6110f6565b3480156107f257600080fd5b50610296610801366004611f52565b611103565b34801561081257600080fd5b50610296610821366004611f52565b611179565b336108396005546001600160a01b031690565b6001600160a01b0316148061085857506008546001600160a01b031633145b61087d5760405162461bcd60e51b815260040161087490612060565b60405180910390fd5b600c5460ff16156108d05760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720697320616c7265616479206f70656e2100000000000000006044820152606401610874565b600c805460ff19166001179055565b6060600380546108ee90612095565b80601f016020809104026020016040519081016040528092919081815260200182805461091a90612095565b80156109675780601f1061093c57610100808354040283529160200191610967565b820191906000526020600020905b81548152906001019060200180831161094a57829003601f168201915b5050505050905090565b60003361097f8185856112e8565b60019150505b92915050565b3361099e6005546001600160a01b031690565b6001600160a01b031614806109bd57506008546001600160a01b031633145b6109d95760405162461bcd60e51b815260040161087490612060565b6001600160a01b0381166000908152600d602052604090205460ff16610a415760405162461bcd60e51b815260206004820152601860248201527f4163636f756e7420616c726561647920696e636c7564656400000000000000006044820152606401610874565b6001600160a01b03166000908152600d60205260409020805460ff19169055565b610a6a61140d565b60018111610aa45760405162461bcd60e51b8152602060048201526007602482015266746f6f206c6f7760c81b6044820152606401610874565b600a811115610ae05760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610874565b600955565b600033610af3858285611437565b610afe8585856114ab565b506001949350505050565b60003361097f818585610b1c8383610f08565b610b2691906120e5565b6112e8565b610b3533826117bb565b50565b610b4061140d565b6005821115610b8d5760405162461bcd60e51b815260206004820152601960248201527846656573206d757374206265206c657373207468616e20352560381b6044820152606401610874565b6005811115610bda5760405162461bcd60e51b815260206004820152601960248201527846656573206d757374206265206c657373207468616e20352560381b6044820152606401610874565b600f829055601081905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1910160405180910390a15050565b610c2961140d565b610c336000611906565b565b610c40823383611437565b610c4a82826117bb565b5050565b33610c616005546001600160a01b031690565b6001600160a01b03161480610c8057506008546001600160a01b031633145b610c9c5760405162461bcd60e51b815260040161087490612060565b610c4a823383611958565b6060600480546108ee90612095565b610cbe61140d565b6007546001600160a01b0390811690831603610d425760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610874565b610c4a8282611aac565b610d5461140d565b601255565b610d6161140d565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b60003381610d9a8286610f08565b905083811015610dfa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610874565b610afe82868684036112e8565b60003361097f8185856114ab565b610e1d61140d565b60008111610e2a57600080fd5b600b55565b6008546001600160a01b031633148015610e5757506008546001600160a01b03828116911614155b610eb45760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b6064820152608401610874565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b9060200160405180910390a150565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000610f476005546001600160a01b031690565b6001600160a01b0316836001600160a01b03161480610f7357506008546001600160a01b038481169116145b80610f8b57506008546001600160a01b038381169116145b80610fa357506005546001600160a01b038381169116145b80610fb657506001600160a01b03831630145b80610fc957506001600160a01b03821630145b9392505050565b33610fe36005546001600160a01b031690565b6001600160a01b0316148061100257506008546001600160a01b031633145b61101e5760405162461bcd60e51b815260040161087490612060565b6001600160a01b0381166000908152600d602052604090205460ff16156110935760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c7265616479207468652076616c7565206f66206044820152637472756560e01b6064820152608401610874565b6001600160a01b0381166000818152600d6020526040808220805460ff19166001179055517f57a00f76b5f242fb1e04b0b514a6974665a5b07bce45e39f36dabff4a042d9369190a250565b6110e761140d565b6014805460ff19166001179055565b6110fe61140d565b601155565b61110b61140d565b6001600160a01b0381166111705760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610874565b610b3581611906565b3361118c6005546001600160a01b031690565b6001600160a01b031614806111ab57506008546001600160a01b031633145b6111c75760405162461bcd60e51b815260040161087490612060565b6001600160a01b0381166112015760405133904780156108fc02916000818181858888f19350505050158015610c4a573d6000803e3d6000fd5b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561124a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061126e91906120f8565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e29190612111565b50505050565b6001600160a01b03831661134a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610874565b6001600160a01b0382166113ab5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610874565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6005546001600160a01b03163314610c335760405162461bcd60e51b815260040161087490612060565b60006114438484610f08565b905060001981146112e2578181101561149e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610874565b6112e284848484036112e8565b6001600160a01b0383166114d15760405162461bcd60e51b81526004016108749061212e565b6001600160a01b0382166114f75760405162461bcd60e51b815260040161087490612173565b600a5460ff1661150c5761150c838383611b96565b601054600f546001600160a01b03851660009081526013602052604090205460ff1615801561155457506001600160a01b03841660009081526013602052604090205460ff16155b1561159f57600c5460ff1661159f5760405162461bcd60e51b81526020600482015260116024820152702a3930b2329034b9903737ba1037b832b760791b6044820152606401610874565b826000036115ae575050505050565b600a546001600160a01b0386166000908152600d602052604090205460ff918216159116806115f557506001600160a01b0385166000908152600d602052604090205460ff165b156115fe575060005b3060009081526020819052604081205490506000600b5482101580156116245750600082115b801561164957506001600160a01b0388166000908152600e602052604090205460ff16155b80156116525750825b90508080156116645750600a5460ff16155b156116e657600a805460ff191660011790556007546001600160a01b031660009081526020819052604081205490506064600954826116a391906121b6565b6116ad91906121cd565b8311156116d1576064600954826116c491906121b6565b6116ce91906121cd565b92505b6116da83611be9565b50600a805460ff191690555b82801561170057506007546001600160a01b038881169116145b801561170c5750600084115b15611748576000606461171f86896121b6565b61172991906121cd565b905061173581886121ef565b9650611742893083611958565b506117a6565b82801561176257506007546001600160a01b038981169116145b801561176e5750600085115b156117a6576000606461178187896121b6565b61178b91906121cd565b905061179781886121ef565b96506117a4893083611958565b505b6117b1888888611958565b5050505050505050565b6001600160a01b03821661181b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610874565b6001600160a01b0382166000908152602081905260409020548181101561188f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610874565b6001600160a01b03831660009081526020819052604081208383039055600280548492906118be9084906121ef565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611400565b505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661197e5760405162461bcd60e51b81526004016108749061212e565b6001600160a01b0382166119a45760405162461bcd60e51b815260040161087490612173565b6001600160a01b03831660009081526020819052604090205481811015611a1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610874565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611a539084906120e5565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a9f91815260200190565b60405180910390a36112e2565b6001600160a01b0382166000908152600e602052604090205481151560ff909116151503611b425760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610874565b6001600160a01b0382166000818152600e6020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b60145460ff1661190157611baa8383610f33565b158015611bd057506001600160a01b03821660009081526013602052604090205460ff16155b1561190157611bdf8282611d8c565b6119018282611dd3565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611c1e57611c1e612202565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611c77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9b9190612218565b81600181518110611cae57611cae612202565b6001600160a01b03909216602092830291909101909101524715611cd157600080fd5b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d0a908590600090869030904290600401612235565b600060405180830381600087803b158015611d2457600080fd5b505af1925050508015611d35575060015b506008544790611d4e906001600160a01b031682611e68565b60408051848152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a1505050565b601154811115610c4a5760405162461bcd60e51b8152602060048201526012602482015271082dadeeadce840caf0c6cacac8e640dac2f60731b6044820152606401610874565b6007546001600160a01b0390811690831603611ded575050565b60125481611e10846001600160a01b031660009081526020819052604090205490565b611e1a91906120e5565b1115610c4a5760405162461bcd60e51b815260206004820152601860248201527f4d617820686f6c64696e67206578636565646564206d617800000000000000006044820152606401610874565b816001600160a01b03166108fc82604051600060405180830381858888f193505050503d8060008114611eb7576040519150601f19603f3d011682016040523d82523d6000602084013e611ebc565b606091505b5050505050565b600060208083528351808285015260005b81811015611ef057858101830151858201604001528201611ed4565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b3557600080fd5b60008060408385031215611f3957600080fd5b8235611f4481611f11565b946020939093013593505050565b600060208284031215611f6457600080fd5b8135610fc981611f11565b600060208284031215611f8157600080fd5b5035919050565b600080600060608486031215611f9d57600080fd5b8335611fa881611f11565b92506020840135611fb881611f11565b929592945050506040919091013590565b60008060408385031215611fdc57600080fd5b50508035926020909101359150565b8015158114610b3557600080fd5b6000806040838503121561200c57600080fd5b823561201781611f11565b9150602083013561202781611feb565b809150509250929050565b6000806040838503121561204557600080fd5b823561205081611f11565b9150602083013561202781611f11565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c908216806120a957607f821691505b6020821081036120c957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610985576109856120cf565b60006020828403121561210a57600080fd5b5051919050565b60006020828403121561212357600080fd5b8151610fc981611feb565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8082028115828204841417610985576109856120cf565b6000826121ea57634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610985576109856120cf565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561222a57600080fd5b8151610fc981611f11565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122855784516001600160a01b031683529383019391830191600101612260565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220e826665b6c4a61a391594527ac7f5cbe3b53043e2cb36e0dd3b3afd94e03257e64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000002158cb89f19c02b486b80349b5de318f45d79955
-----Decoded View---------------
Arg [0] : router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : operator (address): 0x2158cb89f19c02B486B80349b5DE318F45D79955
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000002158cb89f19c02b486b80349b5de318f45d79955
Deployed Bytecode Sourcemap
30081:9660:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32704:158;;;;;;;;;;;;;:::i;:::-;;30591:28;;;;;;;;;;-1:-1:-1;30591:28:0;;;;;;;;;;;179:14:1;;172:22;154:41;;142:2;127:18;30591:28:0;;;;;;;;6413:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8771:201::-;;;;;;;;;;-1:-1:-1;8771:201:0;;;;;:::i;:::-;;:::i;30194:41::-;;;;;;;;;;-1:-1:-1;30194:41:0;;;;-1:-1:-1;;;;;30194:41:0;;;;;;-1:-1:-1;;;;;1406:32:1;;;1388:51;;1376:2;1361:18;30194:41:0;1215:230:1;34396:193:0;;;;;;;;;;-1:-1:-1;34396:193:0;;;;;:::i;:::-;;:::i;7536:108::-;;;;;;;;;;-1:-1:-1;7624:12:0;;7536:108;;;1848:25:1;;;1836:2;1821:18;7536:108:0;1702:177:1;38036:205:0;;;;;;;;;;-1:-1:-1;38036:205:0;;;;;:::i;:::-;;:::i;9553:295::-;;;;;;;;;;-1:-1:-1;9553:295:0;;;;;:::i;:::-;;:::i;31172:22::-;;;;;;;;;;;;;;;;7377:93;;;;;;;;;;-1:-1:-1;7377:93:0;;7460:2;2672:36:1;;2660:2;2645:18;7377:93:0;2530:184:1;31262:25:0;;;;;;;;;;;;;;;;10258:238;;;;;;;;;;-1:-1:-1;10258:238:0;;;;;:::i;:::-;;:::i;17637:91::-;;;;;;;;;;-1:-1:-1;17637:91:0;;;;;:::i;:::-;;:::i;31201:21::-;;;;;;;;;;;;;;;;30242:29;;;;;;;;;;-1:-1:-1;30242:29:0;;;;-1:-1:-1;;;;;30242:29:0;;;34598:126;;;;;;;;;;-1:-1:-1;34598:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;34688:28:0;34664:4;34688:28;;;:19;:28;;;;;;;;;34598:126;34733:308;;;;;;;;;;-1:-1:-1;34733:308:0;;;;;:::i;:::-;;:::i;7708:127::-;;;;;;;;;;-1:-1:-1;7708:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;7809:18:0;7782:7;7809:18;;;;;;;;;;;;7708:127;19953:103;;;;;;;;;;;;;:::i;30444:30::-;;;;;;;;;;-1:-1:-1;30444:30:0;;;;-1:-1:-1;;;;;30444:30:0;;;18047:164;;;;;;;;;;-1:-1:-1;18047:164:0;;;;;:::i;:::-;;:::i;33388:131::-;;;;;;;;;;-1:-1:-1;33388:131:0;;;;;:::i;:::-;;:::i;31229:26::-;;;;;;;;;;;;;;;;19303:87;;;;;;;;;;-1:-1:-1;19376:6:0;;-1:-1:-1;;;;;19376:6:0;19303:87;;6633:104;;;;;;;;;;;;;:::i;33528:245::-;;;;;;;;;;-1:-1:-1;33528:245:0;;;;;:::i;:::-;;:::i;39018:106::-;;;;;;;;;;-1:-1:-1;39018:106:0;;;;;:::i;:::-;;:::i;30481:35::-;;;;;;;;;;;;;;;;39133:103;;;;;;;;;;-1:-1:-1;39133:103:0;;;;;:::i;:::-;;:::i;11000:437::-;;;;;;;;;;-1:-1:-1;11000:437:0;;;;;:::i;:::-;;:::i;8042:193::-;;;;;;;;;;-1:-1:-1;8042:193:0;;;;;:::i;:::-;;:::i;31300:40::-;;;;;;;;;;-1:-1:-1;31300:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;37876:151;;;;;;;;;;-1:-1:-1;37876:151:0;;;;;:::i;:::-;;:::i;30687:57::-;;;;;;;;;;-1:-1:-1;30687:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;35050:306;;;;;;;;;;-1:-1:-1;35050:306:0;;;;;:::i;:::-;;:::i;31347:43::-;;;;;;;;;;-1:-1:-1;31347:43:0;;;;;;;;8299:151;;;;;;;;;;-1:-1:-1;8299:151:0;;;;;:::i;:::-;;:::i;30551:33::-;;;;;;;;;;;;;;;;39245:243;;;;;;;;;;-1:-1:-1;39245:243:0;;;;;:::i;:::-;;:::i;34137:250::-;;;;;;;;;;-1:-1:-1;34137:250:0;;;;;:::i;:::-;;:::i;39497:119::-;;;;;;;;;;;;;:::i;39625:110::-;;;;;;;;;;-1:-1:-1;39625:110:0;;;;;:::i;:::-;;:::i;20212:201::-;;;;;;;;;;-1:-1:-1;20212:201:0;;;;;:::i;:::-;;:::i;32871:366::-;;;;;;;;;;-1:-1:-1;32871:366:0;;;;;:::i;:::-;;:::i;32704:158::-;32597:10;32586:7;19376:6;;-1:-1:-1;;;;;19376:6:0;;19303:87;32586:7;-1:-1:-1;;;;;32586:21:0;;:54;;;-1:-1:-1;32611:15:0;;-1:-1:-1;;;;;32611:15:0;32630:10;32611:29;32586:54;32578:99;;;;-1:-1:-1;;;32578:99:0;;;;;;;:::i;:::-;;;;;;;;;32766:16:::1;::::0;::::1;;:25;32758:62;;;::::0;-1:-1:-1;;;32758:62:0;;4646:2:1;32758:62:0::1;::::0;::::1;4628:21:1::0;4685:2;4665:18;;;4658:30;4724:26;4704:18;;;4697:54;4768:18;;32758:62:0::1;4444:348:1::0;32758:62:0::1;32831:16;:23:::0;;-1:-1:-1;;32831:23:0::1;32850:4;32831:23;::::0;;32704:158::o;6413:100::-;6467:13;6500:5;6493:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6413:100;:::o;8771:201::-;8854:4;950:10;8910:32;950:10;8926:7;8935:6;8910:8;:32::i;:::-;8960:4;8953:11;;;8771:201;;;;;:::o;34396:193::-;32597:10;32586:7;19376:6;;-1:-1:-1;;;;;19376:6:0;;19303:87;32586:7;-1:-1:-1;;;;;32586:21:0;;:54;;;-1:-1:-1;32611:15:0;;-1:-1:-1;;;;;32611:15:0;32630:10;32611:29;32586:54;32578:99;;;;-1:-1:-1;;;32578:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34477:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;34469:65;;;::::0;-1:-1:-1;;;34469:65:0;;5384:2:1;34469:65:0::1;::::0;::::1;5366:21:1::0;5423:2;5403:18;;;5396:30;5462:26;5442:18;;;5435:54;5506:18;;34469:65:0::1;5182:348:1::0;34469:65:0::1;-1:-1:-1::0;;;;;34545:28:0::1;34576:5;34545:28:::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;34545:36:0::1;::::0;;34396:193::o;38036:205::-;19188:13;:11;:13::i;:::-;38134:1:::1;38122:9;:13;38114:33;;;::::0;-1:-1:-1;;;38114:33:0;;5737:2:1;38114:33:0::1;::::0;::::1;5719:21:1::0;5776:1;5756:18;;;5749:29;-1:-1:-1;;;5794:18:1;;;5787:37;5841:18;;38114:33:0::1;5535:330:1::0;38114:33:0::1;38179:2;38166:9;:15;;38158:36;;;::::0;-1:-1:-1;;;38158:36:0;;6072:2:1;38158:36:0::1;::::0;::::1;6054:21:1::0;6111:1;6091:18;;;6084:29;-1:-1:-1;;;6129:18:1;;;6122:38;6177:18;;38158:36:0::1;5870:331:1::0;38158:36:0::1;38205:16;:28:::0;38036:205::o;9553:295::-;9684:4;950:10;9742:38;9758:4;950:10;9773:6;9742:15;:38::i;:::-;9791:27;9801:4;9807:2;9811:6;9791:9;:27::i;:::-;-1:-1:-1;9836:4:0;;9553:295;-1:-1:-1;;;;9553:295:0:o;10258:238::-;10346:4;950:10;10402:64;950:10;10418:7;10455:10;10427:25;950:10;10418:7;10427:9;:25::i;:::-;:38;;;;:::i;:::-;10402:8;:64::i;17637:91::-;17693:27;950:10;17713:6;17693:5;:27::i;:::-;17637:91;:::o;34733:308::-;19188:13;:11;:13::i;:::-;34838:1:::1;34826:8;:13;;34818:51;;;::::0;-1:-1:-1;;;34818:51:0;;6670:2:1;34818:51:0::1;::::0;::::1;6652:21:1::0;6709:2;6689:18;;;6682:30;-1:-1:-1;;;6728:18:1;;;6721:55;6793:18;;34818:51:0::1;6468:349:1::0;34818:51:0::1;34899:1;34888:7;:12;;34880:50;;;::::0;-1:-1:-1;;;34880:50:0;;6670:2:1;34880:50:0::1;::::0;::::1;6652:21:1::0;6709:2;6689:18;;;6682:30;-1:-1:-1;;;6728:18:1;;;6721:55;6793:18;;34880:50:0::1;6468:349:1::0;34880:50:0::1;34941:7;:18:::0;;;34970:6:::1;:16:::0;;;35005:28:::1;::::0;;6996:25:1;;;7052:2;7037:18;;7030:34;;;35005:28:0::1;::::0;6969:18:1;35005:28:0::1;;;;;;;34733:308:::0;;:::o;19953:103::-;19188:13;:11;:13::i;:::-;20018:30:::1;20045:1;20018:18;:30::i;:::-;19953:103::o:0;18047:164::-;18124:46;18140:7;950:10;18163:6;18124:15;:46::i;:::-;18181:22;18187:7;18196:6;18181:5;:22::i;:::-;18047:164;;:::o;33388:131::-;32597:10;32586:7;19376:6;;-1:-1:-1;;;;;19376:6:0;;19303:87;32586:7;-1:-1:-1;;;;;32586:21:0;;:54;;;-1:-1:-1;32611:15:0;;-1:-1:-1;;;;;32611:15:0;32630:10;32611:29;32586:54;32578:99;;;;-1:-1:-1;;;32578:99:0;;;;;;;:::i;:::-;33469:42:::1;33485:5;33492:10;33504:6;33469:15;:42::i;6633:104::-:0;6689:13;6722:7;6715:14;;;;;:::i;33528:245::-;19188:13;:11;:13::i;:::-;33635::::1;::::0;-1:-1:-1;;;;;33635:13:0;;::::1;33627:21:::0;;::::1;::::0;33619:91:::1;;;::::0;-1:-1:-1;;;33619:91:0;;7277:2:1;33619:91:0::1;::::0;::::1;7259:21:1::0;7316:2;7296:18;;;7289:30;7355:34;7335:18;;;7328:62;7426:27;7406:18;;;7399:55;7471:19;;33619:91:0::1;7075:421:1::0;33619:91:0::1;33724:41;33753:4;33759:5;33724:28;:41::i;39018:106::-:0;19188:13;:11;:13::i;:::-;39092:10:::1;:24:::0;39018:106::o;39133:103::-;19188:13;:11;:13::i;:::-;-1:-1:-1;;;;;39206:13:0;;;::::1;;::::0;;;:8:::1;:13;::::0;;;;:22;;-1:-1:-1;;39206:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;39133:103::o;11000:437::-;11093:4;950:10;11093:4;11176:25;950:10;11193:7;11176:9;:25::i;:::-;11149:52;;11240:15;11220:16;:35;;11212:85;;;;-1:-1:-1;;;11212:85:0;;7703:2:1;11212:85:0;;;7685:21:1;7742:2;7722:18;;;7715:30;7781:34;7761:18;;;7754:62;-1:-1:-1;;;7832:18:1;;;7825:35;7877:19;;11212:85:0;7501:401:1;11212:85:0;11333:60;11342:5;11349:7;11377:15;11358:16;:34;11333:8;:60::i;8042:193::-;8121:4;950:10;8177:28;950:10;8194:2;8198:6;8177:9;:28::i;37876:151::-;19188:13;:11;:13::i;:::-;37976:1:::1;37964:9;:13;37956:22;;;::::0;::::1;;37989:18;:30:::0;37876:151::o;35050:306::-;35149:15;;-1:-1:-1;;;;;35149:15:0;35135:10;:29;:68;;;;-1:-1:-1;35188:15:0;;-1:-1:-1;;;;;35168:35:0;;;35188:15;;35168:35;;35135:68;35127:121;;;;-1:-1:-1;;;35127:121:0;;8109:2:1;35127:121:0;;;8091:21:1;8148:2;8128:18;;;8121:30;8187:34;8167:18;;;8160:62;-1:-1:-1;;;8238:18:1;;;8231:38;8286:19;;35127:121:0;7907:404:1;35127:121:0;35259:15;:34;;-1:-1:-1;;;;;;35259:34:0;-1:-1:-1;;;;;35259:34:0;;;;;;;;35309:39;;1388:51:1;;;35309:39:0;;1376:2:1;1361:18;35309:39:0;;;;;;;35050:306;:::o;8299:151::-;-1:-1:-1;;;;;8415:18:0;;;8388:7;8415:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;8299:151::o;39245:243::-;39320:4;39355:7;19376:6;;-1:-1:-1;;;;;19376:6:0;;19303:87;39355:7;-1:-1:-1;;;;;39347:15:0;:4;-1:-1:-1;;;;;39347:15:0;;:42;;;-1:-1:-1;39374:15:0;;-1:-1:-1;;;;;39366:23:0;;;39374:15;;39366:23;39347:42;:67;;;-1:-1:-1;39399:15:0;;-1:-1:-1;;;;;39393:21:0;;;39399:15;;39393:21;39347:67;:84;;;-1:-1:-1;19376:6:0;;-1:-1:-1;;;;;39418:13:0;;;19376:6;;39418:13;39347:84;:109;;;-1:-1:-1;;;;;;39435:21:0;;39451:4;39435:21;39347:109;:132;;;-1:-1:-1;;;;;;39460:19:0;;39474:4;39460:19;39347:132;39339:141;39245:243;-1:-1:-1;;;39245:243:0:o;34137:250::-;32597:10;32586:7;19376:6;;-1:-1:-1;;;;;19376:6:0;;19303:87;32586:7;-1:-1:-1;;;;;32586:21:0;;:54;;;-1:-1:-1;32611:15:0;;-1:-1:-1;;;;;32611:15:0;32630:10;32611:29;32586:54;32578:99;;;;-1:-1:-1;;;32578:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34221:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;34220:29;34212:78;;;::::0;-1:-1:-1;;;34212:78:0;;8518:2:1;34212:78:0::1;::::0;::::1;8500:21:1::0;8557:2;8537:18;;;8530:30;8596:34;8576:18;;;8569:62;-1:-1:-1;;;8647:18:1;;;8640:34;8691:19;;34212:78:0::1;8316:400:1::0;34212:78:0::1;-1:-1:-1::0;;;;;34301:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:35;;-1:-1:-1;;34301:35:0::1;34332:4;34301:35;::::0;;34355:24;::::1;::::0;34301:28;34355:24:::1;34137:250:::0;:::o;39497:119::-;19188:13;:11;:13::i;:::-;39570:31:::1;:38:::0;;-1:-1:-1;;39570:38:0::1;39604:4;39570:38;::::0;;39497:119::o;39625:110::-;19188:13;:11;:13::i;:::-;39701:11:::1;:26:::0;39625:110::o;20212:201::-;19188:13;:11;:13::i;:::-;-1:-1:-1;;;;;20301:22:0;::::1;20293:73;;;::::0;-1:-1:-1;;;20293:73:0;;8923:2:1;20293:73:0::1;::::0;::::1;8905:21:1::0;8962:2;8942:18;;;8935:30;9001:34;8981:18;;;8974:62;-1:-1:-1;;;9052:18:1;;;9045:36;9098:19;;20293:73:0::1;8721:402:1::0;20293:73:0::1;20377:28;20396:8;20377:18;:28::i;32871:366::-:0;32597:10;32586:7;19376:6;;-1:-1:-1;;;;;19376:6:0;;19303:87;32586:7;-1:-1:-1;;;;;32586:21:0;;:54;;;-1:-1:-1;32611:15:0;;-1:-1:-1;;;;;32611:15:0;32630:10;32611:29;32586:54;32578:99;;;;-1:-1:-1;;;32578:99:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32949:21:0;::::1;32945:126;;32987:51;::::0;32995:10:::1;::::0;33016:21:::1;32987:51:::0;::::1;;;::::0;::::1;::::0;;;33016:21;32995:10;32987:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;32945:126;33143:35;::::0;-1:-1:-1;;;33143:35:0;;33172:4:::1;33143:35;::::0;::::1;1388:51:1::0;33108:5:0;;33081:17:::1;::::0;-1:-1:-1;;;;;33143:20:0;::::1;::::0;::::1;::::0;1361:18:1;;33143:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33189:40;::::0;-1:-1:-1;;;33189:40:0;;33209:10:::1;33189:40;::::0;::::1;9491:51:1::0;9558:18;;;9551:34;;;33125:53:0;;-1:-1:-1;;;;;;33189:19:0;::::1;::::0;::::1;::::0;9464:18:1;;33189:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32934:303;;32871:366:::0;:::o;14641:381::-;-1:-1:-1;;;;;14777:19:0;;14769:68;;;;-1:-1:-1;;;14769:68:0;;10048:2:1;14769:68:0;;;10030:21:1;10087:2;10067:18;;;10060:30;10126:34;10106:18;;;10099:62;-1:-1:-1;;;10177:18:1;;;10170:34;10221:19;;14769:68:0;9846:400:1;14769:68:0;-1:-1:-1;;;;;14856:21:0;;14848:68;;;;-1:-1:-1;;;14848:68:0;;10453:2:1;14848:68:0;;;10435:21:1;10492:2;10472:18;;;10465:30;10531:34;10511:18;;;10504:62;-1:-1:-1;;;10582:18:1;;;10575:32;10624:19;;14848:68:0;10251:398:1;14848:68:0;-1:-1:-1;;;;;14930:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14982:32;;1848:25:1;;;14982:32:0;;1821:18:1;14982:32:0;;;;;;;;14641:381;;;:::o;19469:132::-;19376:6;;-1:-1:-1;;;;;19376:6:0;950:10;19533:23;19525:68;;;;-1:-1:-1;;;19525:68:0;;;;;;;:::i;15314:453::-;15449:24;15476:25;15486:5;15493:7;15476:9;:25::i;:::-;15449:52;;-1:-1:-1;;15516:16:0;:37;15512:248;;15598:6;15578:16;:26;;15570:68;;;;-1:-1:-1;;;15570:68:0;;10856:2:1;15570:68:0;;;10838:21:1;10895:2;10875:18;;;10868:30;10934:31;10914:18;;;10907:59;10983:18;;15570:68:0;10654:353:1;15570:68:0;15682:51;15691:5;15698:7;15726:6;15707:16;:25;15682:8;:51::i;35365:1812::-;-1:-1:-1;;;;;35497:18:0;;35489:68;;;;-1:-1:-1;;;35489:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35576:16:0;;35568:64;;;;-1:-1:-1;;;35568:64:0;;;;;;;:::i;:::-;35651:8;;;;35646:66;;35676:24;35683:4;35689:2;35693:6;35676;:24::i;:::-;35740:6;;35773:7;;-1:-1:-1;;;;;35799:14:0;;35725:12;35799:14;;;:8;:14;;;;;;;;35798:15;:32;;;;-1:-1:-1;;;;;;35818:12:0;;;;;;:8;:12;;;;;;;;35817:13;35798:32;35794:111;;;35855:16;;;;35847:46;;;;-1:-1:-1;;;35847:46:0;;12024:2:1;35847:46:0;;;12006:21:1;12063:2;12043:18;;;12036:30;-1:-1:-1;;;12082:18:1;;;12075:47;12139:18;;35847:46:0;11822:341:1;35847:46:0;35922:6;35932:1;35922:11;35918:50;;35950:7;;35365:1812;;;:::o;35918:50::-;35997:8;;-1:-1:-1;;;;;36023:25:0;;35981:12;36023:25;;;:19;:25;;;;;;35997:8;;;;35996:9;;36023:25;;:52;;-1:-1:-1;;;;;;36052:23:0;;;;;;:19;:23;;;;;;;;36023:52;36019:100;;;-1:-1:-1;36102:5:0;36019:100;36167:4;36132:14;7809:18;;;;;;;;;;;36132:41;;36187:12;36212:18;;36202:6;:28;;:42;;;;;36243:1;36234:6;:10;36202:42;:78;;;;-1:-1:-1;;;;;;36249:31:0;;;;;;:25;:31;;;;;;;;36248:32;36202:78;:89;;;;;36284:7;36202:89;36187:104;;36306:7;:33;;;;-1:-1:-1;36331:8:0;;;;36330:9;36306:33;36302:361;;;36356:8;:15;;-1:-1:-1;;36356:15:0;36367:4;36356:15;;;36418:13;;-1:-1:-1;;;;;36418:13:0;-1:-1:-1;7809:18:0;;;;;;;;;;;36386:46;;36493:3;36474:16;;36460:11;:30;;;;:::i;:::-;:36;;;;:::i;:::-;36451:6;:45;36447:131;;;36559:3;36540:16;;36526:11;:30;;;;:::i;:::-;:36;;;;:::i;:::-;36517:45;;36447:131;36592:28;36613:6;36592:20;:28::i;:::-;-1:-1:-1;36635:8:0;:16;;-1:-1:-1;;36635:16:0;;;36302:361;36680:7;:30;;;;-1:-1:-1;36697:13:0;;-1:-1:-1;;;;;36691:19:0;;;36697:13;;36691:19;36680:30;:46;;;;;36725:1;36714:8;:12;36680:46;36676:447;;;36743:12;36780:3;36759:17;36768:8;36759:6;:17;:::i;:::-;36758:25;;;;:::i;:::-;36743:40;-1:-1:-1;36807:13:0;36743:40;36807:6;:13;:::i;:::-;36798:22;;36838:42;36854:4;36868;36875;36838:15;:42::i;:::-;36728:164;36676:447;;;36911:7;:32;;;;-1:-1:-1;36930:13:0;;-1:-1:-1;;;;;36922:21:0;;;36930:13;;36922:21;36911:32;:47;;;;;36957:1;36947:7;:11;36911:47;36907:216;;;36975:12;37011:3;36991:16;37000:7;36991:6;:16;:::i;:::-;36990:24;;;;:::i;:::-;36975:39;-1:-1:-1;37038:13:0;36975:39;37038:6;:13;:::i;:::-;37029:22;;37069:42;37085:4;37099;37106;37069:15;:42::i;:::-;36960:163;36907:216;37136:33;37152:4;37158:2;37162:6;37136:15;:33::i;:::-;35478:1699;;;;;35365:1812;;;:::o;13607:595::-;-1:-1:-1;;;;;13691:21:0;;13683:67;;;;-1:-1:-1;;;13683:67:0;;12898:2:1;13683:67:0;;;12880:21:1;12937:2;12917:18;;;12910:30;12976:34;12956:18;;;12949:62;-1:-1:-1;;;13027:18:1;;;13020:31;13068:19;;13683:67:0;12696:397:1;13683:67:0;-1:-1:-1;;;;;13852:18:0;;13827:22;13852:18;;;;;;;;;;;13889:24;;;;13881:71;;;;-1:-1:-1;;;13881:71:0;;13300:2:1;13881:71:0;;;13282:21:1;13339:2;13319:18;;;13312:30;13378:34;13358:18;;;13351:62;-1:-1:-1;;;13429:18:1;;;13422:32;13471:19;;13881:71:0;13098:398:1;13881:71:0;-1:-1:-1;;;;;13988:18:0;;:9;:18;;;;;;;;;;14009:23;;;13988:44;;14054:12;:22;;14026:6;;13988:9;14054:22;;14026:6;;14054:22;:::i;:::-;;;;-1:-1:-1;;14095:37:0;;1848:25:1;;;14121:1:0;;-1:-1:-1;;;;;14095:37:0;;;;;1836:2:1;1821:18;14095:37:0;1702:177:1;14146:48:0;13672:530;13607:595;;:::o;20574:191::-;20667:6;;;-1:-1:-1;;;;;20684:17:0;;;-1:-1:-1;;;;;;20684:17:0;;;;;;;20717:40;;20667:6;;;20684:17;20667:6;;20717:40;;20648:16;;20717:40;20637:128;20574:191;:::o;11908:675::-;-1:-1:-1;;;;;12039:18:0;;12031:68;;;;-1:-1:-1;;;12031:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12118:16:0;;12110:64;;;;-1:-1:-1;;;12110:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12262:15:0;;12240:19;12262:15;;;;;;;;;;;12296:21;;;;12288:72;;;;-1:-1:-1;;;12288:72:0;;13703:2:1;12288:72:0;;;13685:21:1;13742:2;13722:18;;;13715:30;13781:34;13761:18;;;13754:62;-1:-1:-1;;;13832:18:1;;;13825:36;13878:19;;12288:72:0;13501:402:1;12288:72:0;-1:-1:-1;;;;;12396:15:0;;;:9;:15;;;;;;;;;;;12414:20;;;12396:38;;12456:13;;;;;;;;:23;;12428:6;;12396:9;12456:23;;12428:6;;12456:23;:::i;:::-;;;;;;;;12513:2;-1:-1:-1;;;;;12498:26:0;12507:4;-1:-1:-1;;;;;12498:26:0;;12517:6;12498:26;;;;1848:25:1;;1836:2;1821:18;;1702:177;12498:26:0;;;;;;;;12538:37;13607:595;33782:309;-1:-1:-1;;;;;33873:31:0;;;;;;:25;:31;;;;;;:40;;;:31;;;;:40;;;33865:109;;;;-1:-1:-1;;;33865:109:0;;14110:2:1;33865:109:0;;;14092:21:1;14149:2;14129:18;;;14122:30;14188:34;14168:18;;;14161:62;14259:26;14239:18;;;14232:54;14303:19;;33865:109:0;13908:420:1;33865:109:0;-1:-1:-1;;;;;33985:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;33985:39:0;;;;;;;;;;34043:40;;33985:39;;:31;34043:40;;;33782:309;;:::o;38250:360::-;38370:31;;;;38365:238;;38426:28;38445:4;38451:2;38426:18;:28::i;:::-;38425:29;:46;;;;-1:-1:-1;;;;;;38459:12:0;;;;;;:8;:12;;;;;;;;38458:13;38425:46;38421:171;;;38492:29;38510:2;38514:6;38492:17;:29::i;:::-;38543:33;38565:2;38569:6;38543:21;:33::i;37214:653::-;37311:16;;;37325:1;37311:16;;;;;;;;37287:21;;37311:16;;;;;;;;;;-1:-1:-1;37311:16:0;37287:40;;37356:4;37338;37343:1;37338:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37338:23:0;;;:7;;;;;;;;;;:23;;;;37382:15;;:22;;;-1:-1:-1;;;37382:22:0;;;;:15;;;;;:20;;:22;;;;;37338:7;;37382:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37372:4;37377:1;37372:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;37372:32:0;;;:7;;;;;;;;;;;:32;37425:21;:26;37417:35;;;;;;37467:15;;:186;;-1:-1:-1;;;37467:186:0;;-1:-1:-1;;;;;37467:15:0;;;;:66;;:186;;37548:11;;37467:15;;37590:4;;37617;;37637:15;;37467:186;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37463:221;37766:15;;37718:21;;37750:45;;-1:-1:-1;;;;;37766:15:0;37718:21;37750:7;:45::i;:::-;37814;;;6996:25:1;;;7052:2;7037:18;;7030:34;;;37814:45:0;;6969:18:1;37814:45:0;;;;;;;37273:594;;37214:653;:::o;38619:143::-;38717:11;;38707:6;:21;;38699:52;;;;-1:-1:-1;;;38699:52:0;;16040:2:1;38699:52:0;;;16022:21:1;16079:2;16059:18;;;16052:30;-1:-1:-1;;;16098:18:1;;;16091:48;16156:18;;38699:52:0;15838:342:1;38771:239:0;38865:13;;-1:-1:-1;;;;;38865:13:0;;;38859:19;;;;38855:58;;38771:239;;:::o;38855:58::-;38960:10;;38950:6;38934:13;38944:2;-1:-1:-1;;;;;7809:18:0;7782:7;7809:18;;;;;;;;;;;;7708:127;38934:13;:22;;;;:::i;:::-;:36;;38926:73;;;;-1:-1:-1;;;38926:73:0;;16387:2:1;38926:73:0;;;16369:21:1;16426:2;16406:18;;;16399:30;16465:26;16445:18;;;16438:54;16509:18;;38926:73:0;16185:348:1;33246:134:0;33326:9;-1:-1:-1;;;;;33326:14:0;33347:4;33361:6;33326:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33246:134;;:::o;206:548:1:-;318:4;347:2;376;365:9;358:21;408:6;402:13;451:6;446:2;435:9;431:18;424:34;476:1;486:140;500:6;497:1;494:13;486:140;;;595:14;;;591:23;;585:30;561:17;;;580:2;557:26;550:66;515:10;;486:140;;;490:3;675:1;670:2;661:6;650:9;646:22;642:31;635:42;745:2;738;734:7;729:2;721:6;717:15;713:29;702:9;698:45;694:54;686:62;;;;206:548;;;;:::o;759:131::-;-1:-1:-1;;;;;834:31:1;;824:42;;814:70;;880:1;877;870:12;895:315;963:6;971;1024:2;1012:9;1003:7;999:23;995:32;992:52;;;1040:1;1037;1030:12;992:52;1079:9;1066:23;1098:31;1123:5;1098:31;:::i;:::-;1148:5;1200:2;1185:18;;;;1172:32;;-1:-1:-1;;;895:315:1:o;1450:247::-;1509:6;1562:2;1550:9;1541:7;1537:23;1533:32;1530:52;;;1578:1;1575;1568:12;1530:52;1617:9;1604:23;1636:31;1661:5;1636:31;:::i;1884:180::-;1943:6;1996:2;1984:9;1975:7;1971:23;1967:32;1964:52;;;2012:1;2009;2002:12;1964:52;-1:-1:-1;2035:23:1;;1884:180;-1:-1:-1;1884:180:1:o;2069:456::-;2146:6;2154;2162;2215:2;2203:9;2194:7;2190:23;2186:32;2183:52;;;2231:1;2228;2221:12;2183:52;2270:9;2257:23;2289:31;2314:5;2289:31;:::i;:::-;2339:5;-1:-1:-1;2396:2:1;2381:18;;2368:32;2409:33;2368:32;2409:33;:::i;:::-;2069:456;;2461:7;;-1:-1:-1;;;2515:2:1;2500:18;;;;2487:32;;2069:456::o;2927:248::-;2995:6;3003;3056:2;3044:9;3035:7;3031:23;3027:32;3024:52;;;3072:1;3069;3062:12;3024:52;-1:-1:-1;;3095:23:1;;;3165:2;3150:18;;;3137:32;;-1:-1:-1;2927:248:1:o;3180:118::-;3266:5;3259:13;3252:21;3245:5;3242:32;3232:60;;3288:1;3285;3278:12;3303:382;3368:6;3376;3429:2;3417:9;3408:7;3404:23;3400:32;3397:52;;;3445:1;3442;3435:12;3397:52;3484:9;3471:23;3503:31;3528:5;3503:31;:::i;:::-;3553:5;-1:-1:-1;3610:2:1;3595:18;;3582:32;3623:30;3582:32;3623:30;:::i;:::-;3672:7;3662:17;;;3303:382;;;;;:::o;3690:388::-;3758:6;3766;3819:2;3807:9;3798:7;3794:23;3790:32;3787:52;;;3835:1;3832;3825:12;3787:52;3874:9;3861:23;3893:31;3918:5;3893:31;:::i;:::-;3943:5;-1:-1:-1;4000:2:1;3985:18;;3972:32;4013:33;3972:32;4013:33;:::i;4083:356::-;4285:2;4267:21;;;4304:18;;;4297:30;4363:34;4358:2;4343:18;;4336:62;4430:2;4415:18;;4083:356::o;4797:380::-;4876:1;4872:12;;;;4919;;;4940:61;;4994:4;4986:6;4982:17;4972:27;;4940:61;5047:2;5039:6;5036:14;5016:18;5013:38;5010:161;;5093:10;5088:3;5084:20;5081:1;5074:31;5128:4;5125:1;5118:15;5156:4;5153:1;5146:15;5010:161;;4797:380;;;:::o;6206:127::-;6267:10;6262:3;6258:20;6255:1;6248:31;6298:4;6295:1;6288:15;6322:4;6319:1;6312:15;6338:125;6403:9;;;6424:10;;;6421:36;;;6437:18;;:::i;9128:184::-;9198:6;9251:2;9239:9;9230:7;9226:23;9222:32;9219:52;;;9267:1;9264;9257:12;9219:52;-1:-1:-1;9290:16:1;;9128:184;-1:-1:-1;9128:184:1:o;9596:245::-;9663:6;9716:2;9704:9;9695:7;9691:23;9687:32;9684:52;;;9732:1;9729;9722:12;9684:52;9764:9;9758:16;9783:28;9805:5;9783:28;:::i;11012:401::-;11214:2;11196:21;;;11253:2;11233:18;;;11226:30;11292:34;11287:2;11272:18;;11265:62;-1:-1:-1;;;11358:2:1;11343:18;;11336:35;11403:3;11388:19;;11012:401::o;11418:399::-;11620:2;11602:21;;;11659:2;11639:18;;;11632:30;11698:34;11693:2;11678:18;;11671:62;-1:-1:-1;;;11764:2:1;11749:18;;11742:33;11807:3;11792:19;;11418:399::o;12168:168::-;12241:9;;;12272;;12289:15;;;12283:22;;12269:37;12259:71;;12310:18;;:::i;12341:217::-;12381:1;12407;12397:132;;12451:10;12446:3;12442:20;12439:1;12432:31;12486:4;12483:1;12476:15;12514:4;12511:1;12504:15;12397:132;-1:-1:-1;12543:9:1;;12341:217::o;12563:128::-;12630:9;;;12651:11;;;12648:37;;;12665:18;;:::i;14465:127::-;14526:10;14521:3;14517:20;14514:1;14507:31;14557:4;14554:1;14547:15;14581:4;14578:1;14571:15;14597:251;14667:6;14720:2;14708:9;14699:7;14695:23;14691:32;14688:52;;;14736:1;14733;14726:12;14688:52;14768:9;14762:16;14787:31;14812:5;14787:31;:::i;14853:980::-;15115:4;15163:3;15152:9;15148:19;15194:6;15183:9;15176:25;15220:2;15258:6;15253:2;15242:9;15238:18;15231:34;15301:3;15296:2;15285:9;15281:18;15274:31;15325:6;15360;15354:13;15391:6;15383;15376:22;15429:3;15418:9;15414:19;15407:26;;15468:2;15460:6;15456:15;15442:29;;15489:1;15499:195;15513:6;15510:1;15507:13;15499:195;;;15578:13;;-1:-1:-1;;;;;15574:39:1;15562:52;;15669:15;;;;15634:12;;;;15610:1;15528:9;15499:195;;;-1:-1:-1;;;;;;;15750:32:1;;;;15745:2;15730:18;;15723:60;-1:-1:-1;;;15814:3:1;15799:19;15792:35;15711:3;14853:980;-1:-1:-1;;;14853:980:1:o
Swarm Source
ipfs://e826665b6c4a61a391594527ac7f5cbe3b53043e2cb36e0dd3b3afd94e03257e
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.