Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,000,000,000 POPEPE
Holders
86
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
9,999,999.000000000092979161 POPEPEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Popepe
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-04-17 */ // SPDX-License-Identifier: MIT /* https://t.me/Proofofpepe */ pragma solidity 0.8.17; interface IUniswapV2Factory { event PairCreated( address indexed token0, address indexed token1, address pair, uint256 ); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function allPairsLength() external view returns (uint256); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint256) external view returns (address pair); 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, uint256 value ); event Transfer(address indexed from, address indexed to, uint256 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 (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transfer(address to, uint256 value) external returns (bool); function transferFrom( address from, address to, uint256 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 (uint256); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; event Mint(address indexed sender, uint256 amount0, uint256 amount1); event Burn( address indexed sender, uint256 amount0, uint256 amount1, address indexed to ); event Swap( address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint256); 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 (uint256); function price1CumulativeLast() external view returns (uint256); function kLast() external view returns (uint256); function mint(address to) external returns (uint256 liquidity); function burn(address to) external returns (uint256 amount0, uint256 amount1); function swap( uint256 amount0Out, uint256 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, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns ( uint256 amountA, uint256 amountB, uint256 liquidity ); function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns ( uint256 amountToken, uint256 amountETH, uint256 liquidity ); function removeLiquidity( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETH( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountToken, uint256 amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountA, uint256 amountB); function removeLiquidityETHWithPermit( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountToken, uint256 amountETH); function swapExactTokensForTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapTokensForExactTokens( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactETHForTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function swapTokensForExactETH( uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapExactTokensForETH( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external returns (uint256[] memory amounts); function swapETHForExactTokens( uint256 amountOut, address[] calldata path, address to, uint256 deadline ) external payable returns (uint256[] memory amounts); function quote( uint256 amountA, uint256 reserveA, uint256 reserveB ) external pure returns (uint256 amountB); function getAmountOut( uint256 amountIn, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountOut); function getAmountIn( uint256 amountOut, uint256 reserveIn, uint256 reserveOut ) external pure returns (uint256 amountIn); function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts); function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external returns (uint256 amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint256 amountETH); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external payable; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external; } /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval( address indexed owner, address indexed spender, uint256 value ); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); } /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() external view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the name of the token. */ function name() external view virtual override returns (string memory) { return _name; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @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() external view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) external virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) external virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) external virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); 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) external virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev 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) external virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** @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"); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += 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"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= 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 Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); } } /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract Popepe is ERC20, Ownable { // TOKENOMICS START ==========================================================> string private constant _name = "Proof of Pepe"; string private constant _symbol = "POPEPE"; uint8 private constant _decimals = 18; uint256 private constant _supply = 1000000000; uint256 public buyTaxForLiquidity = 0; uint256 public buyTaxForMarketing = 0; uint256 public buyTaxForGiveaway = 0; uint256 public sellTaxForLiquidity = 0; uint256 public sellTaxForMarketing = 0; uint256 public sellTaxForGiveaway = 0; uint256 public maxTxAmount = 10000000 * 10**_decimals; uint256 public maxWalletAmount = 20000000 * 10**_decimals; address public marketingWallet = 0xB9cca016E22f5eD51577b91fd2c9B3BFE9f0178b; address public giveawayWallet = 0xB9cca016E22f5eD51577b91fd2c9B3BFE9f0178b; uint256 private _numTokensSellToAddToLiquidity = 800000 * 10**_decimals; uint256 private _numTokensSellToAddToETH = 300000 * 10**_decimals; // TOKENOMICS END ============================================================> IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; uint256 private _marketingReserves = 0; uint256 private _giveawayReserves = 0; uint256 private _taxForLiquidity = 0; uint256 private _taxForMarketing = 0; uint256 private _taxForGiveaway = 0; mapping(address => bool) private _isExcludedFromFee; bool inSwapAndLiquify; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } /** * @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() ERC20(_name, _symbol) { _mint(msg.sender, (_supply * 10**_decimals)); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[address(uniswapV2Router)] = true; _isExcludedFromFee[msg.sender] = true; _isExcludedFromFee[marketingWallet] = true; _isExcludedFromFee[giveawayWallet] = true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require( balanceOf(from) >= amount, "ERC20: transfer amount exceeds balance" ); if ( (from == uniswapV2Pair || to == uniswapV2Pair) && !inSwapAndLiquify ) { if (from != uniswapV2Pair) { _setSellTax(); uint256 contractLiquidityBalance = balanceOf(address(this)) - _marketingReserves - _giveawayReserves; if ( contractLiquidityBalance >= _numTokensSellToAddToLiquidity ) { _swapAndLiquify(_numTokensSellToAddToLiquidity); } if ((_marketingReserves) >= _numTokensSellToAddToETH) { _swapTokensForEth(_numTokensSellToAddToETH); _marketingReserves -= _numTokensSellToAddToETH; bool sent = payable(marketingWallet).send( address(this).balance ); require(sent, "Failed to send ETH to marketing wallet"); } if ((_giveawayReserves) >= _numTokensSellToAddToETH) { _swapTokensForEth(_numTokensSellToAddToETH); _giveawayReserves -= _numTokensSellToAddToETH; bool sent = payable(giveawayWallet).send( address(this).balance ); require(sent, "Failed to send ETH to giveaway wallet"); } } else { _setBuyTax(); } uint256 transferAmount; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { transferAmount = amount; } else { require( amount <= maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount" ); if (from == uniswapV2Pair) { require( (amount + balanceOf(to)) <= maxWalletAmount, "ERC20: balance amount exceeded max wallet amount limit" ); } uint256 marketingShare = ((amount * _taxForMarketing) / 100); uint256 giveawayShare = ((amount * _taxForGiveaway) / 100); uint256 liquidityShare = ((amount * _taxForLiquidity) / 100); transferAmount = amount - (marketingShare + giveawayShare + liquidityShare); _marketingReserves += marketingShare; _giveawayReserves += giveawayShare; super._transfer( from, address(this), (marketingShare + giveawayShare + liquidityShare) ); } super._transfer(from, to, transferAmount); } else { super._transfer(from, to, amount); } } function _swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap { uint256 half = (contractTokenBalance / 2); uint256 otherHalf = (contractTokenBalance - half); uint256 initialBalance = address(this).balance; _swapTokensForEth(half); uint256 newBalance = (address(this).balance - initialBalance); _addLiquidity(otherHalf, newBalance); emit SwapAndLiquify(half, newBalance, otherHalf); } function _swapTokensForEth(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, path, address(this), (block.timestamp + 300) ); } function _addLiquidity(uint256 tokenAmount, uint256 ethAmount) private lockTheSwap { _approve(address(this), address(uniswapV2Router), tokenAmount); uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, owner(), block.timestamp ); } function changeMarketingWallet(address newWallet) external onlyOwner returns (bool) { marketingWallet = newWallet; return true; } function changeGiveawayWallet(address newWallet) external onlyOwner returns (bool) { giveawayWallet = newWallet; return true; } function _setBuyTax() private { _taxForLiquidity = buyTaxForLiquidity; _taxForMarketing = buyTaxForMarketing; _taxForGiveaway = buyTaxForGiveaway; } function _setSellTax() private { _taxForLiquidity = sellTaxForLiquidity; _taxForMarketing = sellTaxForMarketing; _taxForGiveaway = sellTaxForGiveaway; } function changeBuyTaxForLMG( uint256 buyTaxForLiquidity_, uint256 buyTaxForMarketing_, uint256 buyTaxForGiveaway_ ) external onlyOwner returns (bool) { require( (buyTaxForLiquidity_ + buyTaxForMarketing_ + buyTaxForGiveaway_) <= 100, "ERC20: total tax must not be greater than 100" ); buyTaxForLiquidity = buyTaxForLiquidity_; buyTaxForMarketing = buyTaxForMarketing_; buyTaxForGiveaway = buyTaxForGiveaway_; return true; } function changeSellTaxForLMG( uint256 sellTaxForLiquidity_, uint256 sellTaxForMarketing_, uint256 sellTaxForGiveaway_ ) external onlyOwner returns (bool) { require( (sellTaxForLiquidity_ + sellTaxForMarketing_ + sellTaxForGiveaway_) <= 100, "ERC20: total tax must not be greater than 100" ); sellTaxForLiquidity = sellTaxForLiquidity_; sellTaxForMarketing = sellTaxForMarketing_; sellTaxForGiveaway = sellTaxForGiveaway_; return true; } function changeMaxTxAmount(uint256 _maxTxAmount) external onlyOwner returns (bool) { maxTxAmount = _maxTxAmount; return true; } function changeMaxWalletAmount(uint256 _maxWalletAmount) external onlyOwner returns (bool) { maxWalletAmount = _maxWalletAmount; return true; } receive() external payable {} }
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":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"},{"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":"buyTaxForGiveaway","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTaxForLiquidity_","type":"uint256"},{"internalType":"uint256","name":"buyTaxForMarketing_","type":"uint256"},{"internalType":"uint256","name":"buyTaxForGiveaway_","type":"uint256"}],"name":"changeBuyTaxForLMG","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeGiveawayWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"changeMaxTxAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletAmount","type":"uint256"}],"name":"changeMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"sellTaxForLiquidity_","type":"uint256"},{"internalType":"uint256","name":"sellTaxForMarketing_","type":"uint256"},{"internalType":"uint256","name":"sellTaxForGiveaway_","type":"uint256"}],"name":"changeSellTaxForLMG","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"giveawayWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","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":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxForGiveaway","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405260006006556000600755600060085560006009556000600a556000600b556012600a620000329190620009a3565b62989680620000429190620009f4565b600c556012600a620000559190620009a3565b6301312d00620000669190620009f4565b600d5573b9cca016e22f5ed51577b91fd2c9b3bfe9f0178b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073b9cca016e22f5ed51577b91fd2c9b3bfe9f0178b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620001239190620009a3565b620c3500620001339190620009f4565b6010556012600a620001469190620009a3565b620493e0620001569190620009f4565b601155600060125560006013556000601455600060155560006016553480156200017f57600080fd5b506040518060400160405280600d81526020017f50726f6f66206f662050657065000000000000000000000000000000000000008152506040518060400160405280600681526020017f504f5045504500000000000000000000000000000000000000000000000000008152508160039081620001fd919062000caf565b5080600490816200020f919062000caf565b5050506200023262000226620005f660201b60201c565b620005fe60201b60201c565b62000264336012600a620002479190620009a3565b633b9aca00620002589190620009f4565b620006c460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062000e00565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000357573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037d919062000e00565b6040518363ffffffff1660e01b81526004016200039c92919062000e43565b6020604051808303816000875af1158015620003bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e2919062000e00565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505060016017600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160176000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000f5c565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000736576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200072d9062000ed1565b60405180910390fd5b80600260008282546200074a919062000ef3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007fd919062000f3f565b60405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000897578086048111156200086f576200086e62000809565b5b60018516156200087f5780820291505b80810290506200088f8562000838565b94506200084f565b94509492505050565b600082620008b2576001905062000985565b81620008c2576000905062000985565b8160018114620008db5760028114620008e6576200091c565b600191505062000985565b60ff841115620008fb57620008fa62000809565b5b8360020a91508482111562000915576200091462000809565b5b5062000985565b5060208310610133831016604e8410600b8410161715620009565782820a90508381111562000950576200094f62000809565b5b62000985565b62000965848484600162000845565b925090508184048111156200097f576200097e62000809565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009b0826200098c565b9150620009bd8362000996565b9250620009ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008a0565b905092915050565b600062000a01826200098c565b915062000a0e836200098c565b925082820262000a1e816200098c565b9150828204841483151762000a385762000a3762000809565b5b5092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000ac157607f821691505b60208210810362000ad75762000ad662000a79565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000b417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b02565b62000b4d868362000b02565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000b9062000b8a62000b84846200098c565b62000b65565b6200098c565b9050919050565b6000819050919050565b62000bac8362000b6f565b62000bc462000bbb8262000b97565b84845462000b0f565b825550505050565b600090565b62000bdb62000bcc565b62000be881848462000ba1565b505050565b5b8181101562000c105762000c0460008262000bd1565b60018101905062000bee565b5050565b601f82111562000c5f5762000c298162000add565b62000c348462000af2565b8101602085101562000c44578190505b62000c5c62000c538562000af2565b83018262000bed565b50505b505050565b600082821c905092915050565b600062000c846000198460080262000c64565b1980831691505092915050565b600062000c9f838362000c71565b9150826002028217905092915050565b62000cba8262000a3f565b67ffffffffffffffff81111562000cd65762000cd562000a4a565b5b62000ce2825462000aa8565b62000cef82828562000c14565b600060209050601f83116001811462000d27576000841562000d12578287015190505b62000d1e858262000c91565b86555062000d8e565b601f19841662000d378662000add565b60005b8281101562000d615784890151825560018201915060208501945060208101905062000d3a565b8683101562000d81578489015162000d7d601f89168262000c71565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000dc88262000d9b565b9050919050565b62000dda8162000dbb565b811462000de657600080fd5b50565b60008151905062000dfa8162000dcf565b92915050565b60006020828403121562000e195762000e1862000d96565b5b600062000e298482850162000de9565b91505092915050565b62000e3d8162000dbb565b82525050565b600060408201905062000e5a600083018562000e32565b62000e69602083018462000e32565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000eb9601f8362000e70565b915062000ec68262000e81565b602082019050919050565b6000602082019050818103600083015262000eec8162000eaa565b9050919050565b600062000f00826200098c565b915062000f0d836200098c565b925082820190508082111562000f285762000f2762000809565b5b92915050565b62000f39816200098c565b82525050565b600060208201905062000f56600083018462000f2e565b92915050565b60805160a05161308a62000fc160003960008181610a8f015281816112bf015281816113140152818161138201526116b901526000818161096801528181611ab801528181611b9901528181611bc001528181611f1c0152611f43015261308a6000f3fe6080604052600436106101e75760003560e01c8063715018a611610102578063a457c2d711610095578063ccaf814011610064578063ccaf81401461076b578063dd62ed3e14610796578063ee340f50146107d3578063f2fde38b146107fe576101ee565b8063a457c2d714610689578063a9059cbb146106c6578063aa4bde2814610703578063bb85c6d11461072e576101ee565b806383c2a27d116100d157806383c2a27d146105cb5780638c0b5e22146106085780638da5cb5b1461063357806395d89b411461065e576101ee565b8063715018a61461052157806375f0a874146105385780637df573101461056357806381bfdcca1461058e576101ee565b80632b18b6dc1161017a5780635c9db064116101495780635c9db06414610451578063677daa571461047c57806367a12a6d146104b957806370a08231146104e4576101ee565b80632b18b6dc14610381578063313ce567146103be57806339509351146103e957806349bd5a5e14610426576101ee565b80631694505e116101b65780631694505e146102c357806318160ddd146102ee5780631e0b376e1461031957806323b872dd14610344576101ee565b8063029e8399146101f357806306fdde031461021e578063095ea7b3146102495780630f23e36f14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610827565b604051610215919061202b565b60405180910390f35b34801561022a57600080fd5b5061023361082d565b60405161024091906120d6565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612187565b6108bf565b60405161027d91906121e2565b60405180910390f35b34801561029257600080fd5b506102ad60048036038101906102a891906121fd565b6108e2565b6040516102ba91906121e2565b60405180910390f35b3480156102cf57600080fd5b506102d8610966565b6040516102e591906122af565b60405180910390f35b3480156102fa57600080fd5b5061030361098a565b604051610310919061202b565b60405180910390f35b34801561032557600080fd5b5061032e610994565b60405161033b919061202b565b60405180910390f35b34801561035057600080fd5b5061036b600480360381019061036691906122ca565b61099a565b60405161037891906121e2565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a391906121fd565b6109c9565b6040516103b591906121e2565b60405180910390f35b3480156103ca57600080fd5b506103d3610a4d565b6040516103e09190612339565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190612187565b610a56565b60405161041d91906121e2565b60405180910390f35b34801561043257600080fd5b5061043b610a8d565b6040516104489190612363565b60405180910390f35b34801561045d57600080fd5b50610466610ab1565b6040516104739190612363565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e919061237e565b610ad7565b6040516104b091906121e2565b60405180910390f35b3480156104c557600080fd5b506104ce610af1565b6040516104db919061202b565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906123ab565b610af7565b604051610518919061202b565b60405180910390f35b34801561052d57600080fd5b50610536610b3f565b005b34801561054457600080fd5b5061054d610b53565b60405161055a9190612363565b60405180910390f35b34801561056f57600080fd5b50610578610b79565b604051610585919061202b565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b0919061237e565b610b7f565b6040516105c291906121e2565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed91906123ab565b610b99565b6040516105ff91906121e2565b60405180910390f35b34801561061457600080fd5b5061061d610bed565b60405161062a919061202b565b60405180910390f35b34801561063f57600080fd5b50610648610bf3565b6040516106559190612363565b60405180910390f35b34801561066a57600080fd5b50610673610c1d565b60405161068091906120d6565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190612187565b610caf565b6040516106bd91906121e2565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e89190612187565b610d26565b6040516106fa91906121e2565b60405180910390f35b34801561070f57600080fd5b50610718610d49565b604051610725919061202b565b60405180910390f35b34801561073a57600080fd5b50610755600480360381019061075091906123ab565b610d4f565b60405161076291906121e2565b60405180910390f35b34801561077757600080fd5b50610780610da3565b60405161078d919061202b565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b891906123d8565b610da9565b6040516107ca919061202b565b60405180910390f35b3480156107df57600080fd5b506107e8610e30565b6040516107f5919061202b565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906123ab565b610e36565b005b600a5481565b60606003805461083c90612447565b80601f016020809104026020016040519081016040528092919081815260200182805461086890612447565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b5050505050905090565b6000806108ca610eb9565b90506108d7818585610ec1565b600191505092915050565b60006108ec61108a565b60648284866108fb91906124a7565b61090591906124a7565b1115610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d9061254d565b60405180910390fd5b8360098190555082600a8190555081600b81905550600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b60075481565b6000806109a5610eb9565b90506109b2858285611108565b6109bd858585611194565b60019150509392505050565b60006109d361108a565b60648284866109e291906124a7565b6109ec91906124a7565b1115610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a249061254d565b60405180910390fd5b836006819055508260078190555081600881905550600190509392505050565b60006012905090565b600080610a61610eb9565b9050610a82818585610a738589610da9565b610a7d91906124a7565b610ec1565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ae161108a565b81600c8190555060019050919050565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4761108a565b610b51600061185a565b565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6000610b8961108a565b81600d8190555060019050919050565b6000610ba361108a565b81600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600c5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c2c90612447565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5890612447565b8015610ca55780601f10610c7a57610100808354040283529160200191610ca5565b820191906000526020600020905b815481529060010190602001808311610c8857829003601f168201915b5050505050905090565b600080610cba610eb9565b90506000610cc88286610da9565b905083811015610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d04906125df565b60405180910390fd5b610d1a8286868403610ec1565b60019250505092915050565b600080610d31610eb9565b9050610d3e818585611194565b600191505092915050565b600d5481565b6000610d5961108a565b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b610e3e61108a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490612671565b60405180910390fd5b610eb68161185a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2790612703565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690612795565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161107d919061202b565b60405180910390a3505050565b611092610eb9565b73ffffffffffffffffffffffffffffffffffffffff166110b0610bf3565b73ffffffffffffffffffffffffffffffffffffffff1614611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd90612801565b60405180910390fd5b565b60006111148484610da9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461118e5781811015611180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111779061286d565b60405180910390fd5b61118d8484848403610ec1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa906128ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990612991565b60405180910390fd5b8061127c84610af7565b10156112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b490612a23565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061136257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b801561137b5750601860009054906101000a900460ff16155b15611849577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146115b9576113db611920565b60006013546012546113ec30610af7565b6113f69190612a43565b6114009190612a43565b905060105481106114175761141660105461193d565b5b601154601254106114e55761142d6011546119fe565b601154601260008282546114419190612a43565b925050819055506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050509050806114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90612ae9565b60405180910390fd5b505b601154601354106115b3576114fb6011546119fe565b6011546013600082825461150f9190612a43565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050509050806115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612b7b565b60405180910390fd5b505b506115c2565b6115c1611c7e565b5b6000601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116655750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561167257819050611838565b600c548211156116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90612c0d565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361176357600d5461171684610af7565b8361172191906124a7565b1115611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990612c9f565b60405180910390fd5b5b60006064601554846117759190612cbf565b61177f9190612d30565b905060006064601654856117939190612cbf565b61179d9190612d30565b905060006064601454866117b19190612cbf565b6117bb9190612d30565b90508082846117ca91906124a7565b6117d491906124a7565b856117df9190612a43565b935082601260008282546117f391906124a7565b92505081905550816013600082825461180c91906124a7565b92505081905550611834873083858761182591906124a7565b61182f91906124a7565b611c9b565b5050505b611843848483611c9b565b50611855565b611854838383611c9b565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600954601481905550600a54601581905550600b54601681905550565b6001601860006101000a81548160ff02191690831515021790555060006002826119679190612d30565b9050600081836119779190612a43565b90506000479050611987836119fe565b600081476119959190612a43565b90506119a18382611efb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516119d493929190612d61565b60405180910390a1505050506000601860006101000a81548160ff02191690831515021790555050565b6001601860006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a3657611a35612d98565b5b604051908082528060200260200182016040528015611a645781602001602082028036833780820191505090505b5090503081600081518110611a7c57611a7b612dc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b459190612e0b565b81600181518110611b5957611b58612dc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bbe307f000000000000000000000000000000000000000000000000000000000000000084610ec1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c42611c0d91906124a7565b6040518663ffffffff1660e01b8152600401611c2d959493929190612f31565b600060405180830381600087803b158015611c4757600080fd5b505af1158015611c5b573d6000803e3d6000fd5b50505050506000601860006101000a81548160ff02191690831515021790555050565b600654601481905550600754601581905550600854601681905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d01906128ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090612991565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df690612a23565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eed919061202b565b60405180910390a350505050565b6001601860006101000a81548160ff021916908315150217905550611f41307f000000000000000000000000000000000000000000000000000000000000000084610ec1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611f8b610bf3565b426040518863ffffffff1660e01b8152600401611fad96959493929190612f8b565b60606040518083038185885af1158015611fcb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ff09190613001565b5050506000601860006101000a81548160ff0219169083151502179055505050565b6000819050919050565b61202581612012565b82525050565b6000602082019050612040600083018461201c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612080578082015181840152602081019050612065565b60008484015250505050565b6000601f19601f8301169050919050565b60006120a882612046565b6120b28185612051565b93506120c2818560208601612062565b6120cb8161208c565b840191505092915050565b600060208201905081810360008301526120f0818461209d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612128826120fd565b9050919050565b6121388161211d565b811461214357600080fd5b50565b6000813590506121558161212f565b92915050565b61216481612012565b811461216f57600080fd5b50565b6000813590506121818161215b565b92915050565b6000806040838503121561219e5761219d6120f8565b5b60006121ac85828601612146565b92505060206121bd85828601612172565b9150509250929050565b60008115159050919050565b6121dc816121c7565b82525050565b60006020820190506121f760008301846121d3565b92915050565b600080600060608486031215612216576122156120f8565b5b600061222486828701612172565b935050602061223586828701612172565b925050604061224686828701612172565b9150509250925092565b6000819050919050565b600061227561227061226b846120fd565b612250565b6120fd565b9050919050565b60006122878261225a565b9050919050565b60006122998261227c565b9050919050565b6122a98161228e565b82525050565b60006020820190506122c460008301846122a0565b92915050565b6000806000606084860312156122e3576122e26120f8565b5b60006122f186828701612146565b935050602061230286828701612146565b925050604061231386828701612172565b9150509250925092565b600060ff82169050919050565b6123338161231d565b82525050565b600060208201905061234e600083018461232a565b92915050565b61235d8161211d565b82525050565b60006020820190506123786000830184612354565b92915050565b600060208284031215612394576123936120f8565b5b60006123a284828501612172565b91505092915050565b6000602082840312156123c1576123c06120f8565b5b60006123cf84828501612146565b91505092915050565b600080604083850312156123ef576123ee6120f8565b5b60006123fd85828601612146565b925050602061240e85828601612146565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061245f57607f821691505b60208210810361247257612471612418565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124b282612012565b91506124bd83612012565b92508282019050808211156124d5576124d4612478565b5b92915050565b7f45524332303a20746f74616c20746178206d757374206e6f742062652067726560008201527f61746572207468616e2031303000000000000000000000000000000000000000602082015250565b6000612537602d83612051565b9150612542826124db565b604082019050919050565b600060208201905081810360008301526125668161252a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006125c9602583612051565b91506125d48261256d565b604082019050919050565b600060208201905081810360008301526125f8816125bc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061265b602683612051565b9150612666826125ff565b604082019050919050565b6000602082019050818103600083015261268a8161264e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006126ed602483612051565b91506126f882612691565b604082019050919050565b6000602082019050818103600083015261271c816126e0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061277f602283612051565b915061278a82612723565b604082019050919050565b600060208201905081810360008301526127ae81612772565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127eb602083612051565b91506127f6826127b5565b602082019050919050565b6000602082019050818103600083015261281a816127de565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612857601d83612051565b915061286282612821565b602082019050919050565b600060208201905081810360008301526128868161284a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006128e9602583612051565b91506128f48261288d565b604082019050919050565b60006020820190508181036000830152612918816128dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061297b602383612051565b91506129868261291f565b604082019050919050565b600060208201905081810360008301526129aa8161296e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a0d602683612051565b9150612a18826129b1565b604082019050919050565b60006020820190508181036000830152612a3c81612a00565b9050919050565b6000612a4e82612012565b9150612a5983612012565b9250828203905081811115612a7157612a70612478565b5b92915050565b7f4661696c656420746f2073656e642045544820746f206d61726b6574696e672060008201527f77616c6c65740000000000000000000000000000000000000000000000000000602082015250565b6000612ad3602683612051565b9150612ade82612a77565b604082019050919050565b60006020820190508181036000830152612b0281612ac6565b9050919050565b7f4661696c656420746f2073656e642045544820746f206769766561776179207760008201527f616c6c6574000000000000000000000000000000000000000000000000000000602082015250565b6000612b65602583612051565b9150612b7082612b09565b604082019050919050565b60006020820190508181036000830152612b9481612b58565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b6000612bf7603983612051565b9150612c0282612b9b565b604082019050919050565b60006020820190508181036000830152612c2681612bea565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b6000612c89603683612051565b9150612c9482612c2d565b604082019050919050565b60006020820190508181036000830152612cb881612c7c565b9050919050565b6000612cca82612012565b9150612cd583612012565b9250828202612ce381612012565b91508282048414831517612cfa57612cf9612478565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d3b82612012565b9150612d4683612012565b925082612d5657612d55612d01565b5b828204905092915050565b6000606082019050612d76600083018661201c565b612d83602083018561201c565b612d90604083018461201c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e058161212f565b92915050565b600060208284031215612e2157612e206120f8565b5b6000612e2f84828501612df6565b91505092915050565b6000819050919050565b6000612e5d612e58612e5384612e38565b612250565b612012565b9050919050565b612e6d81612e42565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ea88161211d565b82525050565b6000612eba8383612e9f565b60208301905092915050565b6000602082019050919050565b6000612ede82612e73565b612ee88185612e7e565b9350612ef383612e8f565b8060005b83811015612f24578151612f0b8882612eae565b9750612f1683612ec6565b925050600181019050612ef7565b5085935050505092915050565b600060a082019050612f46600083018861201c565b612f536020830187612e64565b8181036040830152612f658186612ed3565b9050612f746060830185612354565b612f81608083018461201c565b9695505050505050565b600060c082019050612fa06000830189612354565b612fad602083018861201c565b612fba6040830187612e64565b612fc76060830186612e64565b612fd46080830185612354565b612fe160a083018461201c565b979650505050505050565b600081519050612ffb8161215b565b92915050565b60008060006060848603121561301a576130196120f8565b5b600061302886828701612fec565b935050602061303986828701612fec565b925050604061304a86828701612fec565b915050925092509256fea26469706673582212205ad5a82a0aa6d5a5cf4351dc9f3f708cc4f902d7fa76d71c3a882855f6adb16d64736f6c63430008110033
Deployed Bytecode
0x6080604052600436106101e75760003560e01c8063715018a611610102578063a457c2d711610095578063ccaf814011610064578063ccaf81401461076b578063dd62ed3e14610796578063ee340f50146107d3578063f2fde38b146107fe576101ee565b8063a457c2d714610689578063a9059cbb146106c6578063aa4bde2814610703578063bb85c6d11461072e576101ee565b806383c2a27d116100d157806383c2a27d146105cb5780638c0b5e22146106085780638da5cb5b1461063357806395d89b411461065e576101ee565b8063715018a61461052157806375f0a874146105385780637df573101461056357806381bfdcca1461058e576101ee565b80632b18b6dc1161017a5780635c9db064116101495780635c9db06414610451578063677daa571461047c57806367a12a6d146104b957806370a08231146104e4576101ee565b80632b18b6dc14610381578063313ce567146103be57806339509351146103e957806349bd5a5e14610426576101ee565b80631694505e116101b65780631694505e146102c357806318160ddd146102ee5780631e0b376e1461031957806323b872dd14610344576101ee565b8063029e8399146101f357806306fdde031461021e578063095ea7b3146102495780630f23e36f14610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610827565b604051610215919061202b565b60405180910390f35b34801561022a57600080fd5b5061023361082d565b60405161024091906120d6565b60405180910390f35b34801561025557600080fd5b50610270600480360381019061026b9190612187565b6108bf565b60405161027d91906121e2565b60405180910390f35b34801561029257600080fd5b506102ad60048036038101906102a891906121fd565b6108e2565b6040516102ba91906121e2565b60405180910390f35b3480156102cf57600080fd5b506102d8610966565b6040516102e591906122af565b60405180910390f35b3480156102fa57600080fd5b5061030361098a565b604051610310919061202b565b60405180910390f35b34801561032557600080fd5b5061032e610994565b60405161033b919061202b565b60405180910390f35b34801561035057600080fd5b5061036b600480360381019061036691906122ca565b61099a565b60405161037891906121e2565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a391906121fd565b6109c9565b6040516103b591906121e2565b60405180910390f35b3480156103ca57600080fd5b506103d3610a4d565b6040516103e09190612339565b60405180910390f35b3480156103f557600080fd5b50610410600480360381019061040b9190612187565b610a56565b60405161041d91906121e2565b60405180910390f35b34801561043257600080fd5b5061043b610a8d565b6040516104489190612363565b60405180910390f35b34801561045d57600080fd5b50610466610ab1565b6040516104739190612363565b60405180910390f35b34801561048857600080fd5b506104a3600480360381019061049e919061237e565b610ad7565b6040516104b091906121e2565b60405180910390f35b3480156104c557600080fd5b506104ce610af1565b6040516104db919061202b565b60405180910390f35b3480156104f057600080fd5b5061050b600480360381019061050691906123ab565b610af7565b604051610518919061202b565b60405180910390f35b34801561052d57600080fd5b50610536610b3f565b005b34801561054457600080fd5b5061054d610b53565b60405161055a9190612363565b60405180910390f35b34801561056f57600080fd5b50610578610b79565b604051610585919061202b565b60405180910390f35b34801561059a57600080fd5b506105b560048036038101906105b0919061237e565b610b7f565b6040516105c291906121e2565b60405180910390f35b3480156105d757600080fd5b506105f260048036038101906105ed91906123ab565b610b99565b6040516105ff91906121e2565b60405180910390f35b34801561061457600080fd5b5061061d610bed565b60405161062a919061202b565b60405180910390f35b34801561063f57600080fd5b50610648610bf3565b6040516106559190612363565b60405180910390f35b34801561066a57600080fd5b50610673610c1d565b60405161068091906120d6565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190612187565b610caf565b6040516106bd91906121e2565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e89190612187565b610d26565b6040516106fa91906121e2565b60405180910390f35b34801561070f57600080fd5b50610718610d49565b604051610725919061202b565b60405180910390f35b34801561073a57600080fd5b50610755600480360381019061075091906123ab565b610d4f565b60405161076291906121e2565b60405180910390f35b34801561077757600080fd5b50610780610da3565b60405161078d919061202b565b60405180910390f35b3480156107a257600080fd5b506107bd60048036038101906107b891906123d8565b610da9565b6040516107ca919061202b565b60405180910390f35b3480156107df57600080fd5b506107e8610e30565b6040516107f5919061202b565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906123ab565b610e36565b005b600a5481565b60606003805461083c90612447565b80601f016020809104026020016040519081016040528092919081815260200182805461086890612447565b80156108b55780601f1061088a576101008083540402835291602001916108b5565b820191906000526020600020905b81548152906001019060200180831161089857829003601f168201915b5050505050905090565b6000806108ca610eb9565b90506108d7818585610ec1565b600191505092915050565b60006108ec61108a565b60648284866108fb91906124a7565b61090591906124a7565b1115610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d9061254d565b60405180910390fd5b8360098190555082600a8190555081600b81905550600190509392505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b60075481565b6000806109a5610eb9565b90506109b2858285611108565b6109bd858585611194565b60019150509392505050565b60006109d361108a565b60648284866109e291906124a7565b6109ec91906124a7565b1115610a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a249061254d565b60405180910390fd5b836006819055508260078190555081600881905550600190509392505050565b60006012905090565b600080610a61610eb9565b9050610a82818585610a738589610da9565b610a7d91906124a7565b610ec1565b600191505092915050565b7f000000000000000000000000b3265a7ef05520942d848fa2d92d497beb80971281565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ae161108a565b81600c8190555060019050919050565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4761108a565b610b51600061185a565b565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6000610b8961108a565b81600d8190555060019050919050565b6000610ba361108a565b81600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600c5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610c2c90612447565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5890612447565b8015610ca55780601f10610c7a57610100808354040283529160200191610ca5565b820191906000526020600020905b815481529060010190602001808311610c8857829003601f168201915b5050505050905090565b600080610cba610eb9565b90506000610cc88286610da9565b905083811015610d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d04906125df565b60405180910390fd5b610d1a8286868403610ec1565b60019250505092915050565b600080610d31610eb9565b9050610d3e818585611194565b600191505092915050565b600d5481565b6000610d5961108a565b81600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b600b5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b610e3e61108a565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea490612671565b60405180910390fd5b610eb68161185a565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2790612703565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9690612795565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161107d919061202b565b60405180910390a3505050565b611092610eb9565b73ffffffffffffffffffffffffffffffffffffffff166110b0610bf3565b73ffffffffffffffffffffffffffffffffffffffff1614611106576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fd90612801565b60405180910390fd5b565b60006111148484610da9565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461118e5781811015611180576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111779061286d565b60405180910390fd5b61118d8484848403610ec1565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa906128ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990612991565b60405180910390fd5b8061127c84610af7565b10156112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b490612a23565b60405180910390fd5b7f000000000000000000000000b3265a7ef05520942d848fa2d92d497beb80971273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061136257507f000000000000000000000000b3265a7ef05520942d848fa2d92d497beb80971273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b801561137b5750601860009054906101000a900460ff16155b15611849577f000000000000000000000000b3265a7ef05520942d848fa2d92d497beb80971273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146115b9576113db611920565b60006013546012546113ec30610af7565b6113f69190612a43565b6114009190612a43565b905060105481106114175761141660105461193d565b5b601154601254106114e55761142d6011546119fe565b601154601260008282546114419190612a43565b925050819055506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050509050806114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da90612ae9565b60405180910390fd5b505b601154601354106115b3576114fb6011546119fe565b6011546013600082825461150f9190612a43565b925050819055506000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050509050806115b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a890612b7b565b60405180910390fd5b505b506115c2565b6115c1611c7e565b5b6000601760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806116655750601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561167257819050611838565b600c548211156116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ae90612c0d565b60405180910390fd5b7f000000000000000000000000b3265a7ef05520942d848fa2d92d497beb80971273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361176357600d5461171684610af7565b8361172191906124a7565b1115611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990612c9f565b60405180910390fd5b5b60006064601554846117759190612cbf565b61177f9190612d30565b905060006064601654856117939190612cbf565b61179d9190612d30565b905060006064601454866117b19190612cbf565b6117bb9190612d30565b90508082846117ca91906124a7565b6117d491906124a7565b856117df9190612a43565b935082601260008282546117f391906124a7565b92505081905550816013600082825461180c91906124a7565b92505081905550611834873083858761182591906124a7565b61182f91906124a7565b611c9b565b5050505b611843848483611c9b565b50611855565b611854838383611c9b565b5b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600954601481905550600a54601581905550600b54601681905550565b6001601860006101000a81548160ff02191690831515021790555060006002826119679190612d30565b9050600081836119779190612a43565b90506000479050611987836119fe565b600081476119959190612a43565b90506119a18382611efb565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618482856040516119d493929190612d61565b60405180910390a1505050506000601860006101000a81548160ff02191690831515021790555050565b6001601860006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611a3657611a35612d98565b5b604051908082528060200260200182016040528015611a645781602001602082028036833780820191505090505b5090503081600081518110611a7c57611a7b612dc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b459190612e0b565b81600181518110611b5957611b58612dc7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611bbe307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ec1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c42611c0d91906124a7565b6040518663ffffffff1660e01b8152600401611c2d959493929190612f31565b600060405180830381600087803b158015611c4757600080fd5b505af1158015611c5b573d6000803e3d6000fd5b50505050506000601860006101000a81548160ff02191690831515021790555050565b600654601481905550600754601581905550600854601681905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d01906128ff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7090612991565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df690612a23565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eed919061202b565b60405180910390a350505050565b6001601860006101000a81548160ff021916908315150217905550611f41307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ec1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611f8b610bf3565b426040518863ffffffff1660e01b8152600401611fad96959493929190612f8b565b60606040518083038185885af1158015611fcb573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611ff09190613001565b5050506000601860006101000a81548160ff0219169083151502179055505050565b6000819050919050565b61202581612012565b82525050565b6000602082019050612040600083018461201c565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612080578082015181840152602081019050612065565b60008484015250505050565b6000601f19601f8301169050919050565b60006120a882612046565b6120b28185612051565b93506120c2818560208601612062565b6120cb8161208c565b840191505092915050565b600060208201905081810360008301526120f0818461209d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612128826120fd565b9050919050565b6121388161211d565b811461214357600080fd5b50565b6000813590506121558161212f565b92915050565b61216481612012565b811461216f57600080fd5b50565b6000813590506121818161215b565b92915050565b6000806040838503121561219e5761219d6120f8565b5b60006121ac85828601612146565b92505060206121bd85828601612172565b9150509250929050565b60008115159050919050565b6121dc816121c7565b82525050565b60006020820190506121f760008301846121d3565b92915050565b600080600060608486031215612216576122156120f8565b5b600061222486828701612172565b935050602061223586828701612172565b925050604061224686828701612172565b9150509250925092565b6000819050919050565b600061227561227061226b846120fd565b612250565b6120fd565b9050919050565b60006122878261225a565b9050919050565b60006122998261227c565b9050919050565b6122a98161228e565b82525050565b60006020820190506122c460008301846122a0565b92915050565b6000806000606084860312156122e3576122e26120f8565b5b60006122f186828701612146565b935050602061230286828701612146565b925050604061231386828701612172565b9150509250925092565b600060ff82169050919050565b6123338161231d565b82525050565b600060208201905061234e600083018461232a565b92915050565b61235d8161211d565b82525050565b60006020820190506123786000830184612354565b92915050565b600060208284031215612394576123936120f8565b5b60006123a284828501612172565b91505092915050565b6000602082840312156123c1576123c06120f8565b5b60006123cf84828501612146565b91505092915050565b600080604083850312156123ef576123ee6120f8565b5b60006123fd85828601612146565b925050602061240e85828601612146565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061245f57607f821691505b60208210810361247257612471612418565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006124b282612012565b91506124bd83612012565b92508282019050808211156124d5576124d4612478565b5b92915050565b7f45524332303a20746f74616c20746178206d757374206e6f742062652067726560008201527f61746572207468616e2031303000000000000000000000000000000000000000602082015250565b6000612537602d83612051565b9150612542826124db565b604082019050919050565b600060208201905081810360008301526125668161252a565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006125c9602583612051565b91506125d48261256d565b604082019050919050565b600060208201905081810360008301526125f8816125bc565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061265b602683612051565b9150612666826125ff565b604082019050919050565b6000602082019050818103600083015261268a8161264e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006126ed602483612051565b91506126f882612691565b604082019050919050565b6000602082019050818103600083015261271c816126e0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061277f602283612051565b915061278a82612723565b604082019050919050565b600060208201905081810360008301526127ae81612772565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127eb602083612051565b91506127f6826127b5565b602082019050919050565b6000602082019050818103600083015261281a816127de565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612857601d83612051565b915061286282612821565b602082019050919050565b600060208201905081810360008301526128868161284a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006128e9602583612051565b91506128f48261288d565b604082019050919050565b60006020820190508181036000830152612918816128dc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061297b602383612051565b91506129868261291f565b604082019050919050565b600060208201905081810360008301526129aa8161296e565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612a0d602683612051565b9150612a18826129b1565b604082019050919050565b60006020820190508181036000830152612a3c81612a00565b9050919050565b6000612a4e82612012565b9150612a5983612012565b9250828203905081811115612a7157612a70612478565b5b92915050565b7f4661696c656420746f2073656e642045544820746f206d61726b6574696e672060008201527f77616c6c65740000000000000000000000000000000000000000000000000000602082015250565b6000612ad3602683612051565b9150612ade82612a77565b604082019050919050565b60006020820190508181036000830152612b0281612ac6565b9050919050565b7f4661696c656420746f2073656e642045544820746f206769766561776179207760008201527f616c6c6574000000000000000000000000000000000000000000000000000000602082015250565b6000612b65602583612051565b9150612b7082612b09565b604082019050919050565b60006020820190508181036000830152612b9481612b58565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b6000612bf7603983612051565b9150612c0282612b9b565b604082019050919050565b60006020820190508181036000830152612c2681612bea565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b6000612c89603683612051565b9150612c9482612c2d565b604082019050919050565b60006020820190508181036000830152612cb881612c7c565b9050919050565b6000612cca82612012565b9150612cd583612012565b9250828202612ce381612012565b91508282048414831517612cfa57612cf9612478565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d3b82612012565b9150612d4683612012565b925082612d5657612d55612d01565b5b828204905092915050565b6000606082019050612d76600083018661201c565b612d83602083018561201c565b612d90604083018461201c565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e058161212f565b92915050565b600060208284031215612e2157612e206120f8565b5b6000612e2f84828501612df6565b91505092915050565b6000819050919050565b6000612e5d612e58612e5384612e38565b612250565b612012565b9050919050565b612e6d81612e42565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ea88161211d565b82525050565b6000612eba8383612e9f565b60208301905092915050565b6000602082019050919050565b6000612ede82612e73565b612ee88185612e7e565b9350612ef383612e8f565b8060005b83811015612f24578151612f0b8882612eae565b9750612f1683612ec6565b925050600181019050612ef7565b5085935050505092915050565b600060a082019050612f46600083018861201c565b612f536020830187612e64565b8181036040830152612f658186612ed3565b9050612f746060830185612354565b612f81608083018461201c565b9695505050505050565b600060c082019050612fa06000830189612354565b612fad602083018861201c565b612fba6040830187612e64565b612fc76060830186612e64565b612fd46080830185612354565b612fe160a083018461201c565b979650505050505050565b600081519050612ffb8161215b565b92915050565b60008060006060848603121561301a576130196120f8565b5b600061302886828701612fec565b935050602061303986828701612fec565b925050604061304a86828701612fec565b915050925092509256fea26469706673582212205ad5a82a0aa6d5a5cf4351dc9f3f708cc4f902d7fa76d71c3a882855f6adb16d64736f6c63430008110033
Deployed Bytecode Sourcemap
28181:10301:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28684:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17899:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20174:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37453:589;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29299:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19038:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28552:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20998:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36886:559;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18880:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22714:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29357:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28981:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38050:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28596:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18064:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15158:103;;;;;;;;;;;;;:::i;:::-;;28899:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28639:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;38242:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36316:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28775:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14510:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17723:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21798:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19618:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28835:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36124:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28729:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19211:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28508:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15416:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28684:38;;;;:::o;17899:102::-;17955:13;17988:5;17981:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17899:102;:::o;20174:244::-;20295:4;20317:13;20333:12;:10;:12::i;:::-;20317:28;;20356:32;20365:5;20372:7;20381:6;20356:8;:32::i;:::-;20406:4;20399:11;;;20174:244;;;;:::o;37453:589::-;37633:4;14396:13;:11;:13::i;:::-;37777:3:::1;37753:19;37713:20;37673;:60;;;;:::i;:::-;:99;;;;:::i;:::-;37672:108;;37650:203;;;;;;;;;;;;:::i;:::-;;;;;;;;;37886:20;37864:19;:42;;;;37939:20;37917:19;:42;;;;37991:19;37970:18;:40;;;;38030:4;38023:11;;37453:589:::0;;;;;:::o;29299:51::-;;;:::o;19038:110::-;19101:7;19128:12;;19121:19;;19038:110;:::o;28552:37::-;;;;:::o;20998:297::-;21131:4;21148:15;21166:12;:10;:12::i;:::-;21148:30;;21189:38;21205:4;21211:7;21220:6;21189:15;:38::i;:::-;21238:27;21248:4;21254:2;21258:6;21238:9;:27::i;:::-;21283:4;21276:11;;;20998:297;;;;;:::o;36886:559::-;37062:4;14396:13;:11;:13::i;:::-;37186:3:::1;37146:18;37124:19;37102;:41;;;;:::i;:::-;:62;;;;:::i;:::-;37101:88;;37079:183;;;;;;;;;;;;:::i;:::-;;;;;;;;;37294:19;37273:18;:40;;;;37345:19;37324:18;:40;;;;37395:18;37375:17;:38;;;;37433:4;37426:11;;36886:559:::0;;;;;:::o;18880:93::-;18938:5;18963:2;18956:9;;18880:93;:::o;22714:272::-;22831:4;22853:13;22869:12;:10;:12::i;:::-;22853:28;;22892:64;22901:5;22908:7;22945:10;22917:25;22927:5;22934:7;22917:9;:25::i;:::-;:38;;;;:::i;:::-;22892:8;:64::i;:::-;22974:4;22967:11;;;22714:272;;;;:::o;29357:38::-;;;:::o;28981:74::-;;;;;;;;;;;;;:::o;38050:184::-;38154:4;14396:13;:11;:13::i;:::-;38190:12:::1;38176:11;:26;;;;38222:4;38215:11;;38050:184:::0;;;:::o;28596:36::-;;;;:::o;18064:177::-;18183:7;18215:9;:18;18225:7;18215:18;;;;;;;;;;;;;;;;18208:25;;18064:177;;;:::o;15158:103::-;14396:13;:11;:13::i;:::-;15223:30:::1;15250:1;15223:18;:30::i;:::-;15158:103::o:0;28899:75::-;;;;;;;;;;;;;:::o;28639:38::-;;;;:::o;38242:200::-;38354:4;14396:13;:11;:13::i;:::-;38394:16:::1;38376:15;:34;;;;38430:4;38423:11;;38242:200:::0;;;:::o;36316:182::-;36420:4;14396:13;:11;:13::i;:::-;36459:9:::1;36442:14;;:26;;;;;;;;;;;;;;;;;;36486:4;36479:11;;36316:182:::0;;;:::o;28775:53::-;;;;:::o;14510:87::-;14556:7;14583:6;;;;;;;;;;;14576:13;;14510:87;:::o;17723:106::-;17781:13;17814:7;17807:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17723:106;:::o;21798:507::-;21920:4;21942:13;21958:12;:10;:12::i;:::-;21942:28;;21981:24;22008:25;22018:5;22025:7;22008:9;:25::i;:::-;21981:52;;22086:15;22066:16;:35;;22044:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;22202:60;22211:5;22218:7;22246:15;22227:16;:34;22202:8;:60::i;:::-;22293:4;22286:11;;;;21798:507;;;;:::o;19618:236::-;19735:4;19757:13;19773:12;:10;:12::i;:::-;19757:28;;19796;19806:5;19813:2;19817:6;19796:9;:28::i;:::-;19842:4;19835:11;;;19618:236;;;;:::o;28835:57::-;;;;:::o;36124:184::-;36229:4;14396:13;:11;:13::i;:::-;36269:9:::1;36251:15;;:27;;;;;;;;;;;;;;;;;;36296:4;36289:11;;36124:184:::0;;;:::o;28729:37::-;;;;:::o;19211:201::-;19345:7;19377:11;:18;19389:5;19377:18;;;;;;;;;;;;;;;:27;19396:7;19377:27;;;;;;;;;;;;;;;;19370:34;;19211:201;;;;:::o;28508:37::-;;;;:::o;15416:238::-;14396:13;:11;:13::i;:::-;15539:1:::1;15519:22;;:8;:22;;::::0;15497:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15618:28;15637:8;15618:18;:28::i;:::-;15416:238:::0;:::o;13303:98::-;13356:7;13383:10;13376:17;;13303:98;:::o;25021:380::-;25174:1;25157:19;;:5;:19;;;25149:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25255:1;25236:21;;:7;:21;;;25228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25339:6;25309:11;:18;25321:5;25309:18;;;;;;;;;;;;;;;:27;25328:7;25309:27;;;;;;;;;;;;;;;:36;;;;25377:7;25361:32;;25370:5;25361:32;;;25386:6;25361:32;;;;;;:::i;:::-;;;;;;;;25021:380;;;:::o;14675:132::-;14750:12;:10;:12::i;:::-;14739:23;;:7;:5;:7::i;:::-;:23;;;14731:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14675:132::o;25692:502::-;25827:24;25854:25;25864:5;25871:7;25854:9;:25::i;:::-;25827:52;;25914:17;25894:16;:37;25890:297;;25994:6;25974:16;:26;;25948:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;26109:51;26118:5;26125:7;26153:6;26134:16;:25;26109:8;:51::i;:::-;25890:297;25816:378;25692:502;;;:::o;31389:3335::-;31537:1;31521:18;;:4;:18;;;31513:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31614:1;31600:16;;:2;:16;;;31592:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;31708:6;31689:15;31699:4;31689:9;:15::i;:::-;:25;;31667:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;31820:13;31812:21;;:4;:21;;;:44;;;;31843:13;31837:19;;:2;:19;;;31812:44;31811:67;;;;;31862:16;;;;;;;;;;;31861:17;31811:67;31793:2924;;;31917:13;31909:21;;:4;:21;;;31905:1377;;31951:13;:11;:13::i;:::-;31983:32;32108:17;;32066:18;;32018:24;32036:4;32018:9;:24::i;:::-;:66;;;;:::i;:::-;:107;;;;:::i;:::-;31983:142;;32198:30;;32170:24;:58;32144:194;;32271:47;32287:30;;32271:15;:47::i;:::-;32144:194;32384:24;;32361:18;;32360:48;32356:422;;32433:43;32451:24;;32433:17;:43::i;:::-;32521:24;;32499:18;;:46;;;;;;;:::i;:::-;;;;;;;;32568:9;32588:15;;;;;;;;;;;32580:29;;:100;32636:21;32580:100;;;;;;;;;;;;;;;;;;;;;;;32568:112;;32711:4;32703:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;32410:368;32356:422;32823:24;;32801:17;;32800:47;32796:418;;32872:43;32890:24;;32872:17;:43::i;:::-;32959:24;;32938:17;;:45;;;;;;;:::i;:::-;;;;;;;;33006:9;33026:14;;;;;;;;;;;33018:28;;:99;33073:21;33018:99;;;;;;;;;;;;;;;;;;;;;;;33006:111;;33148:4;33140:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;32849:365;32796:418;31932:1297;31905:1377;;;33254:12;:10;:12::i;:::-;31905:1377;33298:22;33339:18;:24;33358:4;33339:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;33367:18;:22;33386:2;33367:22;;;;;;;;;;;;;;;;;;;;;;;;;33339:50;33335:1249;;;33427:6;33410:23;;33335:1249;;;33514:11;;33504:6;:21;;33474:152;;;;;;;;;;;;:::i;:::-;;;;;;;;;33657:13;33649:21;;:4;:21;;;33645:253;;33757:15;;33739:13;33749:2;33739:9;:13::i;:::-;33730:6;:22;;;;:::i;:::-;33729:43;;33695:183;;;;;;;;;;;;:::i;:::-;;;;;;;;;33645:253;33918:22;33974:3;33954:16;;33945:6;:25;;;;:::i;:::-;33944:33;;;;:::i;:::-;33918:60;;33997:21;34051:3;34032:15;;34023:6;:24;;;;:::i;:::-;34022:32;;;;:::i;:::-;33997:58;;34074:22;34130:3;34110:16;;34101:6;:25;;;;:::i;:::-;34100:33;;;;:::i;:::-;34074:60;;34255:14;34239:13;34222:14;:30;;;;:::i;:::-;:47;;;;:::i;:::-;34191:6;:79;;;;:::i;:::-;34153:117;;34311:14;34289:18;;:36;;;;;;;:::i;:::-;;;;;;;;34365:13;34344:17;;:34;;;;;;;:::i;:::-;;;;;;;;34399:169;34437:4;34472;34534:14;34518:13;34501:14;:30;;;;:::i;:::-;:47;;;;:::i;:::-;34399:15;:169::i;:::-;33455:1129;;;33335:1249;34598:41;34614:4;34620:2;34624:14;34598:15;:41::i;:::-;31890:2761;31793:2924;;;34672:33;34688:4;34694:2;34698:6;34672:15;:33::i;:::-;31793:2924;31389:3335;;;:::o;15814:191::-;15888:16;15907:6;;;;;;;;;;;15888:25;;15933:8;15924:6;;:17;;;;;;;;;;;;;;;;;;15988:8;15957:40;;15978:8;15957:40;;;;;;;;;;;;15877:128;15814:191;:::o;36694:184::-;36755:19;;36736:16;:38;;;;36804:19;;36785:16;:38;;;;36852:18;;36834:15;:36;;;;36694:184::o;34732:474::-;29895:4;29876:16;;:23;;;;;;;;;;;;;;;;;;34818:12:::1;34857:1;34834:20;:24;;;;:::i;:::-;34818:41;;34870:17;34914:4;34891:20;:27;;;;:::i;:::-;34870:49;;34932:22;34957:21;34932:46;;34991:23;35009:4;34991:17;:23::i;:::-;35027:18;35073:14;35049:21;:38;;;;:::i;:::-;35027:61;;35101:36;35115:9;35126:10;35101:13;:36::i;:::-;35155:43;35170:4;35176:10;35188:9;35155:43;;;;;;;;:::i;:::-;;;;;;;;34807:399;;;;29941:5:::0;29922:16;;:24;;;;;;;;;;;;;;;;;;34732:474;:::o;35214:496::-;29895:4;29876:16;;:23;;;;;;;;;;;;;;;;;;35293:21:::1;35331:1;35317:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35293:40;;35362:4;35344;35349:1;35344:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;35388:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35378:4;35383:1;35378:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;35423:62;35440:4;35455:15;35473:11;35423:8;:62::i;:::-;35498:15;:66;;;35579:11;35605:1;35621:4;35648;35687:3;35669:15;:21;;;;:::i;:::-;35498:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;35282:428;29941:5:::0;29922:16;;:24;;;;;;;;;;;;;;;;;;35214:496;:::o;36506:180::-;36566:18;;36547:16;:37;;;;36614:18;;36595:16;:37;;;;36661:17;;36643:15;:35;;;;36506:180::o;26202:776::-;26349:1;26333:18;;:4;:18;;;26325:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26426:1;26412:16;;:2;:16;;;26404:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26481:19;26503:9;:15;26513:4;26503:15;;;;;;;;;;;;;;;;26481:37;;26566:6;26551:11;:21;;26529:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;26706:6;26692:11;:20;26674:9;:15;26684:4;26674:15;;;;;;;;;;;;;;;:38;;;;26909:6;26892:9;:13;26902:2;26892:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26959:2;26944:26;;26953:4;26944:26;;;26963:6;26944:26;;;;;;:::i;:::-;;;;;;;;26314:664;26202:776;;;:::o;35718:398::-;29895:4;29876:16;;:23;;;;;;;;;;;;;;;;;;35835:62:::1;35852:4;35867:15;35885:11;35835:8;:62::i;:::-;35910:15;:31;;;35949:9;35982:4;36002:11;36028:1;36044::::0;36060:7:::1;:5;:7::i;:::-;36082:15;35910:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;29941:5:::0;29922:16;;:24;;;;;;;;;;;;;;;;;;35718:398;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:60::-;4451:3;4472:5;4465:12;;4423:60;;;:::o;4489:142::-;4539:9;4572:53;4590:34;4599:24;4617:5;4599:24;:::i;:::-;4590:34;:::i;:::-;4572:53;:::i;:::-;4559:66;;4489:142;;;:::o;4637:126::-;4687:9;4720:37;4751:5;4720:37;:::i;:::-;4707:50;;4637:126;;;:::o;4769:152::-;4845:9;4878:37;4909:5;4878:37;:::i;:::-;4865:50;;4769:152;;;:::o;4927:183::-;5040:63;5097:5;5040:63;:::i;:::-;5035:3;5028:76;4927:183;;:::o;5116:274::-;5235:4;5273:2;5262:9;5258:18;5250:26;;5286:97;5380:1;5369:9;5365:17;5356:6;5286:97;:::i;:::-;5116:274;;;;:::o;5396:619::-;5473:6;5481;5489;5538:2;5526:9;5517:7;5513:23;5509:32;5506:119;;;5544:79;;:::i;:::-;5506:119;5664:1;5689:53;5734:7;5725:6;5714:9;5710:22;5689:53;:::i;:::-;5679:63;;5635:117;5791:2;5817:53;5862:7;5853:6;5842:9;5838:22;5817:53;:::i;:::-;5807:63;;5762:118;5919:2;5945:53;5990:7;5981:6;5970:9;5966:22;5945:53;:::i;:::-;5935:63;;5890:118;5396:619;;;;;:::o;6021:86::-;6056:7;6096:4;6089:5;6085:16;6074:27;;6021:86;;;:::o;6113:112::-;6196:22;6212:5;6196:22;:::i;:::-;6191:3;6184:35;6113:112;;:::o;6231:214::-;6320:4;6358:2;6347:9;6343:18;6335:26;;6371:67;6435:1;6424:9;6420:17;6411:6;6371:67;:::i;:::-;6231:214;;;;:::o;6451:118::-;6538:24;6556:5;6538:24;:::i;:::-;6533:3;6526:37;6451:118;;:::o;6575:222::-;6668:4;6706:2;6695:9;6691:18;6683:26;;6719:71;6787:1;6776:9;6772:17;6763:6;6719:71;:::i;:::-;6575:222;;;;:::o;6803:329::-;6862:6;6911:2;6899:9;6890:7;6886:23;6882:32;6879:119;;;6917:79;;:::i;:::-;6879:119;7037:1;7062:53;7107:7;7098:6;7087:9;7083:22;7062:53;:::i;:::-;7052:63;;7008:117;6803:329;;;;:::o;7138:::-;7197:6;7246:2;7234:9;7225:7;7221:23;7217:32;7214:119;;;7252:79;;:::i;:::-;7214:119;7372:1;7397:53;7442:7;7433:6;7422:9;7418:22;7397:53;:::i;:::-;7387:63;;7343:117;7138:329;;;;:::o;7473:474::-;7541:6;7549;7598:2;7586:9;7577:7;7573:23;7569:32;7566:119;;;7604:79;;:::i;:::-;7566:119;7724:1;7749:53;7794:7;7785:6;7774:9;7770:22;7749:53;:::i;:::-;7739:63;;7695:117;7851:2;7877:53;7922:7;7913:6;7902:9;7898:22;7877:53;:::i;:::-;7867:63;;7822:118;7473:474;;;;;:::o;7953:180::-;8001:77;7998:1;7991:88;8098:4;8095:1;8088:15;8122:4;8119:1;8112:15;8139:320;8183:6;8220:1;8214:4;8210:12;8200:22;;8267:1;8261:4;8257:12;8288:18;8278:81;;8344:4;8336:6;8332:17;8322:27;;8278:81;8406:2;8398:6;8395:14;8375:18;8372:38;8369:84;;8425:18;;:::i;:::-;8369:84;8190:269;8139:320;;;:::o;8465:180::-;8513:77;8510:1;8503:88;8610:4;8607:1;8600:15;8634:4;8631:1;8624:15;8651:191;8691:3;8710:20;8728:1;8710:20;:::i;:::-;8705:25;;8744:20;8762:1;8744:20;:::i;:::-;8739:25;;8787:1;8784;8780:9;8773:16;;8808:3;8805:1;8802:10;8799:36;;;8815:18;;:::i;:::-;8799:36;8651:191;;;;:::o;8848:232::-;8988:34;8984:1;8976:6;8972:14;8965:58;9057:15;9052:2;9044:6;9040:15;9033:40;8848:232;:::o;9086:366::-;9228:3;9249:67;9313:2;9308:3;9249:67;:::i;:::-;9242:74;;9325:93;9414:3;9325:93;:::i;:::-;9443:2;9438:3;9434:12;9427:19;;9086:366;;;:::o;9458:419::-;9624:4;9662:2;9651:9;9647:18;9639:26;;9711:9;9705:4;9701:20;9697:1;9686:9;9682:17;9675:47;9739:131;9865:4;9739:131;:::i;:::-;9731:139;;9458:419;;;:::o;9883:224::-;10023:34;10019:1;10011:6;10007:14;10000:58;10092:7;10087:2;10079:6;10075:15;10068:32;9883:224;:::o;10113:366::-;10255:3;10276:67;10340:2;10335:3;10276:67;:::i;:::-;10269:74;;10352:93;10441:3;10352:93;:::i;:::-;10470:2;10465:3;10461:12;10454:19;;10113:366;;;:::o;10485:419::-;10651:4;10689:2;10678:9;10674:18;10666:26;;10738:9;10732:4;10728:20;10724:1;10713:9;10709:17;10702:47;10766:131;10892:4;10766:131;:::i;:::-;10758:139;;10485:419;;;:::o;10910:225::-;11050:34;11046:1;11038:6;11034:14;11027:58;11119:8;11114:2;11106:6;11102:15;11095:33;10910:225;:::o;11141:366::-;11283:3;11304:67;11368:2;11363:3;11304:67;:::i;:::-;11297:74;;11380:93;11469:3;11380:93;:::i;:::-;11498:2;11493:3;11489:12;11482:19;;11141:366;;;:::o;11513:419::-;11679:4;11717:2;11706:9;11702:18;11694:26;;11766:9;11760:4;11756:20;11752:1;11741:9;11737:17;11730:47;11794:131;11920:4;11794:131;:::i;:::-;11786:139;;11513:419;;;:::o;11938:223::-;12078:34;12074:1;12066:6;12062:14;12055:58;12147:6;12142:2;12134:6;12130:15;12123:31;11938:223;:::o;12167:366::-;12309:3;12330:67;12394:2;12389:3;12330:67;:::i;:::-;12323:74;;12406:93;12495:3;12406:93;:::i;:::-;12524:2;12519:3;12515:12;12508:19;;12167:366;;;:::o;12539:419::-;12705:4;12743:2;12732:9;12728:18;12720:26;;12792:9;12786:4;12782:20;12778:1;12767:9;12763:17;12756:47;12820:131;12946:4;12820:131;:::i;:::-;12812:139;;12539:419;;;:::o;12964:221::-;13104:34;13100:1;13092:6;13088:14;13081:58;13173:4;13168:2;13160:6;13156:15;13149:29;12964:221;:::o;13191:366::-;13333:3;13354:67;13418:2;13413:3;13354:67;:::i;:::-;13347:74;;13430:93;13519:3;13430:93;:::i;:::-;13548:2;13543:3;13539:12;13532:19;;13191:366;;;:::o;13563:419::-;13729:4;13767:2;13756:9;13752:18;13744:26;;13816:9;13810:4;13806:20;13802:1;13791:9;13787:17;13780:47;13844:131;13970:4;13844:131;:::i;:::-;13836:139;;13563:419;;;:::o;13988:182::-;14128:34;14124:1;14116:6;14112:14;14105:58;13988:182;:::o;14176:366::-;14318:3;14339:67;14403:2;14398:3;14339:67;:::i;:::-;14332:74;;14415:93;14504:3;14415:93;:::i;:::-;14533:2;14528:3;14524:12;14517:19;;14176:366;;;:::o;14548:419::-;14714:4;14752:2;14741:9;14737:18;14729:26;;14801:9;14795:4;14791:20;14787:1;14776:9;14772:17;14765:47;14829:131;14955:4;14829:131;:::i;:::-;14821:139;;14548:419;;;:::o;14973:179::-;15113:31;15109:1;15101:6;15097:14;15090:55;14973:179;:::o;15158:366::-;15300:3;15321:67;15385:2;15380:3;15321:67;:::i;:::-;15314:74;;15397:93;15486:3;15397:93;:::i;:::-;15515:2;15510:3;15506:12;15499:19;;15158:366;;;:::o;15530:419::-;15696:4;15734:2;15723:9;15719:18;15711:26;;15783:9;15777:4;15773:20;15769:1;15758:9;15754:17;15747:47;15811:131;15937:4;15811:131;:::i;:::-;15803:139;;15530:419;;;:::o;15955:224::-;16095:34;16091:1;16083:6;16079:14;16072:58;16164:7;16159:2;16151:6;16147:15;16140:32;15955:224;:::o;16185:366::-;16327:3;16348:67;16412:2;16407:3;16348:67;:::i;:::-;16341:74;;16424:93;16513:3;16424:93;:::i;:::-;16542:2;16537:3;16533:12;16526:19;;16185:366;;;:::o;16557:419::-;16723:4;16761:2;16750:9;16746:18;16738:26;;16810:9;16804:4;16800:20;16796:1;16785:9;16781:17;16774:47;16838:131;16964:4;16838:131;:::i;:::-;16830:139;;16557:419;;;:::o;16982:222::-;17122:34;17118:1;17110:6;17106:14;17099:58;17191:5;17186:2;17178:6;17174:15;17167:30;16982:222;:::o;17210:366::-;17352:3;17373:67;17437:2;17432:3;17373:67;:::i;:::-;17366:74;;17449:93;17538:3;17449:93;:::i;:::-;17567:2;17562:3;17558:12;17551:19;;17210:366;;;:::o;17582:419::-;17748:4;17786:2;17775:9;17771:18;17763:26;;17835:9;17829:4;17825:20;17821:1;17810:9;17806:17;17799:47;17863:131;17989:4;17863:131;:::i;:::-;17855:139;;17582:419;;;:::o;18007:225::-;18147:34;18143:1;18135:6;18131:14;18124:58;18216:8;18211:2;18203:6;18199:15;18192:33;18007:225;:::o;18238:366::-;18380:3;18401:67;18465:2;18460:3;18401:67;:::i;:::-;18394:74;;18477:93;18566:3;18477:93;:::i;:::-;18595:2;18590:3;18586:12;18579:19;;18238:366;;;:::o;18610:419::-;18776:4;18814:2;18803:9;18799:18;18791:26;;18863:9;18857:4;18853:20;18849:1;18838:9;18834:17;18827:47;18891:131;19017:4;18891:131;:::i;:::-;18883:139;;18610:419;;;:::o;19035:194::-;19075:4;19095:20;19113:1;19095:20;:::i;:::-;19090:25;;19129:20;19147:1;19129:20;:::i;:::-;19124:25;;19173:1;19170;19166:9;19158:17;;19197:1;19191:4;19188:11;19185:37;;;19202:18;;:::i;:::-;19185:37;19035:194;;;;:::o;19235:225::-;19375:34;19371:1;19363:6;19359:14;19352:58;19444:8;19439:2;19431:6;19427:15;19420:33;19235:225;:::o;19466:366::-;19608:3;19629:67;19693:2;19688:3;19629:67;:::i;:::-;19622:74;;19705:93;19794:3;19705:93;:::i;:::-;19823:2;19818:3;19814:12;19807:19;;19466:366;;;:::o;19838:419::-;20004:4;20042:2;20031:9;20027:18;20019:26;;20091:9;20085:4;20081:20;20077:1;20066:9;20062:17;20055:47;20119:131;20245:4;20119:131;:::i;:::-;20111:139;;19838:419;;;:::o;20263:224::-;20403:34;20399:1;20391:6;20387:14;20380:58;20472:7;20467:2;20459:6;20455:15;20448:32;20263:224;:::o;20493:366::-;20635:3;20656:67;20720:2;20715:3;20656:67;:::i;:::-;20649:74;;20732:93;20821:3;20732:93;:::i;:::-;20850:2;20845:3;20841:12;20834:19;;20493:366;;;:::o;20865:419::-;21031:4;21069:2;21058:9;21054:18;21046:26;;21118:9;21112:4;21108:20;21104:1;21093:9;21089:17;21082:47;21146:131;21272:4;21146:131;:::i;:::-;21138:139;;20865:419;;;:::o;21290:244::-;21430:34;21426:1;21418:6;21414:14;21407:58;21499:27;21494:2;21486:6;21482:15;21475:52;21290:244;:::o;21540:366::-;21682:3;21703:67;21767:2;21762:3;21703:67;:::i;:::-;21696:74;;21779:93;21868:3;21779:93;:::i;:::-;21897:2;21892:3;21888:12;21881:19;;21540:366;;;:::o;21912:419::-;22078:4;22116:2;22105:9;22101:18;22093:26;;22165:9;22159:4;22155:20;22151:1;22140:9;22136:17;22129:47;22193:131;22319:4;22193:131;:::i;:::-;22185:139;;21912:419;;;:::o;22337:241::-;22477:34;22473:1;22465:6;22461:14;22454:58;22546:24;22541:2;22533:6;22529:15;22522:49;22337:241;:::o;22584:366::-;22726:3;22747:67;22811:2;22806:3;22747:67;:::i;:::-;22740:74;;22823:93;22912:3;22823:93;:::i;:::-;22941:2;22936:3;22932:12;22925:19;;22584:366;;;:::o;22956:419::-;23122:4;23160:2;23149:9;23145:18;23137:26;;23209:9;23203:4;23199:20;23195:1;23184:9;23180:17;23173:47;23237:131;23363:4;23237:131;:::i;:::-;23229:139;;22956:419;;;:::o;23381:410::-;23421:7;23444:20;23462:1;23444:20;:::i;:::-;23439:25;;23478:20;23496:1;23478:20;:::i;:::-;23473:25;;23533:1;23530;23526:9;23555:30;23573:11;23555:30;:::i;:::-;23544:41;;23734:1;23725:7;23721:15;23718:1;23715:22;23695:1;23688:9;23668:83;23645:139;;23764:18;;:::i;:::-;23645:139;23429:362;23381:410;;;;:::o;23797:180::-;23845:77;23842:1;23835:88;23942:4;23939:1;23932:15;23966:4;23963:1;23956:15;23983:185;24023:1;24040:20;24058:1;24040:20;:::i;:::-;24035:25;;24074:20;24092:1;24074:20;:::i;:::-;24069:25;;24113:1;24103:35;;24118:18;;:::i;:::-;24103:35;24160:1;24157;24153:9;24148:14;;23983:185;;;;:::o;24174:442::-;24323:4;24361:2;24350:9;24346:18;24338:26;;24374:71;24442:1;24431:9;24427:17;24418:6;24374:71;:::i;:::-;24455:72;24523:2;24512:9;24508:18;24499:6;24455:72;:::i;:::-;24537;24605:2;24594:9;24590:18;24581:6;24537:72;:::i;:::-;24174:442;;;;;;:::o;24622:180::-;24670:77;24667:1;24660:88;24767:4;24764:1;24757:15;24791:4;24788:1;24781:15;24808:180;24856:77;24853:1;24846:88;24953:4;24950:1;24943:15;24977:4;24974:1;24967:15;24994:143;25051:5;25082:6;25076:13;25067:22;;25098:33;25125:5;25098:33;:::i;:::-;24994:143;;;;:::o;25143:351::-;25213:6;25262:2;25250:9;25241:7;25237:23;25233:32;25230:119;;;25268:79;;:::i;:::-;25230:119;25388:1;25413:64;25469:7;25460:6;25449:9;25445:22;25413:64;:::i;:::-;25403:74;;25359:128;25143:351;;;;:::o;25500:85::-;25545:7;25574:5;25563:16;;25500:85;;;:::o;25591:158::-;25649:9;25682:61;25700:42;25709:32;25735:5;25709:32;:::i;:::-;25700:42;:::i;:::-;25682:61;:::i;:::-;25669:74;;25591:158;;;:::o;25755:147::-;25850:45;25889:5;25850:45;:::i;:::-;25845:3;25838:58;25755:147;;:::o;25908:114::-;25975:6;26009:5;26003:12;25993:22;;25908:114;;;:::o;26028:184::-;26127:11;26161:6;26156:3;26149:19;26201:4;26196:3;26192:14;26177:29;;26028:184;;;;:::o;26218:132::-;26285:4;26308:3;26300:11;;26338:4;26333:3;26329:14;26321:22;;26218:132;;;:::o;26356:108::-;26433:24;26451:5;26433:24;:::i;:::-;26428:3;26421:37;26356:108;;:::o;26470:179::-;26539:10;26560:46;26602:3;26594:6;26560:46;:::i;:::-;26638:4;26633:3;26629:14;26615:28;;26470:179;;;;:::o;26655:113::-;26725:4;26757;26752:3;26748:14;26740:22;;26655:113;;;:::o;26804:732::-;26923:3;26952:54;27000:5;26952:54;:::i;:::-;27022:86;27101:6;27096:3;27022:86;:::i;:::-;27015:93;;27132:56;27182:5;27132:56;:::i;:::-;27211:7;27242:1;27227:284;27252:6;27249:1;27246:13;27227:284;;;27328:6;27322:13;27355:63;27414:3;27399:13;27355:63;:::i;:::-;27348:70;;27441:60;27494:6;27441:60;:::i;:::-;27431:70;;27287:224;27274:1;27271;27267:9;27262:14;;27227:284;;;27231:14;27527:3;27520:10;;26928:608;;;26804:732;;;;:::o;27542:831::-;27805:4;27843:3;27832:9;27828:19;27820:27;;27857:71;27925:1;27914:9;27910:17;27901:6;27857:71;:::i;:::-;27938:80;28014:2;28003:9;27999:18;27990:6;27938:80;:::i;:::-;28065:9;28059:4;28055:20;28050:2;28039:9;28035:18;28028:48;28093:108;28196:4;28187:6;28093:108;:::i;:::-;28085:116;;28211:72;28279:2;28268:9;28264:18;28255:6;28211:72;:::i;:::-;28293:73;28361:3;28350:9;28346:19;28337:6;28293:73;:::i;:::-;27542:831;;;;;;;;:::o;28379:807::-;28628:4;28666:3;28655:9;28651:19;28643:27;;28680:71;28748:1;28737:9;28733:17;28724:6;28680:71;:::i;:::-;28761:72;28829:2;28818:9;28814:18;28805:6;28761:72;:::i;:::-;28843:80;28919:2;28908:9;28904:18;28895:6;28843:80;:::i;:::-;28933;29009:2;28998:9;28994:18;28985:6;28933:80;:::i;:::-;29023:73;29091:3;29080:9;29076:19;29067:6;29023:73;:::i;:::-;29106;29174:3;29163:9;29159:19;29150:6;29106:73;:::i;:::-;28379:807;;;;;;;;;:::o;29192:143::-;29249:5;29280:6;29274:13;29265:22;;29296:33;29323:5;29296:33;:::i;:::-;29192:143;;;;:::o;29341:663::-;29429:6;29437;29445;29494:2;29482:9;29473:7;29469:23;29465:32;29462:119;;;29500:79;;:::i;:::-;29462:119;29620:1;29645:64;29701:7;29692:6;29681:9;29677:22;29645:64;:::i;:::-;29635:74;;29591:128;29758:2;29784:64;29840:7;29831:6;29820:9;29816:22;29784:64;:::i;:::-;29774:74;;29729:129;29897:2;29923:64;29979:7;29970:6;29959:9;29955:22;29923:64;:::i;:::-;29913:74;;29868:129;29341:663;;;;;:::o
Swarm Source
ipfs://5ad5a82a0aa6d5a5cf4351dc9f3f708cc4f902d7fa76d71c3a882855f6adb16d
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.