ERC-20
Overview
Max Total Supply
1,000,000 BGI
Holders
22
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
979.85300489999985148 BGIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
boogy
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-10-30 */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } library SafeMath { function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } library Address { function isContract(address account) internal view returns (bool) { uint256 size; assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { if (returndata.length > 0) { assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Ownable is Context { address internal _owner; address private _previousOwner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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); } contract ERC20 is Context,Ownable, IERC20, IERC20Metadata { using SafeMath for uint256; 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: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is 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: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, 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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(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); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(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 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 to 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 {} } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract boogy is ERC20 { using SafeMath for uint256; using Address for address; mapping (address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcludedFromMaxWallet; mapping(address => bool) private _isExcludedFromMaxTnxLimit; address public _devWalletAddress; uint256 public _buyDevFee = 5; uint256 public _sellDevFee = 30; IUniswapV2Router02 public uniswapV2Router; address public uniswapV2Pair; bool inSwapAndLiquify; bool public swapAndSendFeeEnabled = true; uint256 public _maxWalletBalance; uint256 public _maxTxAmount; uint256 public numTokensSellToSendEthToDev; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event swapAndSendFeeEnabledUpdated(bool enabled); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } constructor () ERC20("BOOGEYMAN inu", "BGI"){ numTokensSellToSendEthToDev = 1000 * 10 ** decimals(); _devWalletAddress = 0x094D25C177d8e7F52Db8643480040598C988f83E; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[_msgSender()] = true; _isExcludedFromFee[address(this)] = true; _isExcludedFromFee[_devWalletAddress] = true; // exclude from the Max wallet balance _isExcludedFromMaxWallet[owner()] = true; _isExcludedFromMaxWallet[address(this)] = true; _isExcludedFromMaxWallet[_devWalletAddress] = true; // exclude from the max tnx limit _isExcludedFromMaxTnxLimit[owner()] = true; _isExcludedFromMaxTnxLimit[address(this)] = true; _isExcludedFromMaxTnxLimit[_devWalletAddress] = true; /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(owner(), 1000000 * 10 ** decimals()); _maxWalletBalance = (totalSupply() * 2 ) / 100; _maxTxAmount = (totalSupply() * 2 ) / 100; } function includeAndExcludeInWhitelist(address account, bool value) public onlyOwner { _isExcludedFromFee[account] = value; } function includeAndExcludedFromMaxWallet(address account, bool value) public onlyOwner { _isExcludedFromMaxWallet[account] = value; } function includeAndExcludedFromMaxTnxLimit(address account, bool value) public onlyOwner { _isExcludedFromMaxTnxLimit[account] = value; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function isExcludedFromMaxWallet(address account) public view returns(bool){ return _isExcludedFromMaxWallet[account]; } function isExcludedFromMaxTnxLimit(address account) public view returns(bool) { return _isExcludedFromMaxTnxLimit[account]; } function setMaxWalletBalance(uint256 maxBalancePercent) external onlyOwner { _maxWalletBalance = maxBalancePercent * 10** decimals(); } function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner { _maxTxAmount = maxTxAmount * 10** decimals(); } function setSellDevFess( uint256 dFee ) external onlyOwner { _sellDevFee = dFee; } function setBuyDevFees( uint256 dFee ) external onlyOwner { _buyDevFee = dFee; } function setDevWalletAddress(address _addr) external onlyOwner { _devWalletAddress = _addr; } function setnumTokensSellToSendEthToDev(uint256 amount) external onlyOwner { numTokensSellToSendEthToDev = amount * 10 ** decimals(); } function setRouterAddress(address newRouter) external onlyOwner { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouter); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; } function setSwapAndSendFeeEnabled(bool _enabled) external onlyOwner { swapAndSendFeeEnabled = _enabled; emit swapAndSendFeeEnabledUpdated(_enabled); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} // to withdraw stucked BNB function withdrawStuckedBNB(uint amount) external onlyOwner{ // This is the current recommended method to use. (bool sent,) = _owner.call{value: amount}(""); require(sent, "Failed to send BNB"); } // Withdraw stuked tokens function withdrawStuckedTokens(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success){ return IERC20(tokenAddress).transfer(msg.sender, tokens); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (from != owner() && to != owner()) require( _isExcludedFromMaxTnxLimit[from] || _isExcludedFromMaxTnxLimit[to] || amount <= _maxTxAmount, "ERC20: Transfer amount exceeds the maxTxAmount." ); if ( from != owner() && to != address(this) && to != uniswapV2Pair ) { uint256 currentBalance = balanceOf(to); require(_isExcludedFromMaxWallet[to] || (currentBalance + amount <= _maxWalletBalance), "ERC20: Reached max wallet holding"); } uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= numTokensSellToSendEthToDev; if ( overMinTokenBalance && !inSwapAndLiquify && from != uniswapV2Pair && swapAndSendFeeEnabled ) { contractTokenBalance = numTokensSellToSendEthToDev; swapTokensForFees(contractTokenBalance); } bool takeFee = true; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { super._transfer(from, to, amount); takeFee = false; } else { if (from == uniswapV2Pair) { // Buy uint256 DevTokens = amount.mul(_buyDevFee).div(100); amount= amount.sub(DevTokens); super._transfer(from, address(this), DevTokens); super._transfer(from, to, amount); } else if (to == uniswapV2Pair) { // Sell uint256 DevTokens = amount.mul(_sellDevFee).div(100); amount= amount.sub(DevTokens); super._transfer(from, address(this), DevTokens); super._transfer(from, to, amount); } else { // Transfer super._transfer(from, to, amount); } } } function swapTokensForFees(uint256 tokenAmount) private lockTheSwap { address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, _devWalletAddress, block.timestamp ); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"swapAndSendFeeEnabledUpdated","type":"event"},{"inputs":[],"name":"_buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devWalletAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","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":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludeInWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludedFromMaxTnxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeAndExcludedFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTnxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToSendEthToDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dFee","type":"uint256"}],"name":"setBuyDevFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setDevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxBalancePercent","type":"uint256"}],"name":"setMaxWalletBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"dFee","type":"uint256"}],"name":"setSellDevFess","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndSendFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setnumTokensSellToSendEthToDev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndSendFeeEnabled","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawStuckedBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"withdrawStuckedTokens","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526005600b55601e600c55600e805460ff60a81b1916600160a81b1790553480156200002e57600080fd5b506040518060400160405280600d81526020016c424f4f4745594d414e20696e7560981b8152506040518060400160405280600381526020016242474960e81b81525062000081620004db60201b60201c565b600080546001600160a01b0319166001600160a01b039290921691821781556040517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a38151620000dd90600590602085019062000600565b508051620000f390600690602084019062000600565b5062000100915050601290565b6200010d90600a6200075f565b6200011b906103e86200081e565b601155600a80546001600160a01b03191673094d25c177d8e7f52db8643480040598c988f83e1790556040805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d91829163c45a015591600480820192602092909190829003018186803b1580156200019357600080fd5b505afa158015620001a8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001ce9190620006a6565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021757600080fd5b505afa1580156200022c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002529190620006a6565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200029b57600080fd5b505af1158015620002b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d69190620006a6565b600e80546001600160a01b03199081166001600160a01b0393841617909155600d8054909116918316919091179055600160076000620003133390565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526007909352818320805485166001908117909155600a54909116835290822080549093168117909255600890620003836000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526008909352818320805485166001908117909155600a54909116835290822080549093168117909255600990620003f36000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553081526009909352818320805485166001908117909155600a5490911683529120805490921617905562000484620004616000546001600160a01b031690565b6200046f6012600a6200075f565b6200047e90620f42406200081e565b620004df565b60646200049060045490565b6200049d9060026200081e565b620004a99190620006f3565b600f556064620004b860045490565b620004c59060026200081e565b620004d19190620006f3565b6010555062000893565b3390565b6001600160a01b0382166200053a5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b6200055681600454620005e960201b620010ef1790919060201c565b6004556001600160a01b0382166000908152600260209081526040909120546200058b918390620010ef620005e9821b17901c565b6001600160a01b0383166000818152600260205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90620005dd9085815260200190565b60405180910390a35050565b6000620005f78284620006d8565b90505b92915050565b8280546200060e9062000840565b90600052602060002090601f0160209004810192826200063257600085556200067d565b82601f106200064d57805160ff19168380011785556200067d565b828001600101855582156200067d579182015b828111156200067d57825182559160200191906001019062000660565b506200068b9291506200068f565b5090565b5b808211156200068b576000815560010162000690565b600060208284031215620006b957600080fd5b81516001600160a01b0381168114620006d157600080fd5b9392505050565b60008219821115620006ee57620006ee6200087d565b500190565b6000826200071157634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620007575781600019048211156200073b576200073b6200087d565b808516156200074957918102915b93841c93908002906200071b565b509250929050565b6000620005f760ff8416836000826200077b57506001620005fa565b816200078a57506000620005fa565b8160018114620007a35760028114620007ae57620007ce565b6001915050620005fa565b60ff841115620007c257620007c26200087d565b50506001821b620005fa565b5060208310610133831016604e8410600b8410161715620007f3575081810a620005fa565b620007ff838362000716565b80600019048211156200081657620008166200087d565b029392505050565b60008160001904831182151516156200083b576200083b6200087d565b500290565b600181811c908216806200085557607f821691505b602082108114156200087757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b611e5d80620008a36000396000f3fe6080604052600436106102345760003560e01c80636dd3d39f1161012e578063a457c2d7116100ab578063d4a5af841161006f578063d4a5af84146106d2578063dd62ed3e146106e8578063ea50cf4e1461072e578063ec28438a1461074e578063f2fde38b1461076e57600080fd5b8063a457c2d71461063c578063a9059cbb1461065c578063b425bac31461067c578063c9cf77891461069c578063ca14a523146106b257600080fd5b80638e4d62af116100f25780638e4d62af146105a75780639063d77d146105c757806392777e2a146105e757806395d89b41146106075780639904a1c31461061c57600080fd5b80636dd3d39f146104ef57806370a0823114610528578063715018a61461055e5780637d1db4a5146105735780638da5cb5b1461058957600080fd5b80633d0dbec0116101bc5780635342acb4116101805780635342acb41461042757806355874a79146104605780635d729d8c1461049957806362015852146104b957806368d71cbe146104cf57600080fd5b80633d0dbec01461039057806341cb87fc146103b157806347de4c5d146103d157806348eb61b6146103e757806349bd5a5e1461040757600080fd5b806318160ddd1161020357806318160ddd146102f557806323b872dd14610314578063313ce5671461033457806339509351146103505780633a9e00de1461037057600080fd5b806306fdde0314610240578063095ea7b31461026b578063120a06121461029b5780631694505e146102bd57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561078e565b6040516102629190611a46565b60405180910390f35b34801561027757600080fd5b5061028b6102863660046119c7565b610820565b6040519015158152602001610262565b3480156102a757600080fd5b506102bb6102b63660046118e5565b610837565b005b3480156102c957600080fd5b50600d546102dd906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b34801561030157600080fd5b506004545b604051908152602001610262565b34801561032057600080fd5b5061028b61032f366004611958565b61088c565b34801561034057600080fd5b5060405160128152602001610262565b34801561035c57600080fd5b5061028b61036b3660046119c7565b6108f5565b34801561037c57600080fd5b506102bb61038b366004611a2d565b61092b565b34801561039c57600080fd5b50600e5461028b90600160a81b900460ff1681565b3480156103bd57600080fd5b506102bb6103cc3660046118e5565b610971565b3480156103dd57600080fd5b5061030660115481565b3480156103f357600080fd5b506102bb610402366004611999565b610b43565b34801561041357600080fd5b50600e546102dd906001600160a01b031681565b34801561043357600080fd5b5061028b6104423660046118e5565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561046c57600080fd5b5061028b61047b3660046118e5565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156104a557600080fd5b5061028b6104b43660046119c7565b610b98565b3480156104c557600080fd5b50610306600b5481565b3480156104db57600080fd5b506102bb6104ea366004611a2d565b610c4a565b3480156104fb57600080fd5b5061028b61050a3660046118e5565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561053457600080fd5b506103066105433660046118e5565b6001600160a01b031660009081526002602052604090205490565b34801561056a57600080fd5b506102bb610c79565b34801561057f57600080fd5b5061030660105481565b34801561059557600080fd5b506000546001600160a01b03166102dd565b3480156105b357600080fd5b506102bb6105c2366004611999565b610ced565b3480156105d357600080fd5b506102bb6105e2366004611a2d565b610d42565b3480156105f357600080fd5b506102bb610602366004611a2d565b610d88565b34801561061357600080fd5b50610255610e4e565b34801561062857600080fd5b506102bb610637366004611999565b610e5d565b34801561064857600080fd5b5061028b6106573660046119c7565b610eb2565b34801561066857600080fd5b5061028b6106773660046119c7565b610f01565b34801561068857600080fd5b50600a546102dd906001600160a01b031681565b3480156106a857600080fd5b50610306600c5481565b3480156106be57600080fd5b506102bb6106cd366004611a2d565b610f0e565b3480156106de57600080fd5b50610306600f5481565b3480156106f457600080fd5b5061030661070336600461191f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561073a57600080fd5b506102bb6107493660046119f3565b610f3d565b34801561075a57600080fd5b506102bb610769366004611a2d565b610fbf565b34801561077a57600080fd5b506102bb6107893660046118e5565b611005565b60606005805461079d90611d27565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990611d27565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b5050505050905090565b600061082d3384846110fb565b5060015b92915050565b6000546001600160a01b0316331461086a5760405162461bcd60e51b815260040161086190611ade565b60405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610899848484611220565b6108eb84336108e685604051806060016040528060288152602001611ddb602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906115fc565b6110fb565b5060019392505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161082d9185906108e690866110ef565b6000546001600160a01b031633146109555760405162461bcd60e51b815260040161086190611ade565b6109616012600a611c46565b61096b9082611cf1565b600f5550565b6000546001600160a01b0316331461099b5760405162461bcd60e51b815260040161086190611ade565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a119190611902565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5957600080fd5b505afa158015610a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190611902565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610ad957600080fd5b505af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190611902565b600e80546001600160a01b039283166001600160a01b031991821617909155600d805493909216921691909117905550565b6000546001600160a01b03163314610b6d5760405162461bcd60e51b815260040161086190611ade565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610bc35760405162461bcd60e51b815260040161086190611ade565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610c0b57600080fd5b505af1158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c439190611a10565b9392505050565b6000546001600160a01b03163314610c745760405162461bcd60e51b815260040161086190611ade565b600c55565b6000546001600160a01b03163314610ca35760405162461bcd60e51b815260040161086190611ade565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d175760405162461bcd60e51b815260040161086190611ade565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d6c5760405162461bcd60e51b815260040161086190611ade565b610d786012600a611c46565b610d829082611cf1565b60115550565b6000546001600160a01b03163314610db25760405162461bcd60e51b815260040161086190611ade565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5050905080610e4a5760405162461bcd60e51b81526020600482015260126024820152712330b4b632b2103a379039b2b7321021272160711b6044820152606401610861565b5050565b60606006805461079d90611d27565b6000546001600160a01b03163314610e875760405162461bcd60e51b815260040161086190611ade565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600061082d33846108e685604051806060016040528060258152602001611e03602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906115fc565b600061082d338484611220565b6000546001600160a01b03163314610f385760405162461bcd60e51b815260040161086190611ade565b600b55565b6000546001600160a01b03163314610f675760405162461bcd60e51b815260040161086190611ade565b600e8054821515600160a81b0260ff60a81b199091161790556040517f4a4d2d81da99ab5c8fa132c1c87d7b3cd070a00ab9b3baef07d19c615b035aea90610fb490831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610fe95760405162461bcd60e51b815260040161086190611ade565b610ff56012600a611c46565b610fff9082611cf1565b60105550565b6000546001600160a01b0316331461102f5760405162461bcd60e51b815260040161086190611ade565b6001600160a01b0381166110945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610861565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c438284611bc9565b6001600160a01b03831661115d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610861565b6001600160a01b0382166111be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610861565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112465760405162461bcd60e51b815260040161086190611b13565b6001600160a01b03821661126c5760405162461bcd60e51b815260040161086190611a9b565b600081116112ce5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610861565b6000546001600160a01b038481169116148015906112fa57506000546001600160a01b03838116911614155b156113af576001600160a01b03831660009081526009602052604090205460ff168061133e57506001600160a01b03821660009081526009602052604090205460ff165b8061134b57506010548111155b6113af5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a205472616e7366657220616d6f756e742065786365656473207460448201526e34329036b0bc2a3c20b6b7bab73a1760891b6064820152608401610861565b6000546001600160a01b038481169116148015906113d657506001600160a01b0382163014155b80156113f05750600e546001600160a01b03838116911614155b1561148b576001600160a01b03821660009081526002602090815260408083205460089092529091205460ff16806114335750600f546114308383611bc9565b11155b6114895760405162461bcd60e51b815260206004820152602160248201527f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e6044820152606760f81b6064820152608401610861565b505b30600090815260026020526040902054601154811080159081906114b95750600e54600160a01b900460ff16155b80156114d35750600e546001600160a01b03868116911614155b80156114e85750600e54600160a81b900460ff165b156114fb5760115491506114fb82611628565b6001600160a01b03851660009081526007602052604090205460019060ff168061153d57506001600160a01b03851660009081526007602052604090205460ff165b156115555761154d8686866117b5565b5060006115f4565b600e546001600160a01b03878116911614156115b757600061158d6064611587600b54886118c190919063ffffffff16565b906118cd565b905061159985826118d9565b94506115a68730836117b5565b6115b18787876117b5565b506115f4565b600e546001600160a01b03868116911614156115e957600061158d6064611587600c54886118c190919063ffffffff16565b6115f48686866117b5565b505050505050565b600081848411156116205760405162461bcd60e51b81526004016108619190611a46565b505050900390565b600e805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061167057611670611d78565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190611902565b8160018151811061170f5761170f611d78565b6001600160a01b039283166020918202929092010152600d5461173591309116846110fb565b600d54600a5460405163791ac94760e01b81526001600160a01b039283169263791ac9479261177292879260009288929116904290600401611b58565b600060405180830381600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b5050600e805460ff60a01b1916905550505050565b6001600160a01b0383166117db5760405162461bcd60e51b815260040161086190611b13565b6001600160a01b0382166118015760405162461bcd60e51b815260040161086190611a9b565b61183e81604051806060016040528060268152602001611db5602691396001600160a01b03861660009081526002602052604090205491906115fc565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461186d90826110ef565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112139085815260200190565b6000610c438284611cf1565b6000610c438284611be1565b6000610c438284611d10565b6000602082840312156118f757600080fd5b8135610c4381611d8e565b60006020828403121561191457600080fd5b8151610c4381611d8e565b6000806040838503121561193257600080fd5b823561193d81611d8e565b9150602083013561194d81611d8e565b809150509250929050565b60008060006060848603121561196d57600080fd5b833561197881611d8e565b9250602084013561198881611d8e565b929592945050506040919091013590565b600080604083850312156119ac57600080fd5b82356119b781611d8e565b9150602083013561194d81611da6565b600080604083850312156119da57600080fd5b82356119e581611d8e565b946020939093013593505050565b600060208284031215611a0557600080fd5b8135610c4381611da6565b600060208284031215611a2257600080fd5b8151610c4381611da6565b600060208284031215611a3f57600080fd5b5035919050565b600060208083528351808285015260005b81811015611a7357858101830151858201604001528201611a57565b81811115611a85576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ba85784516001600160a01b031683529383019391830191600101611b83565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611bdc57611bdc611d62565b500190565b600082611bfe57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611c3e578160001904821115611c2457611c24611d62565b80851615611c3157918102915b93841c9390800290611c08565b509250929050565b6000610c4360ff841683600082611c5f57506001610831565b81611c6c57506000610831565b8160018114611c825760028114611c8c57611ca8565b6001915050610831565b60ff841115611c9d57611c9d611d62565b50506001821b610831565b5060208310610133831016604e8410600b8410161715611ccb575081810a610831565b611cd58383611c03565b8060001904821115611ce957611ce9611d62565b029392505050565b6000816000190483118215151615611d0b57611d0b611d62565b500290565b600082821015611d2257611d22611d62565b500390565b600181811c90821680611d3b57607f821691505b60208210811415611d5c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611da357600080fd5b50565b8015158114611da357600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206df7b9dc53e8cc91494f653203ceeb19af77a0504c3c864b23d6df5aef25605f64736f6c63430008070033
Deployed Bytecode
0x6080604052600436106102345760003560e01c80636dd3d39f1161012e578063a457c2d7116100ab578063d4a5af841161006f578063d4a5af84146106d2578063dd62ed3e146106e8578063ea50cf4e1461072e578063ec28438a1461074e578063f2fde38b1461076e57600080fd5b8063a457c2d71461063c578063a9059cbb1461065c578063b425bac31461067c578063c9cf77891461069c578063ca14a523146106b257600080fd5b80638e4d62af116100f25780638e4d62af146105a75780639063d77d146105c757806392777e2a146105e757806395d89b41146106075780639904a1c31461061c57600080fd5b80636dd3d39f146104ef57806370a0823114610528578063715018a61461055e5780637d1db4a5146105735780638da5cb5b1461058957600080fd5b80633d0dbec0116101bc5780635342acb4116101805780635342acb41461042757806355874a79146104605780635d729d8c1461049957806362015852146104b957806368d71cbe146104cf57600080fd5b80633d0dbec01461039057806341cb87fc146103b157806347de4c5d146103d157806348eb61b6146103e757806349bd5a5e1461040757600080fd5b806318160ddd1161020357806318160ddd146102f557806323b872dd14610314578063313ce5671461033457806339509351146103505780633a9e00de1461037057600080fd5b806306fdde0314610240578063095ea7b31461026b578063120a06121461029b5780631694505e146102bd57600080fd5b3661023b57005b600080fd5b34801561024c57600080fd5b5061025561078e565b6040516102629190611a46565b60405180910390f35b34801561027757600080fd5b5061028b6102863660046119c7565b610820565b6040519015158152602001610262565b3480156102a757600080fd5b506102bb6102b63660046118e5565b610837565b005b3480156102c957600080fd5b50600d546102dd906001600160a01b031681565b6040516001600160a01b039091168152602001610262565b34801561030157600080fd5b506004545b604051908152602001610262565b34801561032057600080fd5b5061028b61032f366004611958565b61088c565b34801561034057600080fd5b5060405160128152602001610262565b34801561035c57600080fd5b5061028b61036b3660046119c7565b6108f5565b34801561037c57600080fd5b506102bb61038b366004611a2d565b61092b565b34801561039c57600080fd5b50600e5461028b90600160a81b900460ff1681565b3480156103bd57600080fd5b506102bb6103cc3660046118e5565b610971565b3480156103dd57600080fd5b5061030660115481565b3480156103f357600080fd5b506102bb610402366004611999565b610b43565b34801561041357600080fd5b50600e546102dd906001600160a01b031681565b34801561043357600080fd5b5061028b6104423660046118e5565b6001600160a01b031660009081526007602052604090205460ff1690565b34801561046c57600080fd5b5061028b61047b3660046118e5565b6001600160a01b031660009081526009602052604090205460ff1690565b3480156104a557600080fd5b5061028b6104b43660046119c7565b610b98565b3480156104c557600080fd5b50610306600b5481565b3480156104db57600080fd5b506102bb6104ea366004611a2d565b610c4a565b3480156104fb57600080fd5b5061028b61050a3660046118e5565b6001600160a01b031660009081526008602052604090205460ff1690565b34801561053457600080fd5b506103066105433660046118e5565b6001600160a01b031660009081526002602052604090205490565b34801561056a57600080fd5b506102bb610c79565b34801561057f57600080fd5b5061030660105481565b34801561059557600080fd5b506000546001600160a01b03166102dd565b3480156105b357600080fd5b506102bb6105c2366004611999565b610ced565b3480156105d357600080fd5b506102bb6105e2366004611a2d565b610d42565b3480156105f357600080fd5b506102bb610602366004611a2d565b610d88565b34801561061357600080fd5b50610255610e4e565b34801561062857600080fd5b506102bb610637366004611999565b610e5d565b34801561064857600080fd5b5061028b6106573660046119c7565b610eb2565b34801561066857600080fd5b5061028b6106773660046119c7565b610f01565b34801561068857600080fd5b50600a546102dd906001600160a01b031681565b3480156106a857600080fd5b50610306600c5481565b3480156106be57600080fd5b506102bb6106cd366004611a2d565b610f0e565b3480156106de57600080fd5b50610306600f5481565b3480156106f457600080fd5b5061030661070336600461191f565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b34801561073a57600080fd5b506102bb6107493660046119f3565b610f3d565b34801561075a57600080fd5b506102bb610769366004611a2d565b610fbf565b34801561077a57600080fd5b506102bb6107893660046118e5565b611005565b60606005805461079d90611d27565b80601f01602080910402602001604051908101604052809291908181526020018280546107c990611d27565b80156108165780601f106107eb57610100808354040283529160200191610816565b820191906000526020600020905b8154815290600101906020018083116107f957829003601f168201915b5050505050905090565b600061082d3384846110fb565b5060015b92915050565b6000546001600160a01b0316331461086a5760405162461bcd60e51b815260040161086190611ade565b60405180910390fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6000610899848484611220565b6108eb84336108e685604051806060016040528060288152602001611ddb602891396001600160a01b038a16600090815260036020908152604080832033845290915290205491906115fc565b6110fb565b5060019392505050565b3360008181526003602090815260408083206001600160a01b0387168452909152812054909161082d9185906108e690866110ef565b6000546001600160a01b031633146109555760405162461bcd60e51b815260040161086190611ade565b6109616012600a611c46565b61096b9082611cf1565b600f5550565b6000546001600160a01b0316331461099b5760405162461bcd60e51b815260040161086190611ade565b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156109d957600080fd5b505afa1580156109ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a119190611902565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610a5957600080fd5b505afa158015610a6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a919190611902565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015610ad957600080fd5b505af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190611902565b600e80546001600160a01b039283166001600160a01b031991821617909155600d805493909216921691909117905550565b6000546001600160a01b03163314610b6d5760405162461bcd60e51b815260040161086190611ade565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b600080546001600160a01b03163314610bc35760405162461bcd60e51b815260040161086190611ade565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0384169063a9059cbb90604401602060405180830381600087803b158015610c0b57600080fd5b505af1158015610c1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c439190611a10565b9392505050565b6000546001600160a01b03163314610c745760405162461bcd60e51b815260040161086190611ade565b600c55565b6000546001600160a01b03163314610ca35760405162461bcd60e51b815260040161086190611ade565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610d175760405162461bcd60e51b815260040161086190611ade565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610d6c5760405162461bcd60e51b815260040161086190611ade565b610d786012600a611c46565b610d829082611cf1565b60115550565b6000546001600160a01b03163314610db25760405162461bcd60e51b815260040161086190611ade565b600080546040516001600160a01b039091169083908381818185875af1925050503d8060008114610dff576040519150601f19603f3d011682016040523d82523d6000602084013e610e04565b606091505b5050905080610e4a5760405162461bcd60e51b81526020600482015260126024820152712330b4b632b2103a379039b2b7321021272160711b6044820152606401610861565b5050565b60606006805461079d90611d27565b6000546001600160a01b03163314610e875760405162461bcd60e51b815260040161086190611ade565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b600061082d33846108e685604051806060016040528060258152602001611e03602591393360009081526003602090815260408083206001600160a01b038d16845290915290205491906115fc565b600061082d338484611220565b6000546001600160a01b03163314610f385760405162461bcd60e51b815260040161086190611ade565b600b55565b6000546001600160a01b03163314610f675760405162461bcd60e51b815260040161086190611ade565b600e8054821515600160a81b0260ff60a81b199091161790556040517f4a4d2d81da99ab5c8fa132c1c87d7b3cd070a00ab9b3baef07d19c615b035aea90610fb490831515815260200190565b60405180910390a150565b6000546001600160a01b03163314610fe95760405162461bcd60e51b815260040161086190611ade565b610ff56012600a611c46565b610fff9082611cf1565b60105550565b6000546001600160a01b0316331461102f5760405162461bcd60e51b815260040161086190611ade565b6001600160a01b0381166110945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610861565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000610c438284611bc9565b6001600160a01b03831661115d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610861565b6001600160a01b0382166111be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610861565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166112465760405162461bcd60e51b815260040161086190611b13565b6001600160a01b03821661126c5760405162461bcd60e51b815260040161086190611a9b565b600081116112ce5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610861565b6000546001600160a01b038481169116148015906112fa57506000546001600160a01b03838116911614155b156113af576001600160a01b03831660009081526009602052604090205460ff168061133e57506001600160a01b03821660009081526009602052604090205460ff165b8061134b57506010548111155b6113af5760405162461bcd60e51b815260206004820152602f60248201527f45524332303a205472616e7366657220616d6f756e742065786365656473207460448201526e34329036b0bc2a3c20b6b7bab73a1760891b6064820152608401610861565b6000546001600160a01b038481169116148015906113d657506001600160a01b0382163014155b80156113f05750600e546001600160a01b03838116911614155b1561148b576001600160a01b03821660009081526002602090815260408083205460089092529091205460ff16806114335750600f546114308383611bc9565b11155b6114895760405162461bcd60e51b815260206004820152602160248201527f45524332303a2052656163686564206d61782077616c6c657420686f6c64696e6044820152606760f81b6064820152608401610861565b505b30600090815260026020526040902054601154811080159081906114b95750600e54600160a01b900460ff16155b80156114d35750600e546001600160a01b03868116911614155b80156114e85750600e54600160a81b900460ff165b156114fb5760115491506114fb82611628565b6001600160a01b03851660009081526007602052604090205460019060ff168061153d57506001600160a01b03851660009081526007602052604090205460ff165b156115555761154d8686866117b5565b5060006115f4565b600e546001600160a01b03878116911614156115b757600061158d6064611587600b54886118c190919063ffffffff16565b906118cd565b905061159985826118d9565b94506115a68730836117b5565b6115b18787876117b5565b506115f4565b600e546001600160a01b03868116911614156115e957600061158d6064611587600c54886118c190919063ffffffff16565b6115f48686866117b5565b505050505050565b600081848411156116205760405162461bcd60e51b81526004016108619190611a46565b505050900390565b600e805460ff60a01b1916600160a01b179055604080516002808252606082018352600092602083019080368337019050509050308160008151811061167057611670611d78565b6001600160a01b03928316602091820292909201810191909152600d54604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156116c457600080fd5b505afa1580156116d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116fc9190611902565b8160018151811061170f5761170f611d78565b6001600160a01b039283166020918202929092010152600d5461173591309116846110fb565b600d54600a5460405163791ac94760e01b81526001600160a01b039283169263791ac9479261177292879260009288929116904290600401611b58565b600060405180830381600087803b15801561178c57600080fd5b505af11580156117a0573d6000803e3d6000fd5b5050600e805460ff60a01b1916905550505050565b6001600160a01b0383166117db5760405162461bcd60e51b815260040161086190611b13565b6001600160a01b0382166118015760405162461bcd60e51b815260040161086190611a9b565b61183e81604051806060016040528060268152602001611db5602691396001600160a01b03861660009081526002602052604090205491906115fc565b6001600160a01b03808516600090815260026020526040808220939093559084168152205461186d90826110ef565b6001600160a01b0380841660008181526002602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112139085815260200190565b6000610c438284611cf1565b6000610c438284611be1565b6000610c438284611d10565b6000602082840312156118f757600080fd5b8135610c4381611d8e565b60006020828403121561191457600080fd5b8151610c4381611d8e565b6000806040838503121561193257600080fd5b823561193d81611d8e565b9150602083013561194d81611d8e565b809150509250929050565b60008060006060848603121561196d57600080fd5b833561197881611d8e565b9250602084013561198881611d8e565b929592945050506040919091013590565b600080604083850312156119ac57600080fd5b82356119b781611d8e565b9150602083013561194d81611da6565b600080604083850312156119da57600080fd5b82356119e581611d8e565b946020939093013593505050565b600060208284031215611a0557600080fd5b8135610c4381611da6565b600060208284031215611a2257600080fd5b8151610c4381611da6565b600060208284031215611a3f57600080fd5b5035919050565b600060208083528351808285015260005b81811015611a7357858101830151858201604001528201611a57565b81811115611a85576000604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ba85784516001600160a01b031683529383019391830191600101611b83565b50506001600160a01b03969096166060850152505050608001529392505050565b60008219821115611bdc57611bdc611d62565b500190565b600082611bfe57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115611c3e578160001904821115611c2457611c24611d62565b80851615611c3157918102915b93841c9390800290611c08565b509250929050565b6000610c4360ff841683600082611c5f57506001610831565b81611c6c57506000610831565b8160018114611c825760028114611c8c57611ca8565b6001915050610831565b60ff841115611c9d57611c9d611d62565b50506001821b610831565b5060208310610133831016604e8410600b8410161715611ccb575081810a610831565b611cd58383611c03565b8060001904821115611ce957611ce9611d62565b029392505050565b6000816000190483118215151615611d0b57611d0b611d62565b500290565b600082821015611d2257611d22611d62565b500390565b600181811c90821680611d3b57607f821691505b60208210811415611d5c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114611da357600080fd5b50565b8015158114611da357600080fdfe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212206df7b9dc53e8cc91494f653203ceeb19af77a0504c3c864b23d6df5aef25605f64736f6c63430008070033
Deployed Bytecode Sourcemap
28243:9038:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10190:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12575:181;;;;;;;;;;-1:-1:-1;12575:181:0;;;;;:::i;:::-;;:::i;:::-;;;3935:14:1;;3928:22;3910:41;;3898:2;3883:18;12575:181:0;3770:187:1;32699:115:0;;;;;;;;;;-1:-1:-1;32699:115:0;;;;;:::i;:::-;;:::i;:::-;;28692:41;;;;;;;;;;-1:-1:-1;28692:41:0;;;;-1:-1:-1;;;;;28692:41:0;;;;;;-1:-1:-1;;;;;3138:32:1;;;3120:51;;3108:2;3093:18;28692:41:0;2974:203:1;11409:116:0;;;;;;;;;;-1:-1:-1;11501:12:0;;11409:116;;;8906:25:1;;;8894:2;8879:18;11409:116:0;8760:177:1;13282:387:0;;;;;;;;;;-1:-1:-1;13282:387:0;;;;;:::i;:::-;;:::i;11229:101::-;;;;;;;;;;-1:-1:-1;11229:101:0;;11316:2;10069:36:1;;10057:2;10042:18;11229:101:0;9927:184:1;14119:230:0;;;;;;;;;;-1:-1:-1;14119:230:0;;;;;:::i;:::-;;:::i;32118:153::-;;;;;;;;;;-1:-1:-1;32118:153:0;;;;;:::i;:::-;;:::i;28815:40::-;;;;;;;;;;-1:-1:-1;28815:40:0;;;;-1:-1:-1;;;28815:40:0;;;;;;33005:334;;;;;;;;;;-1:-1:-1;33005:334:0;;;;;:::i;:::-;;:::i;28947:42::-;;;;;;;;;;;;;;;;31324:155;;;;;;;;;;-1:-1:-1;31324:155:0;;;;;:::i;:::-;;:::i;28744:28::-;;;;;;;;;;-1:-1:-1;28744:28:0;;;;-1:-1:-1;;;;;28744:28:0;;;31662:131;;;;;;;;;;-1:-1:-1;31662:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;31754:27:0;31726:4;31754:27;;;:18;:27;;;;;;;;;31662:131;31959:147;;;;;;;;;;-1:-1:-1;31959:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;32059:35:0;32031:4;32059:35;;;:26;:35;;;;;;;;;31959:147;33997:189;;;;;;;;;;-1:-1:-1;33997:189:0;;;;;:::i;:::-;;:::i;28605:29::-;;;;;;;;;;;;;;;;32427:126;;;;;;;;;;-1:-1:-1;32427:126:0;;;;;:::i;:::-;;:::i;31805:142::-;;;;;;;;;;-1:-1:-1;31805:142:0;;;;;:::i;:::-;-1:-1:-1;;;;;31902:33:0;31875:4;31902:33;;;:24;:33;;;;;;;;;31805:142;11602:135;;;;;;;;;;-1:-1:-1;11602:135:0;;;;;:::i;:::-;-1:-1:-1;;;;;11707:18:0;11676:7;11707:18;;;:9;:18;;;;;;;11602:135;8358:160;;;;;;;;;;;;;:::i;28909:27::-;;;;;;;;;;;;;;;;8091:95;;;;;;;;;;-1:-1:-1;8137:7:0;8168:6;-1:-1:-1;;;;;8168:6:0;8091:95;;31166:146;;;;;;;;;;-1:-1:-1;31166:146:0;;;;;:::i;:::-;;:::i;32836:157::-;;;;;;;;;;-1:-1:-1;32836:157:0;;;;;:::i;:::-;;:::i;33694:252::-;;;;;;;;;;-1:-1:-1;33694:252:0;;;;;:::i;:::-;;:::i;10434:112::-;;;;;;;;;;;;;:::i;31491:159::-;;;;;;;;;;-1:-1:-1;31491:159:0;;;;;:::i;:::-;;:::i;14899:281::-;;;;;;;;;;-1:-1:-1;14899:281:0;;;;;:::i;:::-;;:::i;11979:187::-;;;;;;;;;;-1:-1:-1;11979:187:0;;;;;:::i;:::-;;:::i;28556:32::-;;;;;;;;;;-1:-1:-1;28556:32:0;;;;-1:-1:-1;;;;;28556:32:0;;;28647:31;;;;;;;;;;;;;;;;32565:124;;;;;;;;;;-1:-1:-1;32565:124:0;;;;;:::i;:::-;;:::i;28866:32::-;;;;;;;;;;;;;;;;12243:159;;;;;;;;;;-1:-1:-1;12243:159:0;;;;;:::i;:::-;-1:-1:-1;;;;;12363:18:0;;;12332:7;12363:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12243:159;33351:185;;;;;;;;;;-1:-1:-1;33351:185:0;;;;;:::i;:::-;;:::i;32283:130::-;;;;;;;;;;-1:-1:-1;32283:130:0;;;;;:::i;:::-;;:::i;8532:260::-;;;;;;;;;;-1:-1:-1;8532:260:0;;;;;:::i;:::-;;:::i;10190:108::-;10244:13;10281:5;10274:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10190:108;:::o;12575:181::-;12658:4;12679:39;3841:10;12702:7;12711:6;12679:8;:39::i;:::-;-1:-1:-1;12740:4:0;12575:181;;;;;:::o;32699:115::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;;;;;;;;;32777:17:::1;:25:::0;;-1:-1:-1;;;;;;32777:25:0::1;-1:-1:-1::0;;;;;32777:25:0;;;::::1;::::0;;;::::1;::::0;;32699:115::o;13282:387::-;13438:4;13459:36;13469:6;13477:9;13488:6;13459:9;:36::i;:::-;13510:121;13519:6;3841:10;13541:89;13579:6;13541:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13541:19:0;;;;;;:11;:19;;;;;;;;3841:10;13541:33;;;;;;;;;;:37;:89::i;:::-;13510:8;:121::i;:::-;-1:-1:-1;13653:4:0;13282:387;;;;;:::o;14119:230::-;3841:10;14207:4;14260:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;14260:34:0;;;;;;;;;;14207:4;;14228:83;;14251:7;;14260:50;;14299:10;14260:38;:50::i;32118:153::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;32244:15:::1;11316:2:::0;32244::::1;:15;:::i;:::-;32224:35;::::0;:17;:35:::1;:::i;:::-;32204:17;:55:::0;-1:-1:-1;32118:153:0:o;33005:334::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;33084:35:::1;33141:9;33084:67;;33200:16;-1:-1:-1::0;;;;;33200:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;33182:56:0::1;;33247:4;33254:16;-1:-1:-1::0;;;;;33254:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33182:96;::::0;-1:-1:-1;;;;;;33182:96:0::1;::::0;;;;;;-1:-1:-1;;;;;3412:15:1;;;33182:96:0::1;::::0;::::1;3394:34:1::0;3464:15;;3444:18;;;3437:43;3329:18;;33182:96:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;33166:13;:112:::0;;-1:-1:-1;;;;;33166:112:0;;::::1;-1:-1:-1::0;;;;;;33166:112:0;;::::1;;::::0;;;33293:15:::1;:34:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;33005:334:0:o;31324:155::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31426:33:0;;;::::1;;::::0;;;:24:::1;:33;::::0;;;;:41;;-1:-1:-1;;31426:41:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31324:155::o;33997:189::-;34094:12;8168:6;;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;34125:49:::1;::::0;-1:-1:-1;;;34125:49:0;;34155:10:::1;34125:49;::::0;::::1;3665:51:1::0;3732:18;;;3725:34;;;-1:-1:-1;;;;;34125:29:0;::::1;::::0;::::1;::::0;3638:18:1;;34125:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;34118:56:::0;33997:189;-1:-1:-1;;;33997:189:0:o;32427:126::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;32523:11:::1;:18:::0;32427:126::o;8358:160::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;8469:1:::1;8453:6:::0;;8432:40:::1;::::0;-1:-1:-1;;;;;8453:6:0;;::::1;::::0;8432:40:::1;::::0;8469:1;;8432:40:::1;8504:1;8487:19:::0;;-1:-1:-1;;;;;;8487:19:0::1;::::0;;8358:160::o;31166:146::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31265:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;31265:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31166:146::o;32836:157::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;32965:16:::1;11316:2:::0;32965::::1;:16;:::i;:::-;32956:25;::::0;:6;:25:::1;:::i;:::-;32926:27;:55:::0;-1:-1:-1;32836:157:0:o;33694:252::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;33832:9:::1;33846:6:::0;;:30:::1;::::0;-1:-1:-1;;;;;33846:6:0;;::::1;::::0;33865;;33832:9;33846:30;33832:9;33846:30;33865:6;33846;:30:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33831:45;;;33899:4;33891:35;;;::::0;-1:-1:-1;;;33891:35:0;;7402:2:1;33891:35:0::1;::::0;::::1;7384:21:1::0;7441:2;7421:18;;;7414:30;-1:-1:-1;;;7460:18:1;;;7453:48;7518:18;;33891:35:0::1;7200:342:1::0;33891:35:0::1;33753:193;33694:252:::0;:::o;10434:112::-;10490:13;10527:7;10520:14;;;;;:::i;31491:159::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;31595:35:0;;;::::1;;::::0;;;:26:::1;:35;::::0;;;;:43;;-1:-1:-1;;31595:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;31491:159::o;14899:281::-;14992:4;15013:129;3841:10;15036:7;15045:96;15084:15;15045:96;;;;;;;;;;;;;;;;;3841:10;15045:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15045:34:0;;;;;;;;;;;;:38;:96::i;11979:187::-;12065:4;12086:42;3841:10;12110:9;12121:6;12086:9;:42::i;32565:124::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;32660:10:::1;:17:::0;32565:124::o;33351:185::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;33434:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;33434:32:0::1;-1:-1:-1::0;;;;33434:32:0;;::::1;;::::0;;33486:38:::1;::::0;::::1;::::0;::::1;::::0;33458:8;3935:14:1;3928:22;3910:41;;3898:2;3883:18;;3770:187;33486:38:0::1;;;;;;;;33351:185:::0;:::o;32283:130::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;32387:15:::1;11316:2:::0;32387::::1;:15;:::i;:::-;32373:29;::::0;:11;:29:::1;:::i;:::-;32358:12;:44:::0;-1:-1:-1;32283:130:0:o;8532:260::-;8137:7;8168:6;-1:-1:-1;;;;;8168:6:0;3841:10;8250:23;8242:68;;;;-1:-1:-1;;;8242:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8625:22:0;::::1;8617:73;;;::::0;-1:-1:-1;;;8617:73:0;;5405:2:1;8617:73:0::1;::::0;::::1;5387:21:1::0;5444:2;5424:18;;;5417:30;5483:34;5463:18;;;5456:62;-1:-1:-1;;;5534:18:1;;;5527:36;5580:19;;8617:73:0::1;5203:402:1::0;8617:73:0::1;8731:6;::::0;;8710:38:::1;::::0;-1:-1:-1;;;;;8710:38:0;;::::1;::::0;8731:6;::::1;::::0;8710:38:::1;::::0;::::1;8763:6;:17:::0;;-1:-1:-1;;;;;;8763:17:0::1;-1:-1:-1::0;;;;;8763:17:0;;;::::1;::::0;;;::::1;::::0;;8532:260::o;2377:106::-;2435:7;2466:5;2470:1;2466;:5;:::i;18350:416::-;-1:-1:-1;;;;;18506:19:0;;18498:68;;;;-1:-1:-1;;;18498:68:0;;8557:2:1;18498:68:0;;;8539:21:1;8596:2;8576:18;;;8569:30;8635:34;8615:18;;;8608:62;-1:-1:-1;;;8686:18:1;;;8679:34;8730:19;;18498:68:0;8355:400:1;18498:68:0;-1:-1:-1;;;;;18589:21:0;;18581:68;;;;-1:-1:-1;;;18581:68:0;;5812:2:1;18581:68:0;;;5794:21:1;5851:2;5831:18;;;5824:30;5890:34;5870:18;;;5863:62;-1:-1:-1;;;5941:18:1;;;5934:32;5983:19;;18581:68:0;5610:398:1;18581:68:0;-1:-1:-1;;;;;18666:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;18722:32;;8906:25:1;;;18722:32:0;;8879:18:1;18722:32:0;;;;;;;;18350:416;;;:::o;34202:2496::-;-1:-1:-1;;;;;34354:18:0;;34346:68;;;;-1:-1:-1;;;34346:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;34437:16:0;;34429:64;;;;-1:-1:-1;;;34429:64:0;;;;;;;:::i;:::-;34525:1;34516:6;:10;34508:64;;;;-1:-1:-1;;;34508:64:0;;6992:2:1;34508:64:0;;;6974:21:1;7031:2;7011:18;;;7004:30;7070:34;7050:18;;;7043:62;-1:-1:-1;;;7121:18:1;;;7114:39;7170:19;;34508:64:0;6790:405:1;34508:64:0;8137:7;8168:6;-1:-1:-1;;;;;34597:15:0;;;8168:6;;34597:15;;;;:32;;-1:-1:-1;8137:7:0;8168:6;-1:-1:-1;;;;;34616:13:0;;;8168:6;;34616:13;;34597:32;34593:253;;;-1:-1:-1;;;;;34653:32:0;;;;;;:26;:32;;;;;;;;;:66;;-1:-1:-1;;;;;;34689:30:0;;;;;;:26;:30;;;;;;;;34653:66;:110;;;;34751:12;;34741:6;:22;;34653:110;34644:202;;;;-1:-1:-1;;;34644:202:0;;6215:2:1;34644:202:0;;;6197:21:1;6254:2;6234:18;;;6227:30;6293:34;6273:18;;;6266:62;-1:-1:-1;;;6344:18:1;;;6337:45;6399:19;;34644:202:0;6013:411:1;34644:202:0;8137:7;8168:6;-1:-1:-1;;;;;34895:15:0;;;8168:6;;34895:15;;;;:51;;-1:-1:-1;;;;;;34927:19:0;;34941:4;34927:19;;34895:51;:87;;;;-1:-1:-1;34969:13:0;;-1:-1:-1;;;;;34963:19:0;;;34969:13;;34963:19;;34895:87;34877:343;;;-1:-1:-1;;;;;11707:18:0;;35010:22;11707:18;;;:9;:18;;;;;;;;;35071:24;:28;;;;;;;;;;:78;;-1:-1:-1;35131:17:0;;35104:23;35121:6;35104:14;:23;:::i;:::-;:44;;35071:78;35063:145;;;;-1:-1:-1;;;35063:145:0;;8155:2:1;35063:145:0;;;8137:21:1;8194:2;8174:18;;;8167:30;8233:34;8213:18;;;8206:62;-1:-1:-1;;;8284:18:1;;;8277:31;8325:19;;35063:145:0;7953:397:1;35063:145:0;34995:225;34877:343;35291:4;35242:28;11707:18;;;:9;:18;;;;;;35364:27;;35340:51;;;;;;;35428:57;;-1:-1:-1;35469:16:0;;-1:-1:-1;;;35469:16:0;;;;35468:17;35428:57;:99;;;;-1:-1:-1;35514:13:0;;-1:-1:-1;;;;;35506:21:0;;;35514:13;;35506:21;;35428:99;:141;;;;-1:-1:-1;35548:21:0;;-1:-1:-1;;;35548:21:0;;;;35428:141;35406:322;;;35627:27;;35604:50;;35673:39;35691:20;35673:17;:39::i;:::-;-1:-1:-1;;;;;35778:24:0;;35744:12;35778:24;;;:18;:24;;;;;;35759:4;;35778:24;;;:50;;-1:-1:-1;;;;;;35806:22:0;;;;;;:18;:22;;;;;;;;35778:50;35774:911;;;35845:33;35861:4;35867:2;35871:6;35845:15;:33::i;:::-;-1:-1:-1;35903:5:0;35774:911;;;35955:13;;-1:-1:-1;;;;;35947:21:0;;;35955:13;;35947:21;35943:721;;;36013:17;36033:31;36060:3;36033:22;36044:10;;36033:6;:10;;:22;;;;:::i;:::-;:26;;:31::i;:::-;36013:51;-1:-1:-1;36093:21:0;:6;36013:51;36093:10;:21::i;:::-;36085:29;;36133:47;36149:4;36163;36170:9;36133:15;:47::i;:::-;36199:33;36215:4;36221:2;36225:6;36199:15;:33::i;:::-;35970:280;35943:721;;;36266:13;;-1:-1:-1;;;;;36260:19:0;;;36266:13;;36260:19;36256:408;;;36325:17;36345:32;36373:3;36345:23;36356:11;;36345:6;:10;;:23;;;;:::i;36256:408::-;36615:33;36631:4;36637:2;36641:6;36615:15;:33::i;:::-;34331:2367;;;34202:2496;;;:::o;2989:226::-;3075:7;3144:12;3136:6;;;;3128:29;;;;-1:-1:-1;;;3128:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3183:5:0;;;2989:226::o;36710:564::-;29330:16;:23;;-1:-1:-1;;;;29330:23:0;-1:-1:-1;;;29330:23:0;;;36817:16:::1;::::0;;36831:1:::1;36817:16:::0;;;;;::::1;::::0;;-1:-1:-1;;36817:16:0::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;36817:16:0::1;36793:40;;36866:4;36848;36853:1;36848:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36848:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;36896:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;36896:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;36848:7;;36896:22;;;;;:15;:22;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;36886:4;36891:1;36886:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36886:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;36965:15:::1;::::0;36933:62:::1;::::0;36950:4:::1;::::0;36965:15:::1;36983:11:::0;36933:8:::1;:62::i;:::-;37010:15;::::0;37196:17:::1;::::0;37010:252:::1;::::0;-1:-1:-1;;;37010:252:0;;-1:-1:-1;;;;;37010:15:0;;::::1;::::0;:66:::1;::::0;:252:::1;::::0;37095:11;;37010:15:::1;::::0;37173:4;;37196:17;::::1;::::0;37232:15:::1;::::0;37010:252:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;29384:16:0;:24;;-1:-1:-1;;;;29384:24:0;;;-1:-1:-1;;;;36710:564:0:o;15717:617::-;-1:-1:-1;;;;;15877:20:0;;15869:70;;;;-1:-1:-1;;;15869:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15962:23:0;;15954:71;;;;-1:-1:-1;;;15954:71:0;;;;;;;:::i;:::-;16126;16148:6;16126:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16126:17:0;;;;;;:9;:17;;;;;;;:71;:21;:71::i;:::-;-1:-1:-1;;;;;16106:17:0;;;;;;;:9;:17;;;;;;:91;;;;16235:20;;;;;;;:32;;16260:6;16235:24;:32::i;:::-;-1:-1:-1;;;;;16212:20:0;;;;;;;:9;:20;;;;;;;:55;;;;16287:35;;;;;;;;;;16315:6;8906:25:1;;8894:2;8879:18;;8760:177;2617:106:0;2675:7;2706:5;2710:1;2706;:5;:::i;2743:106::-;2801:7;2832:5;2836:1;2832;:5;:::i;2497:106::-;2555:7;2586:5;2590:1;2586;:5;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:388::-;590:6;598;651:2;639:9;630:7;626:23;622:32;619:52;;;667:1;664;657:12;619:52;706:9;693:23;725:31;750:5;725:31;:::i;:::-;775:5;-1:-1:-1;832:2:1;817:18;;804:32;845:33;804:32;845:33;:::i;:::-;897:7;887:17;;;522:388;;;;;:::o;915:456::-;992:6;1000;1008;1061:2;1049:9;1040:7;1036:23;1032:32;1029:52;;;1077:1;1074;1067:12;1029:52;1116:9;1103:23;1135:31;1160:5;1135:31;:::i;:::-;1185:5;-1:-1:-1;1242:2:1;1227:18;;1214:32;1255:33;1214:32;1255:33;:::i;:::-;915:456;;1307:7;;-1:-1:-1;;;1361:2:1;1346:18;;;;1333:32;;915:456::o;1376:382::-;1441:6;1449;1502:2;1490:9;1481:7;1477:23;1473:32;1470:52;;;1518:1;1515;1508:12;1470:52;1557:9;1544:23;1576:31;1601:5;1576:31;:::i;:::-;1626:5;-1:-1:-1;1683:2:1;1668:18;;1655:32;1696:30;1655:32;1696:30;:::i;1763:315::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1947:9;1934:23;1966:31;1991:5;1966:31;:::i;:::-;2016:5;2068:2;2053:18;;;;2040:32;;-1:-1:-1;;;1763:315:1:o;2083:241::-;2139:6;2192:2;2180:9;2171:7;2167:23;2163:32;2160:52;;;2208:1;2205;2198:12;2160:52;2247:9;2234:23;2266:28;2288:5;2266:28;:::i;2329:245::-;2396:6;2449:2;2437:9;2428:7;2424:23;2420:32;2417:52;;;2465:1;2462;2455:12;2417:52;2497:9;2491:16;2516:28;2538:5;2516:28;:::i;2579:180::-;2638:6;2691:2;2679:9;2670:7;2666:23;2662:32;2659:52;;;2707:1;2704;2697:12;2659:52;-1:-1:-1;2730:23:1;;2579:180;-1:-1:-1;2579:180:1:o;4197:597::-;4309:4;4338:2;4367;4356:9;4349:21;4399:6;4393:13;4442:6;4437:2;4426:9;4422:18;4415:34;4467:1;4477:140;4491:6;4488:1;4485:13;4477:140;;;4586:14;;;4582:23;;4576:30;4552:17;;;4571:2;4548:26;4541:66;4506:10;;4477:140;;;4635:6;4632:1;4629:13;4626:91;;;4705:1;4700:2;4691:6;4680:9;4676:22;4672:31;4665:42;4626:91;-1:-1:-1;4778:2:1;4757:15;-1:-1:-1;;4753:29:1;4738:45;;;;4785:2;4734:54;;4197:597;-1:-1:-1;;;4197:597:1:o;4799:399::-;5001:2;4983:21;;;5040:2;5020:18;;;5013:30;5079:34;5074:2;5059:18;;5052:62;-1:-1:-1;;;5145:2:1;5130:18;;5123:33;5188:3;5173:19;;4799:399::o;6429:356::-;6631:2;6613:21;;;6650:18;;;6643:30;6709:34;6704:2;6689:18;;6682:62;6776:2;6761:18;;6429:356::o;7547:401::-;7749:2;7731:21;;;7788:2;7768:18;;;7761:30;7827:34;7822:2;7807:18;;7800:62;-1:-1:-1;;;7893:2:1;7878:18;;7871:35;7938:3;7923:19;;7547:401::o;8942:980::-;9204:4;9252:3;9241:9;9237:19;9283:6;9272:9;9265:25;9309:2;9347:6;9342:2;9331:9;9327:18;9320:34;9390:3;9385:2;9374:9;9370:18;9363:31;9414:6;9449;9443:13;9480:6;9472;9465:22;9518:3;9507:9;9503:19;9496:26;;9557:2;9549:6;9545:15;9531:29;;9578:1;9588:195;9602:6;9599:1;9596:13;9588:195;;;9667:13;;-1:-1:-1;;;;;9663:39:1;9651:52;;9758:15;;;;9723:12;;;;9699:1;9617:9;9588:195;;;-1:-1:-1;;;;;;;9839:32:1;;;;9834:2;9819:18;;9812:60;-1:-1:-1;;;9903:3:1;9888:19;9881:35;9800:3;8942:980;-1:-1:-1;;;8942:980:1:o;10116:128::-;10156:3;10187:1;10183:6;10180:1;10177:13;10174:39;;;10193:18;;:::i;:::-;-1:-1:-1;10229:9:1;;10116:128::o;10249:217::-;10289:1;10315;10305:132;;10359:10;10354:3;10350:20;10347:1;10340:31;10394:4;10391:1;10384:15;10422:4;10419:1;10412:15;10305:132;-1:-1:-1;10451:9:1;;10249:217::o;10471:422::-;10560:1;10603:5;10560:1;10617:270;10638:7;10628:8;10625:21;10617:270;;;10697:4;10693:1;10689:6;10685:17;10679:4;10676:27;10673:53;;;10706:18;;:::i;:::-;10756:7;10746:8;10742:22;10739:55;;;10776:16;;;;10739:55;10855:22;;;;10815:15;;;;10617:270;;;10621:3;10471:422;;;;;:::o;10898:140::-;10956:5;10985:47;11026:4;11016:8;11012:19;11006:4;11092:5;11122:8;11112:80;;-1:-1:-1;11163:1:1;11177:5;;11112:80;11211:4;11201:76;;-1:-1:-1;11248:1:1;11262:5;;11201:76;11293:4;11311:1;11306:59;;;;11379:1;11374:130;;;;11286:218;;11306:59;11336:1;11327:10;;11350:5;;;11374:130;11411:3;11401:8;11398:17;11395:43;;;11418:18;;:::i;:::-;-1:-1:-1;;11474:1:1;11460:16;;11489:5;;11286:218;;11588:2;11578:8;11575:16;11569:3;11563:4;11560:13;11556:36;11550:2;11540:8;11537:16;11532:2;11526:4;11523:12;11519:35;11516:77;11513:159;;;-1:-1:-1;11625:19:1;;;11657:5;;11513:159;11704:34;11729:8;11723:4;11704:34;:::i;:::-;11774:6;11770:1;11766:6;11762:19;11753:7;11750:32;11747:58;;;11785:18;;:::i;:::-;11823:20;;11043:806;-1:-1:-1;;;11043:806:1:o;11854:168::-;11894:7;11960:1;11956;11952:6;11948:14;11945:1;11942:21;11937:1;11930:9;11923:17;11919:45;11916:71;;;11967:18;;:::i;:::-;-1:-1:-1;12007:9:1;;11854:168::o;12027:125::-;12067:4;12095:1;12092;12089:8;12086:34;;;12100:18;;:::i;:::-;-1:-1:-1;12137:9:1;;12027:125::o;12157:380::-;12236:1;12232:12;;;;12279;;;12300:61;;12354:4;12346:6;12342:17;12332:27;;12300:61;12407:2;12399:6;12396:14;12376:18;12373:38;12370:161;;;12453:10;12448:3;12444:20;12441:1;12434:31;12488:4;12485:1;12478:15;12516:4;12513:1;12506:15;12370:161;;12157:380;;;:::o;12542:127::-;12603:10;12598:3;12594:20;12591:1;12584:31;12634:4;12631:1;12624:15;12658:4;12655:1;12648:15;12674:127;12735:10;12730:3;12726:20;12723:1;12716:31;12766:4;12763:1;12756:15;12790:4;12787:1;12780:15;12938:131;-1:-1:-1;;;;;13013:31:1;;13003:42;;12993:70;;13059:1;13056;13049:12;12993:70;12938:131;:::o;13074:118::-;13160:5;13153:13;13146:21;13139:5;13136:32;13126:60;;13182:1;13179;13172:12
Swarm Source
ipfs://6df7b9dc53e8cc91494f653203ceeb19af77a0504c3c864b23d6df5aef25605f
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.