ERC-20
Gambling
Overview
Max Total Supply
967,670,452.699300953469295715 BETS
Holders
397 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (-2.59%)
Onchain Market Cap
$788,844.95
Circulating Supply Market Cap
$0.00
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Betted
Compiler Version
v0.8.22+commit.4fc1097e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-15 */ // SPDX-License-Identifier: Unlicensed // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol pragma solidity >=0.6.2; 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; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @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; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts v4.4.1 (access/Ownable.sol) pragma solidity ^0.8.0; /** * @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 Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @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 `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, 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 `sender` to `recipient` 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 sender, address recipient, uint256 amount ) external returns (bool); /** * @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); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @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); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @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, _allowances[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 = _allowances[owner][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `sender` to `recipient`. * * 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 Spend `amount` form the allowance of `owner` toward `spender`. * * 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 {} } // File: BETS.sol pragma solidity ^0.8.9; error InvalidTransfer(address from, address to); error InvalidConfiguration(); contract Betted is ERC20, Ownable { mapping (address => bool) public _isExcludedFromFees; mapping (address => bool) public _isBlacklisted; mapping (address => bool) public _isExcludedFromBlacklist; mapping (address => uint256) public _holderLastTxBlock; mapping (address => bool) public _isAMM; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public marketingWallet; address public treasuryWallet; bool public swapping; bool public swapEnabled = true; bool public feesEnabled = true; uint256 public burnBuyFee = 100; uint256 public treasuryBuyFee = 100; uint256 public marketingBuyFee = 300; uint256 public totalBuyFees = 500; uint256 public burnSellFee = 100; uint256 public treasurySellFee = 100; uint256 public marketingSellFee = 300; uint256 public totalSellFees = 500; uint256 public treasuryTokens; uint256 public marketingTokens; uint256 public swapTokensAtAmount = 500_000 * 10**18; //0.05% of total supply event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); event FeesEnabledUpdated(bool enabled); constructor(address _marketingWallet, address _treasuryWallet) ERC20("Betted", "BETS") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); _isAMM[uniswapV2Pair] = true; marketingWallet = payable(_marketingWallet); treasuryWallet = payable(_treasuryWallet); _isExcludedFromFees[owner()] = true; _isExcludedFromFees[address(this)] = true; _isExcludedFromFees[address(0xdead)] = true; _isExcludedFromBlacklist[owner()] = true; _isExcludedFromBlacklist[uniswapV2Pair] = true; _isExcludedFromBlacklist[marketingWallet] = true; _isExcludedFromBlacklist[treasuryWallet] = true; _isExcludedFromBlacklist[address(0)] = true; _isExcludedFromBlacklist[address(this)] = true; _mint(owner(), 10**9 * 10**18); } function _transfer( address from, address to, uint256 amount ) internal override { if (_isAMM[from] && _isBlacklisted[tx.origin]) { revert InvalidTransfer(from, to); // Blacklisted addresses are prevented from buying; can always sell. } if(amount == 0) { super._transfer(from, to, 0); return; } if (!swapping) { if (_isAMM[from] || _isAMM[to]) { if (!_isExcludedFromBlacklist[tx.origin] && _holderLastTxBlock[tx.origin] == block.number) { _isBlacklisted[tx.origin] = true; } _holderLastTxBlock[tx.origin] = block.number; } if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if ( canSwap && swapEnabled && !_isAMM[from] ) { swapping = true; _swapAndSend(swapTokensAtAmount); swapping = false; } if (feesEnabled) { uint256 fees; uint256 burnTokens; if (_isAMM[to] && totalSellFees != 0) { //sell fees = amount * totalSellFees / 10000; burnTokens += fees * burnSellFee / totalSellFees; treasuryTokens += fees * treasurySellFee / totalSellFees; marketingTokens += fees * marketingSellFee / totalSellFees; } else if (_isAMM[from] && totalBuyFees != 0) { //buy fees = amount * totalBuyFees / 10000; burnTokens += fees * burnBuyFee / totalBuyFees; treasuryTokens += fees * treasuryBuyFee / totalBuyFees; marketingTokens += fees * marketingBuyFee / totalBuyFees; } if (fees > 0) { amount -= fees; super._transfer(from, address(this), fees); super._burn(address(this), burnTokens); } } } } super._transfer(from, to, amount); } function _swapAndSend(uint256 amountToSwap) internal { uint256 total = treasuryTokens + marketingTokens; uint256 treasuryToSwap = amountToSwap * treasuryTokens / total; uint256 marToSwap = amountToSwap * marketingTokens / total; uint256 tokenAmount = treasuryToSwap + marToSwap; _approve(address(this), address(uniswapV2Router), tokenAmount); address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); uint256 ethBalance = address(this).balance; uint256 marketing = ethBalance * marToSwap / tokenAmount; uint256 treasury = ethBalance - marketing; bool success; (success, ) = address(marketingWallet).call{value: marketing}(""); (success, ) = address(treasuryWallet).call{value: treasury}(""); marketingTokens -= marToSwap; treasuryTokens -= treasuryToSwap; } function removeFromBlacklist(address account) external onlyOwner { _isBlacklisted[account] = false; } function setExcludedFromFees(address account, bool value) public onlyOwner { _isExcludedFromFees[account] = value; } function setExcludedFromBlacklist(address account) public onlyOwner { _isExcludedFromBlacklist[account] = true; } function excludeManyFromFees(address[] memory accounts) public onlyOwner { uint256 len = accounts.length; for (uint256 i = 0; i < len; i++) { _isExcludedFromFees[accounts[i]] = true; } } function setSellFees(uint256 burn, uint256 treasury, uint256 marketing) external onlyOwner { if (burn > burnSellFee || treasury > treasurySellFee || marketing > marketingSellFee) { revert InvalidConfiguration(); } burnSellFee = burn; treasurySellFee = treasury; marketingSellFee = marketing; totalSellFees = burn + treasury + marketing; } function setBuyFees(uint256 burn, uint256 treasury, uint256 marketing) external onlyOwner { if (burn > burnBuyFee || treasury > treasuryBuyFee || marketing > marketingBuyFee) { revert InvalidConfiguration(); } burnBuyFee = burn; treasuryBuyFee = treasury; marketingBuyFee = marketing; totalBuyFees = burn + treasury + marketing; } function airdrop(address[] memory _user, uint256[] memory _amount) external onlyOwner { uint256 len = _user.length; if (len != _amount.length) { revert InvalidConfiguration(); } for (uint256 i = 0; i < len; i++) { super._transfer(_msgSender(), _user[i], _amount[i]); } } function setSwapAtAmount(uint256 amount) external onlyOwner { swapTokensAtAmount = amount; emit MinTokensBeforeSwapUpdated(amount); } function setSwapEnabled(bool _enabled) public onlyOwner { swapEnabled = _enabled; emit SwapEnabledUpdated(_enabled); } function setFeesEnabled(bool _enabled) public onlyOwner { feesEnabled = _enabled; emit FeesEnabledUpdated(_enabled); } function updateMarketingWallet(address newWallet) external onlyOwner { marketingWallet = newWallet; } function updateTreasuryWallet(address newWallet) external onlyOwner { treasuryWallet = newWallet; } function manualSwap() external onlyOwner { uint256 amountToSwap = balanceOf(address(this)) >= swapTokensAtAmount ? swapTokensAtAmount : balanceOf(address(this)); swapping = true; _swapAndSend(amountToSwap); swapping = false; } function burn(uint256 amount) external { super._burn(msg.sender, amount); } function transferOwnership(address newOwner) public override onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _isExcludedFromBlacklist[owner()] = false; _isExcludedFromFees[owner()] = false; _isExcludedFromBlacklist[newOwner] = true; _isExcludedFromFees[newOwner] = true; _transferOwnership(newOwner); } function setAMM(address pair, bool value) public onlyOwner { if (pair == uniswapV2Pair) { revert InvalidConfiguration(); } _isAMM[pair] = value; } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_treasuryWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InvalidConfiguration","type":"error"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"InvalidTransfer","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"FeesEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_holderLastTxBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_user","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":"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":[],"name":"burnBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"excludeManyFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingSellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"treasury","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setExcludedFromBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeesEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"treasury","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"}],"name":"setSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapping","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"treasuryBuyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasurySellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c0604052600c805461ffff60a81b191661010160a81b1790556064600d819055600e81905561012c600f8190556101f4601081905560118390556012929092556013556014556969e10de76676d080000060175534801562000060575f80fd5b5060405162002b8b38038062002b8b8339810160408190526200008391620004f6565b6040518060400160405280600681526020016510995d1d195960d21b815250604051806040016040528060048152602001634245545360e01b8152508160039081620000d09190620005c9565b506004620000df8282620005c9565b505050620000fc620000f66200039b60201b60201c565b6200039f565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b81529051829163c45a01559160048083019260209291908290030181865afa15801562000151573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000177919062000695565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001c3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e9919062000695565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000234573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025a919062000695565b6001600160a01b0390811660a08190525f818152600a602090815260408083208054600160ff199182168117909255600b80546001600160a01b03199081168c8a16178255600c80549091168b8a16178155600580548a1688526006875285882080548516861790553080895286892080548616871790557f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22805486168717905581548b1689526008909752858820805485168617905597875284872080548416851790559054881686528386208054831684179055548716855282852080548216831790557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c78054821683179055928452922080549091169091179055546200039291166b033b2e3c9fd0803ce8000000620003f0565b505050620006de565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166200044b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f8282546200045e9190620006b8565b90915550506001600160a01b0382165f90815260208190526040812080548392906200048c908490620006b8565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b80516001600160a01b0381168114620004f1575f80fd5b919050565b5f806040838503121562000508575f80fd5b6200051383620004da565b91506200052360208401620004da565b90509250929050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200055557607f821691505b6020821081036200057457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620004d557805f5260205f20601f840160051c81016020851015620005a15750805b601f840160051c820191505b81811015620005c2575f8155600101620005ad565b5050505050565b81516001600160401b03811115620005e557620005e56200052c565b620005fd81620005f6845462000540565b846200057a565b602080601f83116001811462000633575f84156200061b5750858301515b5f19600386901b1c1916600185901b1785556200068d565b5f85815260208120601f198616915b82811015620006635788860151825594840194600190910190840162000642565b50858210156200068157878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215620006a6575f80fd5b620006b182620004da565b9392505050565b80820180821115620006d857634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05161246f6200071c5f395f818161052d01526110b401525f81816103ab01528181611a6901528181611ae30152611b99015261246f5ff3fe6080604052600436106102f6575f3560e01c8063715018a611610189578063a9059cbb116100d8578063dd62ed3e11610092578063e2f456051161006d578063e2f456051461093b578063e7f444b314610950578063ed0d213714610965578063f2fde38b1461097a575f80fd5b8063dd62ed3e146108aa578063e01af92c146108ee578063e0bf7fd11461090d575f80fd5b8063a9059cbb146107f8578063a9d3cd8a14610817578063aacebbe314610836578063b9e9370014610855578063bd967b761461086a578063d0a3981414610895575f80fd5b80638b27306d1161014357806395d89b411161011e57806395d89b4114610786578063a457c2d71461079a578063a64e4f8a146107b9578063a901dd92146107d9575f80fd5b80638b27306d146107355780638da5cb5b1461074a57806392f3693914610767575f80fd5b8063715018a61461068b57806375f0a8741461069f578063792df503146106be5780637ae3ff47146106ec5780637e76137714610701578063809d458d14610716575f80fd5b806342966c6811610245578063590ffdce116101ff57806367243482116101da578063672434821461060357806368078952146106225780636ddd17131461063757806370a0823114610657575f80fd5b8063590ffdce146105b05780635eebef6b146105cf5780636402511e146105e4575f80fd5b806342966c68146104de5780634626402b146104fd57806349bd5a5e1461051c57806351bc3c851461054f578063537df3b614610563578063576f9a5414610582575f80fd5b806318160ddd116102b05780632c10508c1161028b5780632c10508c14610470578063313ce56714610485578063373bf3b1146104a057806339509351146104bf575f80fd5b806318160ddd146104055780631cdd3be31461042357806323b872dd14610451575f80fd5b806306fdde0314610301578063095ea7b31461032b5780630d075d9c1461035a5780630f683e901461037b5780631694505e1461039a5780631732cded146103e5575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b50610315610999565b6040516103229190611f2f565b60405180910390f35b348015610336575f80fd5b5061034a610345366004611f8f565b610a29565b6040519015158152602001610322565b348015610365575f80fd5b50610379610374366004611fb9565b610a42565b005b348015610386575f80fd5b50610379610395366004611fb9565b610adc565b3480156103a5575f80fd5b506103cd7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610322565b3480156103f0575f80fd5b50600c5461034a90600160a01b900460ff1681565b348015610410575f80fd5b506002545b604051908152602001610322565b34801561042e575f80fd5b5061034a61043d366004611fe2565b60076020525f908152604090205460ff1681565b34801561045c575f80fd5b5061034a61046b366004612004565b610b6d565b34801561047b575f80fd5b50610415600e5481565b348015610490575f80fd5b5060405160128152602001610322565b3480156104ab575f80fd5b506103796104ba36600461211f565b610b90565b3480156104ca575f80fd5b5061034a6104d9366004611f8f565b610c1b565b3480156104e9575f80fd5b506103796104f8366004612159565b610c59565b348015610508575f80fd5b50600c546103cd906001600160a01b031681565b348015610527575f80fd5b506103cd7f000000000000000000000000000000000000000000000000000000000000000081565b34801561055a575f80fd5b50610379610c66565b34801561056e575f80fd5b5061037961057d366004611fe2565b610cf0565b34801561058d575f80fd5b5061034a61059c366004611fe2565b600a6020525f908152604090205460ff1681565b3480156105bb575f80fd5b506103796105ca366004612184565b610d3a565b3480156105da575f80fd5b5061041560155481565b3480156105ef575f80fd5b506103796105fe366004612159565b610d8e565b34801561060e575f80fd5b5061037961061d3660046121b7565b610df4565b34801561062d575f80fd5b50610415600f5481565b348015610642575f80fd5b50600c5461034a90600160a81b900460ff1681565b348015610662575f80fd5b50610415610671366004611fe2565b6001600160a01b03165f9081526020819052604090205490565b348015610696575f80fd5b50610379610e96565b3480156106aa575f80fd5b50600b546103cd906001600160a01b031681565b3480156106c9575f80fd5b5061034a6106d8366004611fe2565b60086020525f908152604090205460ff1681565b3480156106f7575f80fd5b50610415600d5481565b34801561070c575f80fd5b5061041560115481565b348015610721575f80fd5b50610379610730366004611fe2565b610ecb565b348015610740575f80fd5b5061041560165481565b348015610755575f80fd5b506005546001600160a01b03166103cd565b348015610772575f80fd5b50610379610781366004611fe2565b610f17565b348015610791575f80fd5b50610315610f64565b3480156107a5575f80fd5b5061034a6107b4366004611f8f565b610f73565b3480156107c4575f80fd5b50600c5461034a90600160b01b900460ff1681565b3480156107e4575f80fd5b506103796107f336600461226c565b611004565b348015610803575f80fd5b5061034a610812366004611f8f565b61107b565b348015610822575f80fd5b50610379610831366004612184565b611088565b348015610841575f80fd5b50610379610850366004611fe2565b61112e565b348015610860575f80fd5b5061041560105481565b348015610875575f80fd5b50610415610884366004611fe2565b60096020525f908152604090205481565b3480156108a0575f80fd5b5061041560145481565b3480156108b5575f80fd5b506104156108c4366004612285565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108f9575f80fd5b5061037961090836600461226c565b61117a565b348015610918575f80fd5b5061034a610927366004611fe2565b60066020525f908152604090205460ff1681565b348015610946575f80fd5b5061041560175481565b34801561095b575f80fd5b5061041560135481565b348015610970575f80fd5b5061041560125481565b348015610985575f80fd5b50610379610994366004611fe2565b6111f1565b6060600380546109a8906122bc565b80601f01602080910402602001604051908101604052809291908181526020018280546109d4906122bc565b8015610a1f5780601f106109f657610100808354040283529160200191610a1f565b820191905f5260205f20905b815481529060010190602001808311610a0257829003601f168201915b5050505050905090565b5f33610a36818585611333565b60019150505b92915050565b6005546001600160a01b03163314610a755760405162461bcd60e51b8152600401610a6c906122f4565b60405180910390fd5b600d54831180610a865750600e5482115b80610a925750600f5481115b15610ab05760405163c52a9bd360e01b815260040160405180910390fd5b600d839055600e829055600f81905580610aca838561233d565b610ad4919061233d565b601055505050565b6005546001600160a01b03163314610b065760405162461bcd60e51b8152600401610a6c906122f4565b601154831180610b17575060125482115b80610b23575060135481115b15610b415760405163c52a9bd360e01b815260040160405180910390fd5b60118390556012829055601381905580610b5b838561233d565b610b65919061233d565b601455505050565b5f33610b7a858285611456565b610b858585856114e0565b506001949350505050565b6005546001600160a01b03163314610bba5760405162461bcd60e51b8152600401610a6c906122f4565b80515f5b81811015610c1657600160065f858481518110610bdd57610bdd612350565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610bbe565b505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190610a369082908690610c5490879061233d565b611333565b610c6333826118c0565b50565b6005546001600160a01b03163314610c905760405162461bcd60e51b8152600401610a6c906122f4565b601754305f9081526020819052604081205490911115610cbe57305f90815260208190526040902054610cc2565b6017545b600c805460ff60a01b1916600160a01b1790559050610ce081611a0b565b50600c805460ff60a01b19169055565b6005546001600160a01b03163314610d1a5760405162461bcd60e51b8152600401610a6c906122f4565b6001600160a01b03165f908152600760205260409020805460ff19169055565b6005546001600160a01b03163314610d645760405162461bcd60e51b8152600401610a6c906122f4565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610db85760405162461bcd60e51b8152600401610a6c906122f4565b60178190556040518181527f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c00906020015b60405180910390a150565b6005546001600160a01b03163314610e1e5760405162461bcd60e51b8152600401610a6c906122f4565b815181518114610e415760405163c52a9bd360e01b815260040160405180910390fd5b5f5b81811015610e9057610e8833858381518110610e6157610e61612350565b6020026020010151858481518110610e7b57610e7b612350565b6020026020010151611d12565b600101610e43565b50505050565b6005546001600160a01b03163314610ec05760405162461bcd60e51b8152600401610a6c906122f4565b610ec95f611ede565b565b6005546001600160a01b03163314610ef55760405162461bcd60e51b8152600401610a6c906122f4565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f415760405162461bcd60e51b8152600401610a6c906122f4565b6001600160a01b03165f908152600860205260409020805460ff19166001179055565b6060600480546109a8906122bc565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919083811015610ff75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a6c565b610b858286868403611333565b6005546001600160a01b0316331461102e5760405162461bcd60e51b8152600401610a6c906122f4565b600c8054821515600160b01b0260ff60b01b199091161790556040517fba500994dffbabeeb9e430f03a978d7b975359a20c5bde3a6ccb5a0c454680c890610de990831515815260200190565b5f33610a368185856114e0565b6005546001600160a01b031633146110b25760405162461bcd60e51b8152600401610a6c906122f4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b0316036111045760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111585760405162461bcd60e51b8152600401610a6c906122f4565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111a45760405162461bcd60e51b8152600401610a6c906122f4565b600c8054821515600160a81b0260ff60a81b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a1290610de990831515815260200190565b6005546001600160a01b0316331461121b5760405162461bcd60e51b8152600401610a6c906122f4565b6001600160a01b0381166112805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a6c565b5f60085f6112966005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f908120805492151560ff19909316929092179091556006816112d76005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790559085168152600883528181208054851660019081179091556006909352208054909216179055610c6381611ede565b6001600160a01b0383166113955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a6c565b6001600160a01b0382166113f65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a6c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610e9057818110156114d35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a6c565b610e908484848403611333565b6001600160a01b0383165f908152600a602052604090205460ff1680156115155750325f9081526007602052604090205460ff165b156115465760405163709ac01760e01b81526001600160a01b03808516600483015283166024820152604401610a6c565b805f0361155857610c1683835f611d12565b600c54600160a01b900460ff166118b5576001600160a01b0383165f908152600a602052604090205460ff16806115a657506001600160a01b0382165f908152600a602052604090205460ff165b1561160857325f9081526008602052604090205460ff161580156115d75750325f9081526009602052604090205443145b156115f657325f908152600760205260409020805460ff191660011790555b325f9081526009602052604090204390555b6001600160a01b0383165f9081526006602052604090205460ff1615801561164857506001600160a01b0382165f9081526006602052604090205460ff16155b156118b557601754305f908152602081905260409020541080159081906116785750600c54600160a81b900460ff165b801561169c57506001600160a01b0384165f908152600a602052604090205460ff16155b156116ce57600c805460ff60a01b1916600160a01b1790556017546116c090611a0b565b600c805460ff60a01b191690555b600c54600160b01b900460ff16156118b3576001600160a01b0383165f908152600a6020526040812054819060ff16801561170a575060145415155b156117b857612710601454856117209190612364565b61172a919061237b565b91506014546011548361173d9190612364565b611747919061237b565b611751908261233d565b9050601454601254836117649190612364565b61176e919061237b565b60155f82825461177e919061233d565b90915550506014546013546117939084612364565b61179d919061237b565b60165f8282546117ad919061233d565b909155506118899050565b6001600160a01b0386165f908152600a602052604090205460ff1680156117e0575060105415155b1561188957612710601054856117f69190612364565b611800919061237b565b9150601054600d54836118139190612364565b61181d919061237b565b611827908261233d565b9050601054600e548361183a9190612364565b611844919061237b565b60155f828254611854919061233d565b9091555050601054600f546118699084612364565b611873919061237b565b60165f828254611883919061233d565b90915550505b81156118b057611899828561239a565b93506118a6863084611d12565b6118b030826118c0565b50505b505b610c16838383611d12565b6001600160a01b0382166119205760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a6c565b6001600160a01b0382165f90815260208190526040902054818110156119935760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a6c565b6001600160a01b0383165f9081526020819052604081208383039055600280548492906119c190849061239a565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b5f601654601554611a1c919061233d565b90505f8160155484611a2e9190612364565b611a38919061237b565b90505f8260165485611a4a9190612364565b611a54919061237b565b90505f611a61828461233d565b9050611a8e307f000000000000000000000000000000000000000000000000000000000000000083611333565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ac157611ac1612350565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6191906123ad565b81600181518110611b7457611b74612350565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f00000000000000000000000000000000000000000000000000000000000000009091169063791ac94790611bd89085905f908690309042906004016123c8565b5f604051808303815f87803b158015611bef575f80fd5b505af1158015611c01573d5f803e3d5ffd5b504792505f9150849050611c158684612364565b611c1f919061237b565b90505f611c2c828461239a565b600b546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611c7b576040519150601f19603f3d011682016040523d82523d5f602084013e611c80565b606091505b5050600c546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611ccd576040519150601f19603f3d011682016040523d82523d5f602084013e611cd2565b606091505b5050809150508660165f828254611ce9919061239a565b925050819055508760155f828254611d01919061239a565b909155505050505050505050505050565b6001600160a01b038316611d765760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a6c565b6001600160a01b038216611dd85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a6c565b6001600160a01b0383165f9081526020819052604090205481811015611e4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a6c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611e8590849061233d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ed191815260200190565b60405180910390a3610e90565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f602080835283518060208501525f5b81811015611f5b57858101830151858201604001528201611f3f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c63575f80fd5b5f8060408385031215611fa0575f80fd5b8235611fab81611f7b565b946020939093013593505050565b5f805f60608486031215611fcb575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611ff2575f80fd5b8135611ffd81611f7b565b9392505050565b5f805f60608486031215612016575f80fd5b833561202181611f7b565b9250602084013561203181611f7b565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561207f5761207f612042565b604052919050565b5f67ffffffffffffffff8211156120a0576120a0612042565b5060051b60200190565b5f82601f8301126120b9575f80fd5b813560206120ce6120c983612087565b612056565b8083825260208201915060208460051b8701019350868411156120ef575f80fd5b602086015b8481101561211457803561210781611f7b565b83529183019183016120f4565b509695505050505050565b5f6020828403121561212f575f80fd5b813567ffffffffffffffff811115612145575f80fd5b612151848285016120aa565b949350505050565b5f60208284031215612169575f80fd5b5035919050565b8035801515811461217f575f80fd5b919050565b5f8060408385031215612195575f80fd5b82356121a081611f7b565b91506121ae60208401612170565b90509250929050565b5f80604083850312156121c8575f80fd5b823567ffffffffffffffff808211156121df575f80fd5b6121eb868387016120aa565b9350602091508185013581811115612201575f80fd5b85019050601f81018613612213575f80fd5b80356122216120c982612087565b81815260059190911b8201830190838101908883111561223f575f80fd5b928401925b8284101561225d57833582529284019290840190612244565b80955050505050509250929050565b5f6020828403121561227c575f80fd5b611ffd82612170565b5f8060408385031215612296575f80fd5b82356122a181611f7b565b915060208301356122b181611f7b565b809150509250929050565b600181811c908216806122d057607f821691505b6020821081036122ee57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a3c57610a3c612329565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417610a3c57610a3c612329565b5f8261239557634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610a3c57610a3c612329565b5f602082840312156123bd575f80fd5b8151611ffd81611f7b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124185784516001600160a01b0316835293830193918301916001016123f3565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220343dcb4dbe0305d59bec6b3a91ad8b29c4f92804f5cbb8f996cda1e93fcafd7364736f6c6343000816003300000000000000000000000061e87d52d5a358ee83043a6d918a2e867e44bd2f000000000000000000000000ff354c92ea06a7ae091ac801d54d11148c992d75
Deployed Bytecode
0x6080604052600436106102f6575f3560e01c8063715018a611610189578063a9059cbb116100d8578063dd62ed3e11610092578063e2f456051161006d578063e2f456051461093b578063e7f444b314610950578063ed0d213714610965578063f2fde38b1461097a575f80fd5b8063dd62ed3e146108aa578063e01af92c146108ee578063e0bf7fd11461090d575f80fd5b8063a9059cbb146107f8578063a9d3cd8a14610817578063aacebbe314610836578063b9e9370014610855578063bd967b761461086a578063d0a3981414610895575f80fd5b80638b27306d1161014357806395d89b411161011e57806395d89b4114610786578063a457c2d71461079a578063a64e4f8a146107b9578063a901dd92146107d9575f80fd5b80638b27306d146107355780638da5cb5b1461074a57806392f3693914610767575f80fd5b8063715018a61461068b57806375f0a8741461069f578063792df503146106be5780637ae3ff47146106ec5780637e76137714610701578063809d458d14610716575f80fd5b806342966c6811610245578063590ffdce116101ff57806367243482116101da578063672434821461060357806368078952146106225780636ddd17131461063757806370a0823114610657575f80fd5b8063590ffdce146105b05780635eebef6b146105cf5780636402511e146105e4575f80fd5b806342966c68146104de5780634626402b146104fd57806349bd5a5e1461051c57806351bc3c851461054f578063537df3b614610563578063576f9a5414610582575f80fd5b806318160ddd116102b05780632c10508c1161028b5780632c10508c14610470578063313ce56714610485578063373bf3b1146104a057806339509351146104bf575f80fd5b806318160ddd146104055780631cdd3be31461042357806323b872dd14610451575f80fd5b806306fdde0314610301578063095ea7b31461032b5780630d075d9c1461035a5780630f683e901461037b5780631694505e1461039a5780631732cded146103e5575f80fd5b366102fd57005b5f80fd5b34801561030c575f80fd5b50610315610999565b6040516103229190611f2f565b60405180910390f35b348015610336575f80fd5b5061034a610345366004611f8f565b610a29565b6040519015158152602001610322565b348015610365575f80fd5b50610379610374366004611fb9565b610a42565b005b348015610386575f80fd5b50610379610395366004611fb9565b610adc565b3480156103a5575f80fd5b506103cd7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610322565b3480156103f0575f80fd5b50600c5461034a90600160a01b900460ff1681565b348015610410575f80fd5b506002545b604051908152602001610322565b34801561042e575f80fd5b5061034a61043d366004611fe2565b60076020525f908152604090205460ff1681565b34801561045c575f80fd5b5061034a61046b366004612004565b610b6d565b34801561047b575f80fd5b50610415600e5481565b348015610490575f80fd5b5060405160128152602001610322565b3480156104ab575f80fd5b506103796104ba36600461211f565b610b90565b3480156104ca575f80fd5b5061034a6104d9366004611f8f565b610c1b565b3480156104e9575f80fd5b506103796104f8366004612159565b610c59565b348015610508575f80fd5b50600c546103cd906001600160a01b031681565b348015610527575f80fd5b506103cd7f000000000000000000000000c08049c9c18f3ed80b446b1004001db9d0c16d0281565b34801561055a575f80fd5b50610379610c66565b34801561056e575f80fd5b5061037961057d366004611fe2565b610cf0565b34801561058d575f80fd5b5061034a61059c366004611fe2565b600a6020525f908152604090205460ff1681565b3480156105bb575f80fd5b506103796105ca366004612184565b610d3a565b3480156105da575f80fd5b5061041560155481565b3480156105ef575f80fd5b506103796105fe366004612159565b610d8e565b34801561060e575f80fd5b5061037961061d3660046121b7565b610df4565b34801561062d575f80fd5b50610415600f5481565b348015610642575f80fd5b50600c5461034a90600160a81b900460ff1681565b348015610662575f80fd5b50610415610671366004611fe2565b6001600160a01b03165f9081526020819052604090205490565b348015610696575f80fd5b50610379610e96565b3480156106aa575f80fd5b50600b546103cd906001600160a01b031681565b3480156106c9575f80fd5b5061034a6106d8366004611fe2565b60086020525f908152604090205460ff1681565b3480156106f7575f80fd5b50610415600d5481565b34801561070c575f80fd5b5061041560115481565b348015610721575f80fd5b50610379610730366004611fe2565b610ecb565b348015610740575f80fd5b5061041560165481565b348015610755575f80fd5b506005546001600160a01b03166103cd565b348015610772575f80fd5b50610379610781366004611fe2565b610f17565b348015610791575f80fd5b50610315610f64565b3480156107a5575f80fd5b5061034a6107b4366004611f8f565b610f73565b3480156107c4575f80fd5b50600c5461034a90600160b01b900460ff1681565b3480156107e4575f80fd5b506103796107f336600461226c565b611004565b348015610803575f80fd5b5061034a610812366004611f8f565b61107b565b348015610822575f80fd5b50610379610831366004612184565b611088565b348015610841575f80fd5b50610379610850366004611fe2565b61112e565b348015610860575f80fd5b5061041560105481565b348015610875575f80fd5b50610415610884366004611fe2565b60096020525f908152604090205481565b3480156108a0575f80fd5b5061041560145481565b3480156108b5575f80fd5b506104156108c4366004612285565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b3480156108f9575f80fd5b5061037961090836600461226c565b61117a565b348015610918575f80fd5b5061034a610927366004611fe2565b60066020525f908152604090205460ff1681565b348015610946575f80fd5b5061041560175481565b34801561095b575f80fd5b5061041560135481565b348015610970575f80fd5b5061041560125481565b348015610985575f80fd5b50610379610994366004611fe2565b6111f1565b6060600380546109a8906122bc565b80601f01602080910402602001604051908101604052809291908181526020018280546109d4906122bc565b8015610a1f5780601f106109f657610100808354040283529160200191610a1f565b820191905f5260205f20905b815481529060010190602001808311610a0257829003601f168201915b5050505050905090565b5f33610a36818585611333565b60019150505b92915050565b6005546001600160a01b03163314610a755760405162461bcd60e51b8152600401610a6c906122f4565b60405180910390fd5b600d54831180610a865750600e5482115b80610a925750600f5481115b15610ab05760405163c52a9bd360e01b815260040160405180910390fd5b600d839055600e829055600f81905580610aca838561233d565b610ad4919061233d565b601055505050565b6005546001600160a01b03163314610b065760405162461bcd60e51b8152600401610a6c906122f4565b601154831180610b17575060125482115b80610b23575060135481115b15610b415760405163c52a9bd360e01b815260040160405180910390fd5b60118390556012829055601381905580610b5b838561233d565b610b65919061233d565b601455505050565b5f33610b7a858285611456565b610b858585856114e0565b506001949350505050565b6005546001600160a01b03163314610bba5760405162461bcd60e51b8152600401610a6c906122f4565b80515f5b81811015610c1657600160065f858481518110610bdd57610bdd612350565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610bbe565b505050565b335f8181526001602090815260408083206001600160a01b0387168452909152812054909190610a369082908690610c5490879061233d565b611333565b610c6333826118c0565b50565b6005546001600160a01b03163314610c905760405162461bcd60e51b8152600401610a6c906122f4565b601754305f9081526020819052604081205490911115610cbe57305f90815260208190526040902054610cc2565b6017545b600c805460ff60a01b1916600160a01b1790559050610ce081611a0b565b50600c805460ff60a01b19169055565b6005546001600160a01b03163314610d1a5760405162461bcd60e51b8152600401610a6c906122f4565b6001600160a01b03165f908152600760205260409020805460ff19169055565b6005546001600160a01b03163314610d645760405162461bcd60e51b8152600401610a6c906122f4565b6001600160a01b03919091165f908152600660205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610db85760405162461bcd60e51b8152600401610a6c906122f4565b60178190556040518181527f5948780118f41f7c4577ae4619d5cbd064057bd8562d9f7b7e60324053375c00906020015b60405180910390a150565b6005546001600160a01b03163314610e1e5760405162461bcd60e51b8152600401610a6c906122f4565b815181518114610e415760405163c52a9bd360e01b815260040160405180910390fd5b5f5b81811015610e9057610e8833858381518110610e6157610e61612350565b6020026020010151858481518110610e7b57610e7b612350565b6020026020010151611d12565b600101610e43565b50505050565b6005546001600160a01b03163314610ec05760405162461bcd60e51b8152600401610a6c906122f4565b610ec95f611ede565b565b6005546001600160a01b03163314610ef55760405162461bcd60e51b8152600401610a6c906122f4565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610f415760405162461bcd60e51b8152600401610a6c906122f4565b6001600160a01b03165f908152600860205260409020805460ff19166001179055565b6060600480546109a8906122bc565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919083811015610ff75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610a6c565b610b858286868403611333565b6005546001600160a01b0316331461102e5760405162461bcd60e51b8152600401610a6c906122f4565b600c8054821515600160b01b0260ff60b01b199091161790556040517fba500994dffbabeeb9e430f03a978d7b975359a20c5bde3a6ccb5a0c454680c890610de990831515815260200190565b5f33610a368185856114e0565b6005546001600160a01b031633146110b25760405162461bcd60e51b8152600401610a6c906122f4565b7f000000000000000000000000c08049c9c18f3ed80b446b1004001db9d0c16d026001600160a01b0316826001600160a01b0316036111045760405163c52a9bd360e01b815260040160405180910390fd5b6001600160a01b03919091165f908152600a60205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111585760405162461bcd60e51b8152600401610a6c906122f4565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146111a45760405162461bcd60e51b8152600401610a6c906122f4565b600c8054821515600160a81b0260ff60a81b199091161790556040517f436b6cf978c7b6998fcce43dfe4d37e3a0dc2bb780144a2eb55d7138201e8a1290610de990831515815260200190565b6005546001600160a01b0316331461121b5760405162461bcd60e51b8152600401610a6c906122f4565b6001600160a01b0381166112805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a6c565b5f60085f6112966005546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f908120805492151560ff19909316929092179091556006816112d76005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff199687161790559085168152600883528181208054851660019081179091556006909352208054909216179055610c6381611ede565b6001600160a01b0383166113955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a6c565b6001600160a01b0382166113f65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a6c565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610e9057818110156114d35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610a6c565b610e908484848403611333565b6001600160a01b0383165f908152600a602052604090205460ff1680156115155750325f9081526007602052604090205460ff165b156115465760405163709ac01760e01b81526001600160a01b03808516600483015283166024820152604401610a6c565b805f0361155857610c1683835f611d12565b600c54600160a01b900460ff166118b5576001600160a01b0383165f908152600a602052604090205460ff16806115a657506001600160a01b0382165f908152600a602052604090205460ff165b1561160857325f9081526008602052604090205460ff161580156115d75750325f9081526009602052604090205443145b156115f657325f908152600760205260409020805460ff191660011790555b325f9081526009602052604090204390555b6001600160a01b0383165f9081526006602052604090205460ff1615801561164857506001600160a01b0382165f9081526006602052604090205460ff16155b156118b557601754305f908152602081905260409020541080159081906116785750600c54600160a81b900460ff165b801561169c57506001600160a01b0384165f908152600a602052604090205460ff16155b156116ce57600c805460ff60a01b1916600160a01b1790556017546116c090611a0b565b600c805460ff60a01b191690555b600c54600160b01b900460ff16156118b3576001600160a01b0383165f908152600a6020526040812054819060ff16801561170a575060145415155b156117b857612710601454856117209190612364565b61172a919061237b565b91506014546011548361173d9190612364565b611747919061237b565b611751908261233d565b9050601454601254836117649190612364565b61176e919061237b565b60155f82825461177e919061233d565b90915550506014546013546117939084612364565b61179d919061237b565b60165f8282546117ad919061233d565b909155506118899050565b6001600160a01b0386165f908152600a602052604090205460ff1680156117e0575060105415155b1561188957612710601054856117f69190612364565b611800919061237b565b9150601054600d54836118139190612364565b61181d919061237b565b611827908261233d565b9050601054600e548361183a9190612364565b611844919061237b565b60155f828254611854919061233d565b9091555050601054600f546118699084612364565b611873919061237b565b60165f828254611883919061233d565b90915550505b81156118b057611899828561239a565b93506118a6863084611d12565b6118b030826118c0565b50505b505b610c16838383611d12565b6001600160a01b0382166119205760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610a6c565b6001600160a01b0382165f90815260208190526040902054818110156119935760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610a6c565b6001600160a01b0383165f9081526020819052604081208383039055600280548492906119c190849061239a565b90915550506040518281525f906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b5f601654601554611a1c919061233d565b90505f8160155484611a2e9190612364565b611a38919061237b565b90505f8260165485611a4a9190612364565b611a54919061237b565b90505f611a61828461233d565b9050611a8e307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d83611333565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611ac157611ac1612350565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b6191906123ad565b81600181518110611b7457611b74612350565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b81527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063791ac94790611bd89085905f908690309042906004016123c8565b5f604051808303815f87803b158015611bef575f80fd5b505af1158015611c01573d5f803e3d5ffd5b504792505f9150849050611c158684612364565b611c1f919061237b565b90505f611c2c828461239a565b600b546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611c7b576040519150601f19603f3d011682016040523d82523d5f602084013e611c80565b606091505b5050600c546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611ccd576040519150601f19603f3d011682016040523d82523d5f602084013e611cd2565b606091505b5050809150508660165f828254611ce9919061239a565b925050819055508760155f828254611d01919061239a565b909155505050505050505050505050565b6001600160a01b038316611d765760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a6c565b6001600160a01b038216611dd85760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a6c565b6001600160a01b0383165f9081526020819052604090205481811015611e4f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610a6c565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611e8590849061233d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ed191815260200190565b60405180910390a3610e90565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f602080835283518060208501525f5b81811015611f5b57858101830151858201604001528201611f3f565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610c63575f80fd5b5f8060408385031215611fa0575f80fd5b8235611fab81611f7b565b946020939093013593505050565b5f805f60608486031215611fcb575f80fd5b505081359360208301359350604090920135919050565b5f60208284031215611ff2575f80fd5b8135611ffd81611f7b565b9392505050565b5f805f60608486031215612016575f80fd5b833561202181611f7b565b9250602084013561203181611f7b565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561207f5761207f612042565b604052919050565b5f67ffffffffffffffff8211156120a0576120a0612042565b5060051b60200190565b5f82601f8301126120b9575f80fd5b813560206120ce6120c983612087565b612056565b8083825260208201915060208460051b8701019350868411156120ef575f80fd5b602086015b8481101561211457803561210781611f7b565b83529183019183016120f4565b509695505050505050565b5f6020828403121561212f575f80fd5b813567ffffffffffffffff811115612145575f80fd5b612151848285016120aa565b949350505050565b5f60208284031215612169575f80fd5b5035919050565b8035801515811461217f575f80fd5b919050565b5f8060408385031215612195575f80fd5b82356121a081611f7b565b91506121ae60208401612170565b90509250929050565b5f80604083850312156121c8575f80fd5b823567ffffffffffffffff808211156121df575f80fd5b6121eb868387016120aa565b9350602091508185013581811115612201575f80fd5b85019050601f81018613612213575f80fd5b80356122216120c982612087565b81815260059190911b8201830190838101908883111561223f575f80fd5b928401925b8284101561225d57833582529284019290840190612244565b80955050505050509250929050565b5f6020828403121561227c575f80fd5b611ffd82612170565b5f8060408385031215612296575f80fd5b82356122a181611f7b565b915060208301356122b181611f7b565b809150509250929050565b600181811c908216806122d057607f821691505b6020821081036122ee57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610a3c57610a3c612329565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417610a3c57610a3c612329565b5f8261239557634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610a3c57610a3c612329565b5f602082840312156123bd575f80fd5b8151611ffd81611f7b565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156124185784516001600160a01b0316835293830193918301916001016123f3565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220343dcb4dbe0305d59bec6b3a91ad8b29c4f92804f5cbb8f996cda1e93fcafd7364736f6c63430008160033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000061e87d52d5a358ee83043a6d918a2e867e44bd2f000000000000000000000000ff354c92ea06a7ae091ac801d54d11148c992d75
-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x61E87D52d5a358eE83043a6d918A2E867e44bD2f
Arg [1] : _treasuryWallet (address): 0xff354c92Ea06a7ae091ac801D54D11148C992d75
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000061e87d52d5a358ee83043a6d918a2e867e44bd2f
Arg [1] : 000000000000000000000000ff354c92ea06a7ae091ac801d54d11148c992d75
Deployed Bytecode Sourcemap
25999:9607:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15069:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17420:201;;;;;;;;;;-1:-1:-1;17420:201:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;17420:201:0;1023:187:1;33123:402:0;;;;;;;;;;-1:-1:-1;33123:402:0;;;;;:::i;:::-;;:::i;:::-;;32705:410;;;;;;;;;;-1:-1:-1;32705:410:0;;;;;:::i;:::-;;:::i;26328:51::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1726:32:1;;;1708:51;;1696:2;1681:18;26328:51:0;1536:229:1;26508:20:0;;;;;;;;;;-1:-1:-1;26508:20:0;;;;-1:-1:-1;;;26508:20:0;;;;;;16189:108;;;;;;;;;;-1:-1:-1;16277:12:0;;16189:108;;;1916:25:1;;;1904:2;1889:18;16189:108:0;1770:177:1;26101:47:0;;;;;;;;;;-1:-1:-1;26101:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18201:295;;;;;;;;;;-1:-1:-1;18201:295:0;;;;;:::i;:::-;;:::i;26649:35::-;;;;;;;;;;;;;;;;16031:93;;;;;;;;;;-1:-1:-1;16031:93:0;;16114:2;2807:36:1;;2795:2;2780:18;16031:93:0;2665:184:1;32466:231:0;;;;;;;;;;-1:-1:-1;32466:231:0;;;;;:::i;:::-;;:::i;18905:240::-;;;;;;;;;;-1:-1:-1;18905:240:0;;;;;:::i;:::-;;:::i;34868:89::-;;;;;;;;;;-1:-1:-1;34868:89:0;;;;;:::i;:::-;;:::i;26470:29::-;;;;;;;;;;-1:-1:-1;26470:29:0;;;;-1:-1:-1;;;;;26470:29:0;;;26386:38;;;;;;;;;;;;;;;34593:267;;;;;;;;;;;;;:::i;32070:115::-;;;;;;;;;;-1:-1:-1;32070:115:0;;;;;:::i;:::-;;:::i;26280:39::-;;;;;;;;;;-1:-1:-1;26280:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;32193:130;;;;;;;;;;-1:-1:-1;32193:130:0;;;;;:::i;:::-;;:::i;26945:29::-;;;;;;;;;;;;;;;;33887:156;;;;;;;;;;-1:-1:-1;33887:156:0;;;;;:::i;:::-;;:::i;33533:346::-;;;;;;;;;;-1:-1:-1;33533:346:0;;;;;:::i;:::-;;:::i;26691:36::-;;;;;;;;;;;;;;;;26535:30;;;;;;;;;;-1:-1:-1;26535:30:0;;;;-1:-1:-1;;;26535:30:0;;;;;;16360:127;;;;;;;;;;-1:-1:-1;16360:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;16461:18:0;16434:7;16461:18;;;;;;;;;;;;16360:127;8475:103;;;;;;;;;;;;;:::i;26433:30::-;;;;;;;;;;-1:-1:-1;26433:30:0;;;;-1:-1:-1;;;;;26433:30:0;;;26155:57;;;;;;;;;;-1:-1:-1;26155:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;26611:31;;;;;;;;;;;;;;;;26776:32;;;;;;;;;;;;;;;;34472:113;;;;;;;;;;-1:-1:-1;34472:113:0;;;;;:::i;:::-;;:::i;26981:30::-;;;;;;;;;;;;;;;;7824:87;;;;;;;;;;-1:-1:-1;7897:6:0;;-1:-1:-1;;;;;7897:6:0;7824:87;;32331:127;;;;;;;;;;-1:-1:-1;32331:127:0;;;;;:::i;:::-;;:::i;15288:104::-;;;;;;;;;;;;;:::i;19648:438::-;;;;;;;;;;-1:-1:-1;19648:438:0;;;;;:::i;:::-;;:::i;26572:30::-;;;;;;;;;;-1:-1:-1;26572:30:0;;;;-1:-1:-1;;;26572:30:0;;;;;;34200:141;;;;;;;;;;-1:-1:-1;34200:141:0;;;;;:::i;:::-;;:::i;16693:193::-;;;;;;;;;;-1:-1:-1;16693:193:0;;;;;:::i;:::-;;:::i;35373:191::-;;;;;;;;;;-1:-1:-1;35373:191:0;;;;;:::i;:::-;;:::i;34349:115::-;;;;;;;;;;-1:-1:-1;34349:115:0;;;;;:::i;:::-;;:::i;26734:33::-;;;;;;;;;;;;;;;;26219:54;;;;;;;;;;-1:-1:-1;26219:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;26902:34;;;;;;;;;;;;;;;;16949:151;;;;;;;;;;-1:-1:-1;16949:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;17065:18:0;;;17038:7;17065:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;16949:151;34051:141;;;;;;;;;;-1:-1:-1;34051:141:0;;;;;:::i;:::-;;:::i;26042:52::-;;;;;;;;;;-1:-1:-1;26042:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27020;;;;;;;;;;;;;;;;26858:37;;;;;;;;;;;;;;;;26815:36;;;;;;;;;;;;;;;;34965:400;;;;;;;;;;-1:-1:-1;34965:400:0;;;;;:::i;:::-;;:::i;15069:100::-;15123:13;15156:5;15149:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15069:100;:::o;17420:201::-;17503:4;6628:10;17559:32;6628:10;17575:7;17584:6;17559:8;:32::i;:::-;17609:4;17602:11;;;17420:201;;;;;:::o;33123:402::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;;;;;;;;;33235:10:::1;;33228:4;:17;:46;;;;33260:14;;33249:8;:25;33228:46;:77;;;;33290:15;;33278:9;:27;33228:77;33224:139;;;33329:22;;-1:-1:-1::0;;;33329:22:0::1;;;;;;;;;;;33224:139;33373:10;:17:::0;;;33401:14:::1;:25:::0;;;33437:15:::1;:27:::0;;;33455:9;33490:15:::1;33418:8:::0;33386:4;33490:15:::1;:::i;:::-;:27;;;;:::i;:::-;33475:12;:42:::0;-1:-1:-1;;;33123:402:0:o;32705:410::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;32818:11:::1;;32811:4;:18;:48;;;;32844:15;;32833:8;:26;32811:48;:80;;;;32875:16;;32863:9;:28;32811:80;32807:142;;;32915:22;;-1:-1:-1::0;;;32915:22:0::1;;;;;;;;;;;32807:142;32959:11;:18:::0;;;32988:15:::1;:26:::0;;;33025:16:::1;:28:::0;;;33044:9;33080:15:::1;33006:8:::0;32973:4;33080:15:::1;:::i;:::-;:27;;;;:::i;:::-;33064:13;:43:::0;-1:-1:-1;;;32705:410:0:o;18201:295::-;18332:4;6628:10;18390:38;18406:4;6628:10;18421:6;18390:15;:38::i;:::-;18439:27;18449:4;18455:2;18459:6;18439:9;:27::i;:::-;-1:-1:-1;18484:4:0;;18201:295;-1:-1:-1;;;;18201:295:0:o;32466:231::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;32564:15;;32550:11:::1;32590:100;32614:3;32610:1;:7;32590:100;;;32674:4;32639:19;:32;32659:8;32668:1;32659:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;32639:32:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;32639:32:0;:39;;-1:-1:-1;;32639:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;32619:3:0::1;32590:100;;;;32539:158;32466:231:::0;:::o;18905:240::-;6628:10;18993:4;19074:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;19074:27:0;;;;;;;;;;18993:4;;6628:10;19049:66;;6628:10;;19074:27;;:40;;19104:10;;19074:40;:::i;:::-;19049:8;:66::i;34868:89::-;34918:31;34930:10;34942:6;34918:11;:31::i;:::-;34868:89;:::o;34593:267::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;34696:18:::1;::::0;34686:4:::1;34645:20;16461:18:::0;;;;;;;;;;;34645:20;;-1:-1:-1;34668:46:0::1;:94;;34756:4;16434:7:::0;16461:18;;;;;;;;;;;34668:94:::1;;;34717:18;;34668:94;34773:8;:15:::0;;-1:-1:-1;;;;34773:15:0::1;-1:-1:-1::0;;;34773:15:0::1;::::0;;34645:117;-1:-1:-1;34799:26:0::1;34645:117:::0;34799:12:::1;:26::i;:::-;-1:-1:-1::0;34836:8:0::1;:16:::0;;-1:-1:-1;;;;34836:16:0::1;::::0;;34593:267::o;32070:115::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32146:23:0::1;32172:5;32146:23:::0;;;:14:::1;:23;::::0;;;;:31;;-1:-1:-1;;32146:31:0::1;::::0;;32070:115::o;32193:130::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32279:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:36;;-1:-1:-1;;32279:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32193:130::o;33887:156::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;33958:18:::1;:27:::0;;;34001:34:::1;::::0;1916:25:1;;;34001:34:0::1;::::0;1904:2:1;1889:18;34001:34:0::1;;;;;;;;33887:156:::0;:::o;33533:346::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;33644:12;;33678:14;;33671:21;::::1;33667:83;;33716:22;;-1:-1:-1::0;;;33716:22:0::1;;;;;;;;;;;33667:83;33765:9;33760:112;33784:3;33780:1;:7;33760:112;;;33809:51;6628:10:::0;33839:5:::1;33845:1;33839:8;;;;;;;;:::i;:::-;;;;;;;33849:7;33857:1;33849:10;;;;;;;;:::i;:::-;;;;;;;33809:15;:51::i;:::-;33789:3;;33760:112;;;;33619:260;33533:346:::0;;:::o;8475:103::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;8540:30:::1;8567:1;8540:18;:30::i;:::-;8475:103::o:0;34472:113::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;34551:14:::1;:26:::0;;-1:-1:-1;;;;;;34551:26:0::1;-1:-1:-1::0;;;;;34551:26:0;;;::::1;::::0;;;::::1;::::0;;34472:113::o;32331:127::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;32410:33:0::1;;::::0;;;:24:::1;:33;::::0;;;;:40;;-1:-1:-1;;32410:40:0::1;32446:4;32410:40;::::0;;32331:127::o;15288:104::-;15344:13;15377:7;15370:14;;;;;:::i;19648:438::-;6628:10;19741:4;19824:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;19824:27:0;;;;;;;;;;19741:4;;6628:10;19870:35;;;;19862:85;;;;-1:-1:-1;;;19862:85:0;;8496:2:1;19862:85:0;;;8478:21:1;8535:2;8515:18;;;8508:30;8574:34;8554:18;;;8547:62;-1:-1:-1;;;8625:18:1;;;8618:35;8670:19;;19862:85:0;8294:401:1;19862:85:0;19983:60;19992:5;19999:7;20027:15;20008:16;:34;19983:8;:60::i;34200:141::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;34267:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;34267:22:0::1;-1:-1:-1::0;;;;34267:22:0;;::::1;;::::0;;34305:28:::1;::::0;::::1;::::0;::::1;::::0;34281:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;16693:193:0;16772:4;6628:10;16828:28;6628:10;16845:2;16849:6;16828:9;:28::i;35373:191::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;35455:13:::1;-1:-1:-1::0;;;;;35447:21:0::1;:4;-1:-1:-1::0;;;;;35447:21:0::1;::::0;35443:83:::1;;35492:22;;-1:-1:-1::0;;;35492:22:0::1;;;;;;;;;;;35443:83;-1:-1:-1::0;;;;;35536:12:0;;;::::1;;::::0;;;:6:::1;:12;::::0;;;;:20;;-1:-1:-1;;35536:20:0::1;::::0;::::1;;::::0;;;::::1;::::0;;35373:191::o;34349:115::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;34429:15:::1;:27:::0;;-1:-1:-1;;;;;;34429:27:0::1;-1:-1:-1::0;;;;;34429:27:0;;;::::1;::::0;;;::::1;::::0;;34349:115::o;34051:141::-;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;34118:11:::1;:22:::0;;;::::1;;-1:-1:-1::0;;;34118:22:0::1;-1:-1:-1::0;;;;34118:22:0;;::::1;;::::0;;34156:28:::1;::::0;::::1;::::0;::::1;::::0;34132:8;1188:14:1;1181:22;1163:41;;1151:2;1136:18;;1023:187;34965:400:0;7897:6;;-1:-1:-1;;;;;7897:6:0;6628:10;8044:23;8036:68;;;;-1:-1:-1;;;8036:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;35055:22:0;::::1;35047:73;;;::::0;-1:-1:-1;;;35047:73:0;;8902:2:1;35047:73:0::1;::::0;::::1;8884:21:1::0;8941:2;8921:18;;;8914:30;8980:34;8960:18;;;8953:62;-1:-1:-1;;;9031:18:1;;;9024:36;9077:19;;35047:73:0::1;8700:402:1::0;35047:73:0::1;35167:5;35131:24;:33;35156:7;7897:6:::0;;-1:-1:-1;;;;;7897:6:0;;7824:87;35156:7:::1;-1:-1:-1::0;;;;;35131:33:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;35131:33:0;;;:41;;;::::1;;-1:-1:-1::0;;35131:41:0;;::::1;::::0;;;::::1;::::0;;;35183:19:::1;-1:-1:-1::0;35203:7:0::1;7897:6:::0;;-1:-1:-1;;;;;7897:6:0;;7824:87;35203:7:::1;-1:-1:-1::0;;;;;35183:28:0;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;;;-1:-1:-1;35183:28:0;;;:36;;;::::1;;-1:-1:-1::0;;35183:36:0;;::::1;;::::0;;35230:34;;::::1;::::0;;:24:::1;:34:::0;;;;;:41;;;::::1;35183:36:::0;35230:41;;::::1;::::0;;;35282:19:::1;:29:::0;;;;:36;;;;::::1;;::::0;;35329:28:::1;35255:8:::0;35329:18:::1;:28::i;23284:380::-:0;-1:-1:-1;;;;;23420:19:0;;23412:68;;;;-1:-1:-1;;;23412:68:0;;9309:2:1;23412:68:0;;;9291:21:1;9348:2;9328:18;;;9321:30;9387:34;9367:18;;;9360:62;-1:-1:-1;;;9438:18:1;;;9431:34;9482:19;;23412:68:0;9107:400:1;23412:68:0;-1:-1:-1;;;;;23499:21:0;;23491:68;;;;-1:-1:-1;;;23491:68:0;;9714:2:1;23491:68:0;;;9696:21:1;9753:2;9733:18;;;9726:30;9792:34;9772:18;;;9765:62;-1:-1:-1;;;9843:18:1;;;9836:32;9885:19;;23491:68:0;9512:398:1;23491:68:0;-1:-1:-1;;;;;23572:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23624:32;;1916:25:1;;;23624:32:0;;1889:18:1;23624:32:0;;;;;;;23284:380;;;:::o;23951:453::-;-1:-1:-1;;;;;17065:18:0;;;24086:24;17065:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;24153:37:0;;24149:248;;24235:6;24215:16;:26;;24207:68;;;;-1:-1:-1;;;24207:68:0;;10117:2:1;24207:68:0;;;10099:21:1;10156:2;10136:18;;;10129:30;10195:31;10175:18;;;10168:59;10244:18;;24207:68:0;9915:353:1;24207:68:0;24319:51;24328:5;24335:7;24363:6;24344:16;:25;24319:8;:51::i;28349:2481::-;-1:-1:-1;;;;;28477:12:0;;;;;;:6;:12;;;;;;;;:41;;;;-1:-1:-1;28508:9:0;28493:25;;;;:14;:25;;;;;;;;28477:41;28473:175;;;28542:25;;-1:-1:-1;;;28542:25:0;;-1:-1:-1;;;;;10503:15:1;;;28542:25:0;;;10485:34:1;10555:15;;10535:18;;;10528:43;10420:18;;28542:25:0;10273:304:1;28473:175:0;28663:6;28673:1;28663:11;28660:92;;28691:28;28707:4;28713:2;28717:1;28691:15;:28::i;28660:92::-;28769:8;;-1:-1:-1;;;28769:8:0;;;;28764:2011;;-1:-1:-1;;;;;28800:12:0;;;;;;:6;:12;;;;;;;;;:26;;-1:-1:-1;;;;;;28816:10:0;;;;;;:6;:10;;;;;;;;28800:26;28796:295;;;28877:9;28852:35;;;;:24;:35;;;;;;;;28851:36;:85;;;;-1:-1:-1;28910:9:0;28891:29;;;;:18;:29;;;;;;28924:12;28891:45;28851:85;28847:166;;;28976:9;28961:25;;;;:14;:25;;;;;:32;;-1:-1:-1;;28961:32:0;28989:4;28961:32;;;28847:166;29050:9;29031:29;;;;:18;:29;;;;;29063:12;29031:44;;28796:295;-1:-1:-1;;;;;29112:25:0;;;;;;:19;:25;;;;;;;;29111:26;:71;;;;-1:-1:-1;;;;;;29159:23:0;;;;;;:19;:23;;;;;;;;29158:24;29111:71;29107:1655;;;29262:18;;29252:4;29219:12;16461:18;;;;;;;;;;;-1:-1:-1;29234:46:0;;;;;29327:43;;-1:-1:-1;29359:11:0;;-1:-1:-1;;;29359:11:0;;;;29327:43;:81;;;;-1:-1:-1;;;;;;29396:12:0;;;;;;:6;:12;;;;;;;;29395:13;29327:81;29301:301;;;29473:8;:15;;-1:-1:-1;;;;29473:15:0;-1:-1:-1;;;29473:15:0;;;29524:18;;29511:32;;:12;:32::i;:::-;29566:8;:16;;-1:-1:-1;;;;29566:16:0;;;29301:301;29626:11;;-1:-1:-1;;;29626:11:0;;;;29622:1123;;;-1:-1:-1;;;;;29742:10:0;;29662:12;29742:10;;;:6;:10;;;;;;29662:12;;29742:10;;:32;;;;-1:-1:-1;29756:13:0;;:18;;29742:32;29738:751;;;29842:5;29826:13;;29817:6;:22;;;;:::i;:::-;:30;;;;:::i;:::-;29810:37;;29909:13;;29895:11;;29888:4;:18;;;;:::i;:::-;:34;;;;:::i;:::-;29874:48;;;;:::i;:::-;;;29992:13;;29974:15;;29967:4;:22;;;;:::i;:::-;:38;;;;:::i;:::-;29949:14;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;;30077:13:0;;30058:16;;30051:23;;:4;:23;:::i;:::-;:39;;;;:::i;:::-;30032:15;;:58;;;;;;;:::i;:::-;;;;-1:-1:-1;29738:751:0;;-1:-1:-1;29738:751:0;;-1:-1:-1;;;;;30124:12:0;;;;;;:6;:12;;;;;;;;:33;;;;-1:-1:-1;30140:12:0;;:17;;30124:33;30120:369;;;30223:5;30208:12;;30199:6;:21;;;;:::i;:::-;:29;;;;:::i;:::-;30192:36;;30289:12;;30276:10;;30269:4;:17;;;;:::i;:::-;:32;;;;:::i;:::-;30255:46;;;;:::i;:::-;;;30370:12;;30353:14;;30346:4;:21;;;;:::i;:::-;:36;;;;:::i;:::-;30328:14;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;30453:12:0;;30435:15;;30428:22;;:4;:22;:::i;:::-;:37;;;;:::i;:::-;30409:15;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;;30120:369:0;30515:8;;30511:213;;30552:14;30562:4;30552:14;;:::i;:::-;;;30593:42;30609:4;30623;30630;30593:15;:42::i;:::-;30662:38;30682:4;30689:10;30662:11;:38::i;:::-;29639:1106;;29622:1123;29198:1564;29107:1655;30787:33;30803:4;30809:2;30813:6;30787:15;:33::i;22255:591::-;-1:-1:-1;;;;;22339:21:0;;22331:67;;;;-1:-1:-1;;;22331:67:0;;11312:2:1;22331:67:0;;;11294:21:1;11351:2;11331:18;;;11324:30;11390:34;11370:18;;;11363:62;-1:-1:-1;;;11441:18:1;;;11434:31;11482:19;;22331:67:0;11110:397:1;22331:67:0;-1:-1:-1;;;;;22498:18:0;;22473:22;22498:18;;;;;;;;;;;22535:24;;;;22527:71;;;;-1:-1:-1;;;22527:71:0;;11714:2:1;22527:71:0;;;11696:21:1;11753:2;11733:18;;;11726:30;11792:34;11772:18;;;11765:62;-1:-1:-1;;;11843:18:1;;;11836:32;11885:19;;22527:71:0;11512:398:1;22527:71:0;-1:-1:-1;;;;;22634:18:0;;:9;:18;;;;;;;;;;22655:23;;;22634:44;;22700:12;:22;;22672:6;;22634:9;22700:22;;22672:6;;22700:22;:::i;:::-;;;;-1:-1:-1;;22740:37:0;;1916:25:1;;;22766:1:0;;-1:-1:-1;;;;;22740:37:0;;;;;1904:2:1;1889:18;22740:37:0;;;;;;;32590:100:::1;32539:158;32466:231:::0;:::o;30838:1224::-;30902:13;30935:15;;30918:14;;:32;;;;:::i;:::-;30902:48;;30961:22;31018:5;31001:14;;30986:12;:29;;;;:::i;:::-;:37;;;;:::i;:::-;30961:62;;31034:17;31087:5;31069:15;;31054:12;:30;;;;:::i;:::-;:38;;;;:::i;:::-;31034:58;-1:-1:-1;31105:19:0;31127:26;31034:58;31127:14;:26;:::i;:::-;31105:48;;31166:62;31183:4;31198:15;31216:11;31166:8;:62::i;:::-;31265:16;;;31279:1;31265:16;;;;;;;;31241:21;;31265:16;;;;;;;;;;-1:-1:-1;31265:16:0;31241:40;;31310:4;31292;31297:1;31292:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;31292:23:0;;;-1:-1:-1;;;;;31292:23:0;;;;;31336:15;-1:-1:-1;;;;;31336:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31326:4;31331:1;31326:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;31326:32:0;;;:7;;;;;;;;;:32;31397:224;;-1:-1:-1;;;31397:224:0;;:15;:66;;;;;;:224;;31478:11;;31504:1;;31548:4;;31575;;31595:15;;31397:224;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31655:21:0;;-1:-1:-1;31634:18:0;;-1:-1:-1;31732:11:0;;-1:-1:-1;31707:22:0;31720:9;31655:21;31707:22;:::i;:::-;:36;;;;:::i;:::-;31687:56;-1:-1:-1;31754:16:0;31773:22;31687:56;31773:10;:22;:::i;:::-;31853:15;;31845:51;;31754:41;;-1:-1:-1;31808:12:0;;-1:-1:-1;;;;;31853:15:0;;;;31882:9;;31808:12;31845:51;31808:12;31845:51;31882:9;31853:15;31845:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31929:14:0;;31921:49;;31831:65;;-1:-1:-1;;;;;;31929:14:0;;31957:8;;31921:49;;;;31957:8;31929:14;31921:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31907:63;;;;;32002:9;31983:15;;:28;;;;;;;:::i;:::-;;;;;;;;32040:14;32022;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;;;;;30838:1224:0:o;20565:671::-;-1:-1:-1;;;;;20696:18:0;;20688:68;;;;-1:-1:-1;;;20688:68:0;;13568:2:1;20688:68:0;;;13550:21:1;13607:2;13587:18;;;13580:30;13646:34;13626:18;;;13619:62;-1:-1:-1;;;13697:18:1;;;13690:35;13742:19;;20688:68:0;13366:401:1;20688:68:0;-1:-1:-1;;;;;20775:16:0;;20767:64;;;;-1:-1:-1;;;20767:64:0;;13974:2:1;20767:64:0;;;13956:21:1;14013:2;13993:18;;;13986:30;14052:34;14032:18;;;14025:62;-1:-1:-1;;;14103:18:1;;;14096:33;14146:19;;20767:64:0;13772:399:1;20767:64:0;-1:-1:-1;;;;;20917:15:0;;20895:19;20917:15;;;;;;;;;;;20951:21;;;;20943:72;;;;-1:-1:-1;;;20943:72:0;;14378:2:1;20943:72:0;;;14360:21:1;14417:2;14397:18;;;14390:30;14456:34;14436:18;;;14429:62;-1:-1:-1;;;14507:18:1;;;14500:36;14553:19;;20943:72:0;14176:402:1;20943:72:0;-1:-1:-1;;;;;21051:15:0;;;:9;:15;;;;;;;;;;;21069:20;;;21051:38;;21111:13;;;;;;;;:23;;21083:6;;21051:9;21111:23;;21083:6;;21111:23;:::i;:::-;;;;;;;;21167:2;-1:-1:-1;;;;;21152:26:0;21161:4;-1:-1:-1;;;;;21152:26:0;;21171:6;21152:26;;;;1916:25:1;;1904:2;1889:18;;1770:177;21152:26:0;;;;;;;;21191:37;32466:231;9094:191;9187:6;;;-1:-1:-1;;;;;9204:17:0;;;-1:-1:-1;;;;;;9204:17:0;;;;;;;9237:40;;9187:6;;;9204:17;9187:6;;9237:40;;9168:16;;9237:40;9157:128;9094:191;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:316::-;1292:6;1300;1308;1361:2;1349:9;1340:7;1336:23;1332:32;1329:52;;;1377:1;1374;1367:12;1329:52;-1:-1:-1;;1400:23:1;;;1470:2;1455:18;;1442:32;;-1:-1:-1;1521:2:1;1506:18;;;1493:32;;1215:316;-1:-1:-1;1215:316:1:o;1952:247::-;2011:6;2064:2;2052:9;2043:7;2039:23;2035:32;2032:52;;;2080:1;2077;2070:12;2032:52;2119:9;2106:23;2138:31;2163:5;2138:31;:::i;:::-;2188:5;1952:247;-1:-1:-1;;;1952:247:1:o;2204:456::-;2281:6;2289;2297;2350:2;2338:9;2329:7;2325:23;2321:32;2318:52;;;2366:1;2363;2356:12;2318:52;2405:9;2392:23;2424:31;2449:5;2424:31;:::i;:::-;2474:5;-1:-1:-1;2531:2:1;2516:18;;2503:32;2544:33;2503:32;2544:33;:::i;:::-;2204:456;;2596:7;;-1:-1:-1;;;2650:2:1;2635:18;;;;2622:32;;2204:456::o;2854:127::-;2915:10;2910:3;2906:20;2903:1;2896:31;2946:4;2943:1;2936:15;2970:4;2967:1;2960:15;2986:275;3057:2;3051:9;3122:2;3103:13;;-1:-1:-1;;3099:27:1;3087:40;;3157:18;3142:34;;3178:22;;;3139:62;3136:88;;;3204:18;;:::i;:::-;3240:2;3233:22;2986:275;;-1:-1:-1;2986:275:1:o;3266:183::-;3326:4;3359:18;3351:6;3348:30;3345:56;;;3381:18;;:::i;:::-;-1:-1:-1;3426:1:1;3422:14;3438:4;3418:25;;3266:183::o;3454:743::-;3508:5;3561:3;3554:4;3546:6;3542:17;3538:27;3528:55;;3579:1;3576;3569:12;3528:55;3615:6;3602:20;3641:4;3665:60;3681:43;3721:2;3681:43;:::i;:::-;3665:60;:::i;:::-;3747:3;3771:2;3766:3;3759:15;3799:4;3794:3;3790:14;3783:21;;3856:4;3850:2;3847:1;3843:10;3835:6;3831:23;3827:34;3813:48;;3884:3;3876:6;3873:15;3870:35;;;3901:1;3898;3891:12;3870:35;3937:4;3929:6;3925:17;3951:217;3967:6;3962:3;3959:15;3951:217;;;4047:3;4034:17;4064:31;4089:5;4064:31;:::i;:::-;4108:18;;4146:12;;;;3984;;3951:217;;;-1:-1:-1;4186:5:1;3454:743;-1:-1:-1;;;;;;3454:743:1:o;4202:348::-;4286:6;4339:2;4327:9;4318:7;4314:23;4310:32;4307:52;;;4355:1;4352;4345:12;4307:52;4395:9;4382:23;4428:18;4420:6;4417:30;4414:50;;;4460:1;4457;4450:12;4414:50;4483:61;4536:7;4527:6;4516:9;4512:22;4483:61;:::i;:::-;4473:71;4202:348;-1:-1:-1;;;;4202:348:1:o;4555:180::-;4614:6;4667:2;4655:9;4646:7;4642:23;4638:32;4635:52;;;4683:1;4680;4673:12;4635:52;-1:-1:-1;4706:23:1;;4555:180;-1:-1:-1;4555:180:1:o;4948:160::-;5013:20;;5069:13;;5062:21;5052:32;;5042:60;;5098:1;5095;5088:12;5042:60;4948:160;;;:::o;5113:315::-;5178:6;5186;5239:2;5227:9;5218:7;5214:23;5210:32;5207:52;;;5255:1;5252;5245:12;5207:52;5294:9;5281:23;5313:31;5338:5;5313:31;:::i;:::-;5363:5;-1:-1:-1;5387:35:1;5418:2;5403:18;;5387:35;:::i;:::-;5377:45;;5113:315;;;;;:::o;5433:1138::-;5551:6;5559;5612:2;5600:9;5591:7;5587:23;5583:32;5580:52;;;5628:1;5625;5618:12;5580:52;5668:9;5655:23;5697:18;5738:2;5730:6;5727:14;5724:34;;;5754:1;5751;5744:12;5724:34;5777:61;5830:7;5821:6;5810:9;5806:22;5777:61;:::i;:::-;5767:71;;5857:2;5847:12;;5912:2;5901:9;5897:18;5884:32;5941:2;5931:8;5928:16;5925:36;;;5957:1;5954;5947:12;5925:36;5980:24;;;-1:-1:-1;6035:4:1;6027:13;;6023:27;-1:-1:-1;6013:55:1;;6064:1;6061;6054:12;6013:55;6100:2;6087:16;6123:60;6139:43;6179:2;6139:43;:::i;6123:60::-;6217:15;;;6299:1;6295:10;;;;6287:19;;6283:28;;;6248:12;;;;6323:19;;;6320:39;;;6355:1;6352;6345:12;6320:39;6379:11;;;;6399:142;6415:6;6410:3;6407:15;6399:142;;;6481:17;;6469:30;;6432:12;;;;6519;;;;6399:142;;;6560:5;6550:15;;;;;;;5433:1138;;;;;:::o;6576:180::-;6632:6;6685:2;6673:9;6664:7;6660:23;6656:32;6653:52;;;6701:1;6698;6691:12;6653:52;6724:26;6740:9;6724:26;:::i;6761:388::-;6829:6;6837;6890:2;6878:9;6869:7;6865:23;6861:32;6858:52;;;6906:1;6903;6896:12;6858:52;6945:9;6932:23;6964:31;6989:5;6964:31;:::i;:::-;7014:5;-1:-1:-1;7071:2:1;7056:18;;7043:32;7084:33;7043:32;7084:33;:::i;:::-;7136:7;7126:17;;;6761:388;;;;;:::o;7154:380::-;7233:1;7229:12;;;;7276;;;7297:61;;7351:4;7343:6;7339:17;7329:27;;7297:61;7404:2;7396:6;7393:14;7373:18;7370:38;7367:161;;7450:10;7445:3;7441:20;7438:1;7431:31;7485:4;7482:1;7475:15;7513:4;7510:1;7503:15;7367:161;;7154:380;;;:::o;7539:356::-;7741:2;7723:21;;;7760:18;;;7753:30;7819:34;7814:2;7799:18;;7792:62;7886:2;7871:18;;7539:356::o;7900:127::-;7961:10;7956:3;7952:20;7949:1;7942:31;7992:4;7989:1;7982:15;8016:4;8013:1;8006:15;8032:125;8097:9;;;8118:10;;;8115:36;;;8131:18;;:::i;8162:127::-;8223:10;8218:3;8214:20;8211:1;8204:31;8254:4;8251:1;8244:15;8278:4;8275:1;8268:15;10582:168;10655:9;;;10686;;10703:15;;;10697:22;;10683:37;10673:71;;10724:18;;:::i;10755:217::-;10795:1;10821;10811:132;;10865:10;10860:3;10856:20;10853:1;10846:31;10900:4;10897:1;10890:15;10928:4;10925:1;10918:15;10811:132;-1:-1:-1;10957:9:1;;10755:217::o;10977:128::-;11044:9;;;11065:11;;;11062:37;;;11079:18;;:::i;11915:251::-;11985:6;12038:2;12026:9;12017:7;12013:23;12009:32;12006:52;;;12054:1;12051;12044:12;12006:52;12086:9;12080:16;12105:31;12130:5;12105:31;:::i;12171:980::-;12433:4;12481:3;12470:9;12466:19;12512:6;12501:9;12494:25;12538:2;12576:6;12571:2;12560:9;12556:18;12549:34;12619:3;12614:2;12603:9;12599:18;12592:31;12643:6;12678;12672:13;12709:6;12701;12694:22;12747:3;12736:9;12732:19;12725:26;;12786:2;12778:6;12774:15;12760:29;;12807:1;12817:195;12831:6;12828:1;12825:13;12817:195;;;12896:13;;-1:-1:-1;;;;;12892:39:1;12880:52;;12987:15;;;;12952:12;;;;12928:1;12846:9;12817:195;;;-1:-1:-1;;;;;;;13068:32:1;;;;13063:2;13048:18;;13041:60;-1:-1:-1;;;13132:3:1;13117:19;13110:35;13029:3;12171:980;-1:-1:-1;;;12171:980:1:o
Swarm Source
ipfs://343dcb4dbe0305d59bec6b3a91ad8b29c4f92804f5cbb8f996cda1e93fcafd73
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.