Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 206 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 15862106 | 806 days ago | IN | 0 ETH | 0.00023578 | ||||
Approve | 15862102 | 806 days ago | IN | 0 ETH | 0.00024021 | ||||
Approve | 15765143 | 820 days ago | IN | 0 ETH | 0.00034148 | ||||
Approve | 15547709 | 850 days ago | IN | 0 ETH | 0.00077921 | ||||
Approve | 15535251 | 852 days ago | IN | 0 ETH | 0.00094258 | ||||
Transfer | 15485214 | 860 days ago | IN | 0 ETH | 0.00190799 | ||||
Approve | 15485182 | 860 days ago | IN | 0 ETH | 0.00159751 | ||||
Approve | 15466822 | 863 days ago | IN | 0 ETH | 0.00022792 | ||||
Approve | 15463109 | 864 days ago | IN | 0 ETH | 0.00041618 | ||||
Approve | 15461547 | 864 days ago | IN | 0 ETH | 0.00039748 | ||||
Approve | 15460501 | 864 days ago | IN | 0 ETH | 0.00085125 | ||||
Approve | 15459463 | 864 days ago | IN | 0 ETH | 0.00055055 | ||||
Approve | 15458386 | 865 days ago | IN | 0 ETH | 0.00030192 | ||||
Approve | 15458379 | 865 days ago | IN | 0 ETH | 0.00059516 | ||||
Approve | 15457934 | 865 days ago | IN | 0 ETH | 0.00037428 | ||||
Transfer | 15457927 | 865 days ago | IN | 0 ETH | 0.00073006 | ||||
Approve | 15457913 | 865 days ago | IN | 0 ETH | 0.00038741 | ||||
Approve | 15456797 | 865 days ago | IN | 0 ETH | 0.00028705 | ||||
Approve | 15456478 | 865 days ago | IN | 0 ETH | 0.00064944 | ||||
Approve | 15456379 | 865 days ago | IN | 0 ETH | 0.00071882 | ||||
Approve | 15456218 | 865 days ago | IN | 0 ETH | 0.00070227 | ||||
Approve | 15456127 | 865 days ago | IN | 0 ETH | 0.00057245 | ||||
Approve | 15456087 | 865 days ago | IN | 0 ETH | 0.00074567 | ||||
Approve | 15456057 | 865 days ago | IN | 0 ETH | 0.00055277 | ||||
Approve | 15455621 | 865 days ago | IN | 0 ETH | 0.00066714 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15485183 | 860 days ago | 0.00205679 ETH | ||||
15485183 | 860 days ago | 0.00205679 ETH | ||||
15467082 | 863 days ago | 0.00227329 ETH | ||||
15467082 | 863 days ago | 0.00227329 ETH | ||||
15461697 | 864 days ago | 0.00331539 ETH | ||||
15461697 | 864 days ago | 0.00331539 ETH | ||||
15461656 | 864 days ago | 0.00231325 ETH | ||||
15461656 | 864 days ago | 0.00231325 ETH | ||||
15461656 | 864 days ago | 0.00266261 ETH | ||||
15461656 | 864 days ago | 0.00266261 ETH | ||||
15461546 | 864 days ago | 0.00321902 ETH | ||||
15461546 | 864 days ago | 0.00321902 ETH | ||||
15457967 | 865 days ago | 0.0039246 ETH | ||||
15457967 | 865 days ago | 0.0039246 ETH | ||||
15457967 | 865 days ago | 0.00296866 ETH | ||||
15457967 | 865 days ago | 0.00296866 ETH | ||||
15456481 | 865 days ago | 0.00354109 ETH | ||||
15456481 | 865 days ago | 0.00354109 ETH | ||||
15456386 | 865 days ago | 0.0031938 ETH | ||||
15456386 | 865 days ago | 0.0031938 ETH | ||||
15456250 | 865 days ago | 0.00517916 ETH | ||||
15456250 | 865 days ago | 0.00517916 ETH | ||||
15456129 | 865 days ago | 0.00475643 ETH | ||||
15456129 | 865 days ago | 0.00475643 ETH | ||||
15456129 | 865 days ago | 0.00424551 ETH |
Loading...
Loading
Contract Name:
DevBookingBahamas
Compiler Version
v0.8.16+commit.07a7930e
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-01 */ /* * TG Group: https://t.me/DBBportal */ // SPDX-License-Identifier: MIT pragma solidity 0.8.16; 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); } } contract DevBookingBahamas is ERC20, Ownable { address public buyBackWallet = 0x9353dE56693Be1b0586fC0bB9cFEAB93374CD885; address public marketingWallet = 0x3De5D39c89c1dc9467418451f896651bA262ba6C; uint256 public buyTaxForLiquidity = 2; uint256 public buyTaxForMarketing = 1; uint256 public sellTaxForBuyBack = 2; uint256 public sellTaxForMarketing = 1; uint256 private _buyBackReserves = 0; uint256 private _marketingReserves = 0; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcludedFromBuying; uint256 private _maxTxAmount = 5000000 * 10**18; uint256 public maxWalletAmount = 10000000 * 10**18; uint256 private _numTokensSellToAddToLiquidity = 500000 * 10**18; uint256 private _numTokensSellToAddToETH = 250000 * 10**18; bool inSwapAndLiquify; bool private _liquidityAdded = false; uint256 private _initialLiquidityTime = 0; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity ); modifier lockTheSwap() { inSwapAndLiquify = true; _; inSwapAndLiquify = false; } modifier checkWhaleAndBot(address to, uint256 amount) { if ( _liquidityAdded && (block.timestamp < (_initialLiquidityTime + 7200)) ) { require( amount <= _maxTxAmount, "ERC20: transfer amount exceeds the max transaction amount" ); if (block.timestamp < (_initialLiquidityTime + 80)) { buyTaxForLiquidity = buyTaxForMarketing = sellTaxForBuyBack = sellTaxForMarketing = 99; } } if (!_liquidityAdded && (to == uniswapV2Pair)) { _liquidityAdded = true; _initialLiquidityTime = block.timestamp; } _; buyTaxForLiquidity = sellTaxForBuyBack = 2; buyTaxForMarketing = sellTaxForMarketing = 1; } /** * @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("Dev Booking Bahamas", "DBB") { _mint(msg.sender, (1000000000 * 10**18)); IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); uniswapV2Router = _uniswapV2Router; _isExcludedFromFee[msg.sender] = true; _isExcludedFromFee[buyBackWallet] = true; _isExcludedFromFee[marketingWallet] = true; _isExcludedFromFee[address(uniswapV2Router)] = 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 checkWhaleAndBot(to, amount) { 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) { uint256 contractLiquidityBalance = balanceOf(address(this)) - (_buyBackReserves + _marketingReserves); if ( contractLiquidityBalance >= _numTokensSellToAddToLiquidity ) { contractLiquidityBalance = _numTokensSellToAddToLiquidity; _swapAndLiquify(contractLiquidityBalance); } if ((_marketingReserves) >= _numTokensSellToAddToETH) { _swapTokensForEth(_marketingReserves); _marketingReserves = 0; bool sent = payable(marketingWallet).send( address(this).balance ); require(sent, "Failed to send ETH"); } if ((_buyBackReserves) >= _numTokensSellToAddToETH) { _swapTokensForEth(_buyBackReserves); _buyBackReserves = 0; bool sent = payable(buyBackWallet).send( address(this).balance ); require(sent, "Failed to send ETH"); } } uint256 transferAmount; if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) { transferAmount = amount; } else { if (from == uniswapV2Pair) { // buy require( !(_isExcludedFromBuying[to]), "ERC20: blacklisted bot not allowed to buy" ); require( (amount + balanceOf(to)) <= maxWalletAmount, "ERC20: balance amount exceeded max wallet amount limit" ); uint256 marketingShare = ((amount * buyTaxForMarketing) / 100); uint256 liquidityShare = ((amount * buyTaxForLiquidity) / 100); transferAmount = amount - (marketingShare + liquidityShare); _marketingReserves += marketingShare; super._transfer( from, address(this), (marketingShare + liquidityShare) ); } else { // sell uint256 marketingShare = ((amount * sellTaxForMarketing) / 100); uint256 buyBackShare = ((amount * sellTaxForBuyBack) / 100); transferAmount = amount - (marketingShare + buyBackShare); _marketingReserves += marketingShare; _buyBackReserves += buyBackShare; super._transfer( from, address(this), (marketingShare + buyBackShare) ); } } super._transfer(from, to, transferAmount); } else { super._transfer(from, to, amount); } } function changeBuyBackWallet(address newWallet) public onlyOwner returns (bool) { buyBackWallet = newWallet; return true; } function changeMarketingWallet(address newWallet) public onlyOwner returns (bool) { marketingWallet = newWallet; return true; } function excludeFromFee(address account, bool flag) external onlyOwner { _isExcludedFromFee[account] = flag; } function blacklistBuyingBot(address account, bool flag) external onlyOwner { _isExcludedFromBuying[account] = flag; } 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 ); } 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":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"blacklistBuyingBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyBackWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"address","name":"newWallet","type":"address"}],"name":"changeBuyBackWallet","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"flag","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"sellTaxForBuyBack","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
60c0604052739353de56693be1b0586fc0bb9cfeab93374cd885600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733de5d39c89c1dc9467418451f896651ba262ba6c600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260085560016009556002600a556001600b556000600c556000600d556a0422ca8b0a00a4250000006010556a084595161401484a0000006011556969e10de76676d08000006012556934f086f3b33b684000006013556000601460016101000a81548160ff02191690831515021790555060006015553480156200013357600080fd5b506040518060400160405280601381526020017f44657620426f6f6b696e6720426168616d6173000000000000000000000000008152506040518060400160405280600381526020017f44424200000000000000000000000000000000000000000000000000000000008152508160039081620001b1919062000a23565b508060049081620001c3919062000a23565b505050620001e6620001da6200059660201b60201c565b6200059e60201b60201c565b62000204336b033b2e3c9fd0803ce80000006200066460201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000269573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028f919062000b74565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031d919062000b74565b6040518363ffffffff1660e01b81526004016200033c92919062000bb7565b6020604051808303816000875af11580156200035c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000382919062000b74565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505062000cff565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620006d6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006cd9062000c45565b60405180910390fd5b8060026000828254620006ea919062000c96565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200079d919062000ce2565b60405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200082b57607f821691505b602082108103620008415762000840620007e3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620008ab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200086c565b620008b786836200086c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000904620008fe620008f884620008cf565b620008d9565b620008cf565b9050919050565b6000819050919050565b6200092083620008e3565b620009386200092f826200090b565b84845462000879565b825550505050565b600090565b6200094f62000940565b6200095c81848462000915565b505050565b5b8181101562000984576200097860008262000945565b60018101905062000962565b5050565b601f821115620009d3576200099d8162000847565b620009a8846200085c565b81016020851015620009b8578190505b620009d0620009c7856200085c565b83018262000961565b50505b505050565b600082821c905092915050565b6000620009f860001984600802620009d8565b1980831691505092915050565b600062000a138383620009e5565b9150826002028217905092915050565b62000a2e82620007a9565b67ffffffffffffffff81111562000a4a5762000a49620007b4565b5b62000a56825462000812565b62000a6382828562000988565b600060209050601f83116001811462000a9b576000841562000a86578287015190505b62000a92858262000a05565b86555062000b02565b601f19841662000aab8662000847565b60005b8281101562000ad55784890151825560018201915060208501945060208101905062000aae565b8683101562000af5578489015162000af1601f891682620009e5565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b3c8262000b0f565b9050919050565b62000b4e8162000b2f565b811462000b5a57600080fd5b50565b60008151905062000b6e8162000b43565b92915050565b60006020828403121562000b8d5762000b8c62000b0a565b5b600062000b9d8482850162000b5d565b91505092915050565b62000bb18162000b2f565b82525050565b600060408201905062000bce600083018562000ba6565b62000bdd602083018462000ba6565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c2d601f8362000be4565b915062000c3a8262000bf5565b602082019050919050565b6000602082019050818103600083015262000c608162000c1e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000ca382620008cf565b915062000cb083620008cf565b925082820190508082111562000ccb5762000cca62000c67565b5b92915050565b62000cdc81620008cf565b82525050565b600060208201905062000cf9600083018462000cd1565b92915050565b60805160a051612f6162000d6b6000396000818161084301528181610fe301528181611184015281816111d901528181611247015261150101526000818161077a01528181611a6001528181611b4101528181611b6801528181611ea70152611ece0152612f616000f3fe6080604052600436106101a05760003560e01c8063715018a6116100ec578063bb85c6d11161008a578063e04192ce11610064578063e04192ce14610601578063ee340f501461063e578063f2fde38b14610669578063fc04fe2914610692576101a7565b8063bb85c6d11461055e578063dd62ed3e1461059b578063df8408fe146105d8576101a7565b806395d89b41116100c657806395d89b411461048e578063a457c2d7146104b9578063a9059cbb146104f6578063aa4bde2814610533576101a7565b8063715018a61461042157806375f0a874146104385780638da5cb5b14610463576101a7565b80631e0b376e116101595780633950935111610133578063395093511461035357806349bd5a5e146103905780635d06c007146103bb57806370a08231146103e4576101a7565b80631e0b376e146102c057806323b872dd146102eb578063313ce56714610328576101a7565b8063029e8399146101ac57806306fdde03146101d7578063095ea7b3146102025780631694505e1461023f57806318160ddd1461026a5780631cd348c014610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c16106bd565b6040516101ce9190611fb6565b60405180910390f35b3480156101e357600080fd5b506101ec6106c3565b6040516101f99190612061565b60405180910390f35b34801561020e57600080fd5b5061022960048036038101906102249190612112565b610755565b604051610236919061216d565b60405180910390f35b34801561024b57600080fd5b50610254610778565b60405161026191906121e7565b60405180910390f35b34801561027657600080fd5b5061027f61079c565b60405161028c9190611fb6565b60405180910390f35b3480156102a157600080fd5b506102aa6107a6565b6040516102b79190612211565b60405180910390f35b3480156102cc57600080fd5b506102d56107cc565b6040516102e29190611fb6565b60405180910390f35b3480156102f757600080fd5b50610312600480360381019061030d919061222c565b6107d2565b60405161031f919061216d565b60405180910390f35b34801561033457600080fd5b5061033d610801565b60405161034a919061229b565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190612112565b61080a565b604051610387919061216d565b60405180910390f35b34801561039c57600080fd5b506103a5610841565b6040516103b29190612211565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd91906122e2565b610865565b005b3480156103f057600080fd5b5061040b60048036038101906104069190612322565b6108c8565b6040516104189190611fb6565b60405180910390f35b34801561042d57600080fd5b50610436610910565b005b34801561044457600080fd5b5061044d610924565b60405161045a9190612211565b60405180910390f35b34801561046f57600080fd5b5061047861094a565b6040516104859190612211565b60405180910390f35b34801561049a57600080fd5b506104a3610974565b6040516104b09190612061565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190612112565b610a06565b6040516104ed919061216d565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190612112565b610a7d565b60405161052a919061216d565b60405180910390f35b34801561053f57600080fd5b50610548610aa0565b6040516105559190611fb6565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612322565b610aa6565b604051610592919061216d565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd919061234f565b610afa565b6040516105cf9190611fb6565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa91906122e2565b610b81565b005b34801561060d57600080fd5b5061062860048036038101906106239190612322565b610be4565b604051610635919061216d565b60405180910390f35b34801561064a57600080fd5b50610653610c38565b6040516106609190611fb6565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190612322565b610c3e565b005b34801561069e57600080fd5b506106a7610cc1565b6040516106b49190611fb6565b60405180910390f35b600b5481565b6060600380546106d2906123be565b80601f01602080910402602001604051908101604052809291908181526020018280546106fe906123be565b801561074b5780601f106107205761010080835404028352916020019161074b565b820191906000526020600020905b81548152906001019060200180831161072e57829003601f168201915b5050505050905090565b600080610760610cc7565b905061076d818585610ccf565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6000806107dd610cc7565b90506107ea858285610e98565b6107f5858585610f24565b60019150509392505050565b60006012905090565b600080610815610cc7565b90506108368185856108278589610afa565b610831919061241e565b610ccf565b600191505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61086d6117a1565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109186117a1565b610922600061181f565b565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610983906123be565b80601f01602080910402602001604051908101604052809291908181526020018280546109af906123be565b80156109fc5780601f106109d1576101008083540402835291602001916109fc565b820191906000526020600020905b8154815290600101906020018083116109df57829003601f168201915b5050505050905090565b600080610a11610cc7565b90506000610a1f8286610afa565b905083811015610a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5b906124c4565b60405180910390fd5b610a718286868403610ccf565b60019250505092915050565b600080610a88610cc7565b9050610a95818585610f24565b600191505092915050565b60115481565b6000610ab06117a1565b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b896117a1565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610bee6117a1565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60085481565b610c466117a1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac90612556565b60405180910390fd5b610cbe8161181f565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d35906125e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da49061267a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e8b9190611fb6565b60405180910390a3505050565b6000610ea48484610afa565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f1e5781811015610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f07906126e6565b60405180910390fd5b610f1d8484848403610ccf565b5b50505050565b8181601460019054906101000a900460ff168015610f505750611c20601554610f4d919061241e565b42105b15610fc957601054811115610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190612778565b60405180910390fd5b6050601554610fa9919061241e565b421015610fc8576063600b819055600a81905560098190556008819055505b5b601460019054906101000a900460ff1615801561103157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611059576001601460016101000a81548160ff021916908315150217905550426015819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf9061280a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e9061289c565b60405180910390fd5b82611141866108c8565b1015611182576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111799061292e565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061122757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156112405750601460009054906101000a900460ff16155b15611774577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461144f576000600d54600c546112aa919061241e565b6112b3306108c8565b6112bd919061294e565b905060125481106112d75760125490506112d6816118e5565b5b601354600d5410611392576112ed600d546119a6565b6000600d819055506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050905080611390576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611387906129ce565b60405180910390fd5b505b601354600c541061144d576113a8600c546119a6565b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505090508061144b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611442906129ce565b60405180910390fd5b505b505b6000600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114f25750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156114ff57839050611763565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036116c257600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690612a60565b60405180910390fd5b6011546115eb866108c8565b856115f6919061241e565b1115611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e90612af2565b60405180910390fd5b60006064600954866116499190612b12565b6116539190612b9b565b905060006064600854876116679190612b12565b6116719190612b9b565b9050808261167f919061241e565b8661168a919061294e565b925081600d600082825461169e919061241e565b925050819055506116bb883083856116b6919061241e565b611c26565b5050611762565b60006064600b54866116d49190612b12565b6116de9190612b9b565b905060006064600a54876116f29190612b12565b6116fc9190612b9b565b9050808261170a919061241e565b86611715919061294e565b925081600d6000828254611729919061241e565b9250508190555080600c6000828254611742919061241e565b9250508190555061175f8830838561175a919061241e565b611c26565b50505b5b61176e868683611c26565b50611780565b61177f858585611c26565b5b6002600a8190556008819055506001600b8190556009819055505050505050565b6117a9610cc7565b73ffffffffffffffffffffffffffffffffffffffff166117c761094a565b73ffffffffffffffffffffffffffffffffffffffff161461181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490612c18565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601460006101000a81548160ff021916908315150217905550600060028261190f9190612b9b565b90506000818361191f919061294e565b9050600047905061192f836119a6565b6000814761193d919061294e565b90506119498382611e86565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161197c93929190612c38565b60405180910390a1505050506000601460006101000a81548160ff02191690831515021790555050565b6001601460006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156119de576119dd612c6f565b5b604051908082528060200260200182016040528015611a0c5781602001602082028036833780820191505090505b5090503081600081518110611a2457611a23612c9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed9190612ce2565b81600181518110611b0157611b00612c9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b66307f000000000000000000000000000000000000000000000000000000000000000084610ccf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c42611bb5919061241e565b6040518663ffffffff1660e01b8152600401611bd5959493929190612e08565b600060405180830381600087803b158015611bef57600080fd5b505af1158015611c03573d6000803e3d6000fd5b50505050506000601460006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c9061280a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb9061289c565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819061292e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e789190611fb6565b60405180910390a350505050565b6001601460006101000a81548160ff021916908315150217905550611ecc307f000000000000000000000000000000000000000000000000000000000000000084610ccf565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611f1661094a565b426040518863ffffffff1660e01b8152600401611f3896959493929190612e62565b60606040518083038185885af1158015611f56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f7b9190612ed8565b5050506000601460006101000a81548160ff0219169083151502179055505050565b6000819050919050565b611fb081611f9d565b82525050565b6000602082019050611fcb6000830184611fa7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561200b578082015181840152602081019050611ff0565b60008484015250505050565b6000601f19601f8301169050919050565b600061203382611fd1565b61203d8185611fdc565b935061204d818560208601611fed565b61205681612017565b840191505092915050565b6000602082019050818103600083015261207b8184612028565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120b382612088565b9050919050565b6120c3816120a8565b81146120ce57600080fd5b50565b6000813590506120e0816120ba565b92915050565b6120ef81611f9d565b81146120fa57600080fd5b50565b60008135905061210c816120e6565b92915050565b6000806040838503121561212957612128612083565b5b6000612137858286016120d1565b9250506020612148858286016120fd565b9150509250929050565b60008115159050919050565b61216781612152565b82525050565b6000602082019050612182600083018461215e565b92915050565b6000819050919050565b60006121ad6121a86121a384612088565b612188565b612088565b9050919050565b60006121bf82612192565b9050919050565b60006121d1826121b4565b9050919050565b6121e1816121c6565b82525050565b60006020820190506121fc60008301846121d8565b92915050565b61220b816120a8565b82525050565b60006020820190506122266000830184612202565b92915050565b60008060006060848603121561224557612244612083565b5b6000612253868287016120d1565b9350506020612264868287016120d1565b9250506040612275868287016120fd565b9150509250925092565b600060ff82169050919050565b6122958161227f565b82525050565b60006020820190506122b0600083018461228c565b92915050565b6122bf81612152565b81146122ca57600080fd5b50565b6000813590506122dc816122b6565b92915050565b600080604083850312156122f9576122f8612083565b5b6000612307858286016120d1565b9250506020612318858286016122cd565b9150509250929050565b60006020828403121561233857612337612083565b5b6000612346848285016120d1565b91505092915050565b6000806040838503121561236657612365612083565b5b6000612374858286016120d1565b9250506020612385858286016120d1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123d657607f821691505b6020821081036123e9576123e861238f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061242982611f9d565b915061243483611f9d565b925082820190508082111561244c5761244b6123ef565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006124ae602583611fdc565b91506124b982612452565b604082019050919050565b600060208201905081810360008301526124dd816124a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612540602683611fdc565b915061254b826124e4565b604082019050919050565b6000602082019050818103600083015261256f81612533565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125d2602483611fdc565b91506125dd82612576565b604082019050919050565b60006020820190508181036000830152612601816125c5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612664602283611fdc565b915061266f82612608565b604082019050919050565b6000602082019050818103600083015261269381612657565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006126d0601d83611fdc565b91506126db8261269a565b602082019050919050565b600060208201905081810360008301526126ff816126c3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b6000612762603983611fdc565b915061276d82612706565b604082019050919050565b6000602082019050818103600083015261279181612755565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006127f4602583611fdc565b91506127ff82612798565b604082019050919050565b60006020820190508181036000830152612823816127e7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612886602383611fdc565b91506128918261282a565b604082019050919050565b600060208201905081810360008301526128b581612879565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612918602683611fdc565b9150612923826128bc565b604082019050919050565b600060208201905081810360008301526129478161290b565b9050919050565b600061295982611f9d565b915061296483611f9d565b925082820390508181111561297c5761297b6123ef565b5b92915050565b7f4661696c656420746f2073656e64204554480000000000000000000000000000600082015250565b60006129b8601283611fdc565b91506129c382612982565b602082019050919050565b600060208201905081810360008301526129e7816129ab565b9050919050565b7f45524332303a20626c61636b6c697374656420626f74206e6f7420616c6c6f7760008201527f656420746f206275790000000000000000000000000000000000000000000000602082015250565b6000612a4a602983611fdc565b9150612a55826129ee565b604082019050919050565b60006020820190508181036000830152612a7981612a3d565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b6000612adc603683611fdc565b9150612ae782612a80565b604082019050919050565b60006020820190508181036000830152612b0b81612acf565b9050919050565b6000612b1d82611f9d565b9150612b2883611f9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b6157612b606123ef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ba682611f9d565b9150612bb183611f9d565b925082612bc157612bc0612b6c565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c02602083611fdc565b9150612c0d82612bcc565b602082019050919050565b60006020820190508181036000830152612c3181612bf5565b9050919050565b6000606082019050612c4d6000830186611fa7565b612c5a6020830185611fa7565b612c676040830184611fa7565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612cdc816120ba565b92915050565b600060208284031215612cf857612cf7612083565b5b6000612d0684828501612ccd565b91505092915050565b6000819050919050565b6000612d34612d2f612d2a84612d0f565b612188565b611f9d565b9050919050565b612d4481612d19565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d7f816120a8565b82525050565b6000612d918383612d76565b60208301905092915050565b6000602082019050919050565b6000612db582612d4a565b612dbf8185612d55565b9350612dca83612d66565b8060005b83811015612dfb578151612de28882612d85565b9750612ded83612d9d565b925050600181019050612dce565b5085935050505092915050565b600060a082019050612e1d6000830188611fa7565b612e2a6020830187612d3b565b8181036040830152612e3c8186612daa565b9050612e4b6060830185612202565b612e586080830184611fa7565b9695505050505050565b600060c082019050612e776000830189612202565b612e846020830188611fa7565b612e916040830187612d3b565b612e9e6060830186612d3b565b612eab6080830185612202565b612eb860a0830184611fa7565b979650505050505050565b600081519050612ed2816120e6565b92915050565b600080600060608486031215612ef157612ef0612083565b5b6000612eff86828701612ec3565b9350506020612f1086828701612ec3565b9250506040612f2186828701612ec3565b915050925092509256fea26469706673582212207e7bdbc6cd5561fd0c37894bc12e168bd45454dc8a8877d5688409ffada1856c64736f6c63430008100033
Deployed Bytecode
0x6080604052600436106101a05760003560e01c8063715018a6116100ec578063bb85c6d11161008a578063e04192ce11610064578063e04192ce14610601578063ee340f501461063e578063f2fde38b14610669578063fc04fe2914610692576101a7565b8063bb85c6d11461055e578063dd62ed3e1461059b578063df8408fe146105d8576101a7565b806395d89b41116100c657806395d89b411461048e578063a457c2d7146104b9578063a9059cbb146104f6578063aa4bde2814610533576101a7565b8063715018a61461042157806375f0a874146104385780638da5cb5b14610463576101a7565b80631e0b376e116101595780633950935111610133578063395093511461035357806349bd5a5e146103905780635d06c007146103bb57806370a08231146103e4576101a7565b80631e0b376e146102c057806323b872dd146102eb578063313ce56714610328576101a7565b8063029e8399146101ac57806306fdde03146101d7578063095ea7b3146102025780631694505e1461023f57806318160ddd1461026a5780631cd348c014610295576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c16106bd565b6040516101ce9190611fb6565b60405180910390f35b3480156101e357600080fd5b506101ec6106c3565b6040516101f99190612061565b60405180910390f35b34801561020e57600080fd5b5061022960048036038101906102249190612112565b610755565b604051610236919061216d565b60405180910390f35b34801561024b57600080fd5b50610254610778565b60405161026191906121e7565b60405180910390f35b34801561027657600080fd5b5061027f61079c565b60405161028c9190611fb6565b60405180910390f35b3480156102a157600080fd5b506102aa6107a6565b6040516102b79190612211565b60405180910390f35b3480156102cc57600080fd5b506102d56107cc565b6040516102e29190611fb6565b60405180910390f35b3480156102f757600080fd5b50610312600480360381019061030d919061222c565b6107d2565b60405161031f919061216d565b60405180910390f35b34801561033457600080fd5b5061033d610801565b60405161034a919061229b565b60405180910390f35b34801561035f57600080fd5b5061037a60048036038101906103759190612112565b61080a565b604051610387919061216d565b60405180910390f35b34801561039c57600080fd5b506103a5610841565b6040516103b29190612211565b60405180910390f35b3480156103c757600080fd5b506103e260048036038101906103dd91906122e2565b610865565b005b3480156103f057600080fd5b5061040b60048036038101906104069190612322565b6108c8565b6040516104189190611fb6565b60405180910390f35b34801561042d57600080fd5b50610436610910565b005b34801561044457600080fd5b5061044d610924565b60405161045a9190612211565b60405180910390f35b34801561046f57600080fd5b5061047861094a565b6040516104859190612211565b60405180910390f35b34801561049a57600080fd5b506104a3610974565b6040516104b09190612061565b60405180910390f35b3480156104c557600080fd5b506104e060048036038101906104db9190612112565b610a06565b6040516104ed919061216d565b60405180910390f35b34801561050257600080fd5b5061051d60048036038101906105189190612112565b610a7d565b60405161052a919061216d565b60405180910390f35b34801561053f57600080fd5b50610548610aa0565b6040516105559190611fb6565b60405180910390f35b34801561056a57600080fd5b5061058560048036038101906105809190612322565b610aa6565b604051610592919061216d565b60405180910390f35b3480156105a757600080fd5b506105c260048036038101906105bd919061234f565b610afa565b6040516105cf9190611fb6565b60405180910390f35b3480156105e457600080fd5b506105ff60048036038101906105fa91906122e2565b610b81565b005b34801561060d57600080fd5b5061062860048036038101906106239190612322565b610be4565b604051610635919061216d565b60405180910390f35b34801561064a57600080fd5b50610653610c38565b6040516106609190611fb6565b60405180910390f35b34801561067557600080fd5b50610690600480360381019061068b9190612322565b610c3e565b005b34801561069e57600080fd5b506106a7610cc1565b6040516106b49190611fb6565b60405180910390f35b600b5481565b6060600380546106d2906123be565b80601f01602080910402602001604051908101604052809291908181526020018280546106fe906123be565b801561074b5780601f106107205761010080835404028352916020019161074b565b820191906000526020600020905b81548152906001019060200180831161072e57829003601f168201915b5050505050905090565b600080610760610cc7565b905061076d818585610ccf565b600191505092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b6000806107dd610cc7565b90506107ea858285610e98565b6107f5858585610f24565b60019150509392505050565b60006012905090565b600080610815610cc7565b90506108368185856108278589610afa565b610831919061241e565b610ccf565b600191505092915050565b7f0000000000000000000000000cc997b0d4e1a63c8c04760efbb8c924041bbc3781565b61086d6117a1565b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6109186117a1565b610922600061181f565b565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610983906123be565b80601f01602080910402602001604051908101604052809291908181526020018280546109af906123be565b80156109fc5780601f106109d1576101008083540402835291602001916109fc565b820191906000526020600020905b8154815290600101906020018083116109df57829003601f168201915b5050505050905090565b600080610a11610cc7565b90506000610a1f8286610afa565b905083811015610a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5b906124c4565b60405180910390fd5b610a718286868403610ccf565b60019250505092915050565b600080610a88610cc7565b9050610a95818585610f24565b600191505092915050565b60115481565b6000610ab06117a1565b81600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b896117a1565b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000610bee6117a1565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060019050919050565b60085481565b610c466117a1565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cac90612556565b60405180910390fd5b610cbe8161181f565b50565b600a5481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d35906125e8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da49061267a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610e8b9190611fb6565b60405180910390a3505050565b6000610ea48484610afa565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f1e5781811015610f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f07906126e6565b60405180910390fd5b610f1d8484848403610ccf565b5b50505050565b8181601460019054906101000a900460ff168015610f505750611c20601554610f4d919061241e565b42105b15610fc957601054811115610f9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9190612778565b60405180910390fd5b6050601554610fa9919061241e565b421015610fc8576063600b819055600a81905560098190556008819055505b5b601460019054906101000a900460ff1615801561103157507f0000000000000000000000000cc997b0d4e1a63c8c04760efbb8c924041bbc3773ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611059576001601460016101000a81548160ff021916908315150217905550426015819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf9061280a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611137576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112e9061289c565b60405180910390fd5b82611141866108c8565b1015611182576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111799061292e565b60405180910390fd5b7f0000000000000000000000000cc997b0d4e1a63c8c04760efbb8c924041bbc3773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061122757507f0000000000000000000000000cc997b0d4e1a63c8c04760efbb8c924041bbc3773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156112405750601460009054906101000a900460ff16155b15611774577f0000000000000000000000000cc997b0d4e1a63c8c04760efbb8c924041bbc3773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461144f576000600d54600c546112aa919061241e565b6112b3306108c8565b6112bd919061294e565b905060125481106112d75760125490506112d6816118e5565b5b601354600d5410611392576112ed600d546119a6565b6000600d819055506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050905080611390576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611387906129ce565b60405180910390fd5b505b601354600c541061144d576113a8600c546119a6565b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505090508061144b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611442906129ce565b60405180910390fd5b505b505b6000600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114f25750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156114ff57839050611763565b7f0000000000000000000000000cc997b0d4e1a63c8c04760efbb8c924041bbc3773ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036116c257600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d690612a60565b60405180910390fd5b6011546115eb866108c8565b856115f6919061241e565b1115611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e90612af2565b60405180910390fd5b60006064600954866116499190612b12565b6116539190612b9b565b905060006064600854876116679190612b12565b6116719190612b9b565b9050808261167f919061241e565b8661168a919061294e565b925081600d600082825461169e919061241e565b925050819055506116bb883083856116b6919061241e565b611c26565b5050611762565b60006064600b54866116d49190612b12565b6116de9190612b9b565b905060006064600a54876116f29190612b12565b6116fc9190612b9b565b9050808261170a919061241e565b86611715919061294e565b925081600d6000828254611729919061241e565b9250508190555080600c6000828254611742919061241e565b9250508190555061175f8830838561175a919061241e565b611c26565b50505b5b61176e868683611c26565b50611780565b61177f858585611c26565b5b6002600a8190556008819055506001600b8190556009819055505050505050565b6117a9610cc7565b73ffffffffffffffffffffffffffffffffffffffff166117c761094a565b73ffffffffffffffffffffffffffffffffffffffff161461181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490612c18565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601460006101000a81548160ff021916908315150217905550600060028261190f9190612b9b565b90506000818361191f919061294e565b9050600047905061192f836119a6565b6000814761193d919061294e565b90506119498382611e86565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161197c93929190612c38565b60405180910390a1505050506000601460006101000a81548160ff02191690831515021790555050565b6001601460006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156119de576119dd612c6f565b5b604051908082528060200260200182016040528015611a0c5781602001602082028036833780820191505090505b5090503081600081518110611a2457611a23612c9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aed9190612ce2565b81600181518110611b0157611b00612c9e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611b66307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ccf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947836000843061012c42611bb5919061241e565b6040518663ffffffff1660e01b8152600401611bd5959493929190612e08565b600060405180830381600087803b158015611bef57600080fd5b505af1158015611c03573d6000803e3d6000fd5b50505050506000601460006101000a81548160ff02191690831515021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8c9061280a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb9061289c565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d819061292e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611e789190611fb6565b60405180910390a350505050565b6001601460006101000a81548160ff021916908315150217905550611ecc307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610ccf565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080611f1661094a565b426040518863ffffffff1660e01b8152600401611f3896959493929190612e62565b60606040518083038185885af1158015611f56573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611f7b9190612ed8565b5050506000601460006101000a81548160ff0219169083151502179055505050565b6000819050919050565b611fb081611f9d565b82525050565b6000602082019050611fcb6000830184611fa7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561200b578082015181840152602081019050611ff0565b60008484015250505050565b6000601f19601f8301169050919050565b600061203382611fd1565b61203d8185611fdc565b935061204d818560208601611fed565b61205681612017565b840191505092915050565b6000602082019050818103600083015261207b8184612028565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120b382612088565b9050919050565b6120c3816120a8565b81146120ce57600080fd5b50565b6000813590506120e0816120ba565b92915050565b6120ef81611f9d565b81146120fa57600080fd5b50565b60008135905061210c816120e6565b92915050565b6000806040838503121561212957612128612083565b5b6000612137858286016120d1565b9250506020612148858286016120fd565b9150509250929050565b60008115159050919050565b61216781612152565b82525050565b6000602082019050612182600083018461215e565b92915050565b6000819050919050565b60006121ad6121a86121a384612088565b612188565b612088565b9050919050565b60006121bf82612192565b9050919050565b60006121d1826121b4565b9050919050565b6121e1816121c6565b82525050565b60006020820190506121fc60008301846121d8565b92915050565b61220b816120a8565b82525050565b60006020820190506122266000830184612202565b92915050565b60008060006060848603121561224557612244612083565b5b6000612253868287016120d1565b9350506020612264868287016120d1565b9250506040612275868287016120fd565b9150509250925092565b600060ff82169050919050565b6122958161227f565b82525050565b60006020820190506122b0600083018461228c565b92915050565b6122bf81612152565b81146122ca57600080fd5b50565b6000813590506122dc816122b6565b92915050565b600080604083850312156122f9576122f8612083565b5b6000612307858286016120d1565b9250506020612318858286016122cd565b9150509250929050565b60006020828403121561233857612337612083565b5b6000612346848285016120d1565b91505092915050565b6000806040838503121561236657612365612083565b5b6000612374858286016120d1565b9250506020612385858286016120d1565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806123d657607f821691505b6020821081036123e9576123e861238f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061242982611f9d565b915061243483611f9d565b925082820190508082111561244c5761244b6123ef565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006124ae602583611fdc565b91506124b982612452565b604082019050919050565b600060208201905081810360008301526124dd816124a1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612540602683611fdc565b915061254b826124e4565b604082019050919050565b6000602082019050818103600083015261256f81612533565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006125d2602483611fdc565b91506125dd82612576565b604082019050919050565b60006020820190508181036000830152612601816125c5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612664602283611fdc565b915061266f82612608565b604082019050919050565b6000602082019050818103600083015261269381612657565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006126d0601d83611fdc565b91506126db8261269a565b602082019050919050565b600060208201905081810360008301526126ff816126c3565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473207460008201527f6865206d6178207472616e73616374696f6e20616d6f756e7400000000000000602082015250565b6000612762603983611fdc565b915061276d82612706565b604082019050919050565b6000602082019050818103600083015261279181612755565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006127f4602583611fdc565b91506127ff82612798565b604082019050919050565b60006020820190508181036000830152612823816127e7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612886602383611fdc565b91506128918261282a565b604082019050919050565b600060208201905081810360008301526128b581612879565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612918602683611fdc565b9150612923826128bc565b604082019050919050565b600060208201905081810360008301526129478161290b565b9050919050565b600061295982611f9d565b915061296483611f9d565b925082820390508181111561297c5761297b6123ef565b5b92915050565b7f4661696c656420746f2073656e64204554480000000000000000000000000000600082015250565b60006129b8601283611fdc565b91506129c382612982565b602082019050919050565b600060208201905081810360008301526129e7816129ab565b9050919050565b7f45524332303a20626c61636b6c697374656420626f74206e6f7420616c6c6f7760008201527f656420746f206275790000000000000000000000000000000000000000000000602082015250565b6000612a4a602983611fdc565b9150612a55826129ee565b604082019050919050565b60006020820190508181036000830152612a7981612a3d565b9050919050565b7f45524332303a2062616c616e636520616d6f756e74206578636565646564206d60008201527f61782077616c6c657420616d6f756e74206c696d697400000000000000000000602082015250565b6000612adc603683611fdc565b9150612ae782612a80565b604082019050919050565b60006020820190508181036000830152612b0b81612acf565b9050919050565b6000612b1d82611f9d565b9150612b2883611f9d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b6157612b606123ef565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ba682611f9d565b9150612bb183611f9d565b925082612bc157612bc0612b6c565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c02602083611fdc565b9150612c0d82612bcc565b602082019050919050565b60006020820190508181036000830152612c3181612bf5565b9050919050565b6000606082019050612c4d6000830186611fa7565b612c5a6020830185611fa7565b612c676040830184611fa7565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612cdc816120ba565b92915050565b600060208284031215612cf857612cf7612083565b5b6000612d0684828501612ccd565b91505092915050565b6000819050919050565b6000612d34612d2f612d2a84612d0f565b612188565b611f9d565b9050919050565b612d4481612d19565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d7f816120a8565b82525050565b6000612d918383612d76565b60208301905092915050565b6000602082019050919050565b6000612db582612d4a565b612dbf8185612d55565b9350612dca83612d66565b8060005b83811015612dfb578151612de28882612d85565b9750612ded83612d9d565b925050600181019050612dce565b5085935050505092915050565b600060a082019050612e1d6000830188611fa7565b612e2a6020830187612d3b565b8181036040830152612e3c8186612daa565b9050612e4b6060830185612202565b612e586080830184611fa7565b9695505050505050565b600060c082019050612e776000830189612202565b612e846020830188611fa7565b612e916040830187612d3b565b612e9e6060830186612d3b565b612eab6080830185612202565b612eb860a0830184611fa7565b979650505050505050565b600081519050612ed2816120e6565b92915050565b600080600060608486031215612ef157612ef0612083565b5b6000612eff86828701612ec3565b9350506020612f1086828701612ec3565b9250506040612f2186828701612ec3565b915050925092509256fea26469706673582212207e7bdbc6cd5561fd0c37894bc12e168bd45454dc8a8877d5688409ffada1856c64736f6c63430008100033
Deployed Bytecode Sourcemap
26997:9451:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27344:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17911:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20186:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27970:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19050:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27049:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27257:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21010:297;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18892:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22726:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28028:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34885:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18076:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15170:103;;;;;;;;;;;;;:::i;:::-;;27129:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14522:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17735:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21810:507;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19630:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27654:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34563:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19223:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34753:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34377:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27213:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15428:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27301:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27344:38;;;;:::o;17911:102::-;17967:13;18000:5;17993:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17911:102;:::o;20186:244::-;20307:4;20329:13;20345:12;:10;:12::i;:::-;20329:28;;20368:32;20377:5;20384:7;20393:6;20368:8;:32::i;:::-;20418:4;20411:11;;;20186:244;;;;:::o;27970:51::-;;;:::o;19050:110::-;19113:7;19140:12;;19133:19;;19050:110;:::o;27049:73::-;;;;;;;;;;;;;:::o;27257:37::-;;;;:::o;21010:297::-;21143:4;21160:15;21178:12;:10;:12::i;:::-;21160:30;;21201:38;21217:4;21223:7;21232:6;21201:15;:38::i;:::-;21250:27;21260:4;21266:2;21270:6;21250:9;:27::i;:::-;21295:4;21288:11;;;21010:297;;;;;:::o;18892:93::-;18950:5;18975:2;18968:9;;18892:93;:::o;22726:272::-;22843:4;22865:13;22881:12;:10;:12::i;:::-;22865:28;;22904:64;22913:5;22920:7;22957:10;22929:25;22939:5;22946:7;22929:9;:25::i;:::-;:38;;;;:::i;:::-;22904:8;:64::i;:::-;22986:4;22979:11;;;22726:272;;;;:::o;28028:38::-;;;:::o;34885:131::-;14408:13;:11;:13::i;:::-;35004:4:::1;34971:21;:30;34993:7;34971:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;34885:131:::0;;:::o;18076:177::-;18195:7;18227:9;:18;18237:7;18227:18;;;;;;;;;;;;;;;;18220:25;;18076:177;;;:::o;15170:103::-;14408:13;:11;:13::i;:::-;15235:30:::1;15262:1;15235:18;:30::i;:::-;15170:103::o:0;27129:75::-;;;;;;;;;;;;;:::o;14522:87::-;14568:7;14595:6;;;;;;;;;;;14588:13;;14522:87;:::o;17735:106::-;17793:13;17826:7;17819:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17735:106;:::o;21810:507::-;21932:4;21954:13;21970:12;:10;:12::i;:::-;21954:28;;21993:24;22020:25;22030:5;22037:7;22020:9;:25::i;:::-;21993:52;;22098:15;22078:16;:35;;22056:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;22214:60;22223:5;22230:7;22258:15;22239:16;:34;22214:8;:60::i;:::-;22305:4;22298:11;;;;21810:507;;;;:::o;19630:236::-;19747:4;19769:13;19785:12;:10;:12::i;:::-;19769:28;;19808;19818:5;19825:2;19829:6;19808:9;:28::i;:::-;19854:4;19847:11;;;19630:236;;;;:::o;27654:50::-;;;;:::o;34563:182::-;34666:4;14408:13;:11;:13::i;:::-;34706:9:::1;34688:15;;:27;;;;;;;;;;;;;;;;;;34733:4;34726:11;;34563:182:::0;;;:::o;19223:201::-;19357:7;19389:11;:18;19401:5;19389:18;;;;;;;;;;;;;;;:27;19408:7;19389:27;;;;;;;;;;;;;;;;19382:34;;19223:201;;;;:::o;34753:124::-;14408:13;:11;:13::i;:::-;34865:4:::1;34835:18;:27;34854:7;34835:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;34753:124:::0;;:::o;34377:178::-;34478:4;14408:13;:11;:13::i;:::-;34516:9:::1;34500:13;;:25;;;;;;;;;;;;;;;;;;34543:4;34536:11;;34377:178:::0;;;:::o;27213:37::-;;;;:::o;15428:238::-;14408:13;:11;:13::i;:::-;15551:1:::1;15531:22;;:8;:22;;::::0;15509:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15630:28;15649:8;15630:18;:28::i;:::-;15428:238:::0;:::o;27301:36::-;;;;:::o;13315:98::-;13368:7;13395:10;13388:17;;13315:98;:::o;25033:380::-;25186:1;25169:19;;:5;:19;;;25161:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25267:1;25248:21;;:7;:21;;;25240:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25351:6;25321:11;:18;25333:5;25321:18;;;;;;;;;;;;;;;:27;25340:7;25321:27;;;;;;;;;;;;;;;:36;;;;25389:7;25373:32;;25382:5;25373:32;;;25398:6;25373:32;;;;;;:::i;:::-;;;;;;;;25033:380;;;:::o;25704:502::-;25839:24;25866:25;25876:5;25883:7;25866:9;:25::i;:::-;25839:52;;25926:17;25906:16;:37;25902:297;;26006:6;25986:16;:26;;25960:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;26121:51;26130:5;26137:7;26165:6;26146:16;:25;26121:8;:51::i;:::-;25902:297;25828:378;25704:502;;;:::o;30585:3784::-;30715:2;30719:6;28413:15;;;;;;;;;;;:82;;;;;28489:4;28465:21;;:28;;;;:::i;:::-;28446:15;:48;28413:82;28395:467;;;28558:12;;28548:6;:22;;28522:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;28725:2;28701:21;;:26;;;;:::i;:::-;28682:15;:46;28678:173;;;28833:2;28811:19;:24;;;28791:17;:44;;;28770:18;:65;;;28749:18;:86;;;;28678:173;28395:467;28877:15;;;;;;;;;;;28876:16;:41;;;;;28903:13;28897:19;;:2;:19;;;28876:41;28872:150;;;28952:4;28934:15;;:22;;;;;;;;;;;;;;;;;;28995:15;28971:21;:39;;;;28872:150;30762:1:::1;30746:18;;:4;:18;;::::0;30738:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30839:1;30825:16;;:2;:16;;::::0;30817:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;30933:6;30914:15;30924:4;30914:9;:15::i;:::-;:25;;30892:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;31045:13;31037:21;;:4;:21;;;:44;;;;31068:13;31062:19;;:2;:19;;;31037:44;31036:67;;;;;31087:16;;;;;;;;;;;31086:17;31036:67;31018:3344;;;31142:13;31134:21;;:4;:21;;;31130:1242;;31176:32;31279:18;;31260:16;;:37;;;;:::i;:::-;31211:24;31229:4;31211:9;:24::i;:::-;:87;;;;:::i;:::-;31176:122;;31371:30;;31343:24;:58;31317:268;;31471:30;;31444:57;;31524:41;31540:24;31524:15;:41::i;:::-;31317:268;31631:24;;31608:18;;31607:48;31603:372;;31680:37;31698:18;;31680:17;:37::i;:::-;31761:1;31740:18;:22;;;;31785:9;31805:15;;;;;;;;;;;31797:29;;:100;31853:21;31797:100;;;;;;;;;;;;;;;;;;;;;;;31785:112;;31928:4;31920:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;31657:318;31603:372;32019:24;;31998:16;;31997:46;31993:364;;32068:35;32086:16;;32068:17;:35::i;:::-;32145:1;32126:16;:20;;;;32169:9;32189:13;;;;;;;;;;;32181:27;;:98;32235:21;32181:98;;;;;;;;;;;;;;;;;;;;;;;32169:110;;32310:4;32302:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;32045:312;31993:364;31157:1215;31130:1242;32388:22;32429:18;:24;32448:4;32429:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;32457:18;:22;32476:2;32457:22;;;;;;;;;;;;;;;;;;;;;;;;;32429:50;32425:1804;;;32517:6;32500:23;;32425:1804;;;32576:13;32568:21;;:4;:21;;::::0;32564:1650:::1;;32678:21;:25;32700:2;32678:25;;;;;;;;;;;;;;;;;;;;;;;;;32676:28;32642:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;32882:15;;32864:13;32874:2;32864:9;:13::i;:::-;32855:6;:22;;;;:::i;:::-;32854:43;;32820:183;;;;;;;;;;;;:::i;:::-;;;;;;;;;33028:22;33111:3;33064:18;;33055:6;:27;;;;:::i;:::-;33054:60;;;;:::i;:::-;33028:87;;33138:22;33221:3;33174:18;;33165:6;:27;;;;:::i;:::-;33164:60;;;;:::i;:::-;33138:87;;33292:14;33275;:31;;;;:::i;:::-;33265:6;:42;;;;:::i;:::-;33248:59;;33352:14;33330:18;;:36;;;;;;;:::i;:::-;;;;;;;;33391:169;33433:4;33472;33522:14;33505;:31;;;;:::i;:::-;33391:15;:169::i;:::-;32591:989;;32564:1650;;;33638:22;33722:3;33674:19;;33665:6;:28;;;;:::i;:::-;33664:61;;;;:::i;:::-;33638:88;;33749:20;33804:3;33783:17;;33774:6;:26;;;;:::i;:::-;33773:34;;;;:::i;:::-;33749:59;;33875:12;33858:14;:29;;;;:::i;:::-;33848:6;:40;;;;:::i;:::-;33831:57;;33933:14;33911:18;;:36;;;;;;;:::i;:::-;;;;;;;;33990:12;33970:16;;:32;;;;;;;:::i;:::-;;;;;;;;34027:167;34069:4;34108;34158:12;34141:14;:29;;;;:::i;:::-;34027:15;:167::i;:::-;33586:628;;32564:1650;32425:1804;34243:41;34259:4;34265:2;34269:14;34243:15;:41::i;:::-;31115:3181;31018:3344;;;34317:33;34333:4;34339:2;34343:6;34317:15;:33::i;:::-;31018:3344;29085:1:::0;29065:17;:21;;;29044:18;:42;;;;29140:1;29118:19;:23;;;29097:18;:44;;;;30585:3784;;;;;:::o;14687:132::-;14762:12;:10;:12::i;:::-;14751:23;;:7;:5;:7::i;:::-;:23;;;14743:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14687:132::o;15826:191::-;15900:16;15919:6;;;;;;;;;;;15900:25;;15945:8;15936:6;;:17;;;;;;;;;;;;;;;;;;16000:8;15969:40;;15990:8;15969:40;;;;;;;;;;;;15889:128;15826:191;:::o;35024:474::-;28263:4;28244:16;;:23;;;;;;;;;;;;;;;;;;35110:12:::1;35149:1;35126:20;:24;;;;:::i;:::-;35110:41;;35162:17;35206:4;35183:20;:27;;;;:::i;:::-;35162:49;;35224:22;35249:21;35224:46;;35283:23;35301:4;35283:17;:23::i;:::-;35319:18;35365:14;35341:21;:38;;;;:::i;:::-;35319:61;;35393:36;35407:9;35418:10;35393:13;:36::i;:::-;35447:43;35462:4;35468:10;35480:9;35447:43;;;;;;;;:::i;:::-;;;;;;;;35099:399;;;;28309:5:::0;28290:16;;:24;;;;;;;;;;;;;;;;;;35024:474;:::o;35506:496::-;28263:4;28244:16;;:23;;;;;;;;;;;;;;;;;;35585:21:::1;35623:1;35609:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35585:40;;35654:4;35636;35641:1;35636:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;35680:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35670:4;35675:1;35670:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;35715:62;35732:4;35747:15;35765:11;35715:8;:62::i;:::-;35790:15;:66;;;35871:11;35897:1;35913:4;35940;35979:3;35961:15;:21;;;;:::i;:::-;35790:204;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;35574:428;28309:5:::0;28290:16;;:24;;;;;;;;;;;;;;;;;;35506:496;:::o;26214:776::-;26361:1;26345:18;;:4;:18;;;26337:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;26438:1;26424:16;;:2;:16;;;26416:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;26493:19;26515:9;:15;26525:4;26515:15;;;;;;;;;;;;;;;;26493:37;;26578:6;26563:11;:21;;26541:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;26718:6;26704:11;:20;26686:9;:15;26696:4;26686:15;;;;;;;;;;;;;;;:38;;;;26921:6;26904:9;:13;26914:2;26904:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;26971:2;26956:26;;26965:4;26956:26;;;26975:6;26956:26;;;;;;:::i;:::-;;;;;;;;26326:664;26214:776;;;:::o;36010:398::-;28263:4;28244:16;;:23;;;;;;;;;;;;;;;;;;36127:62:::1;36144:4;36159:15;36177:11;36127:8;:62::i;:::-;36202:15;:31;;;36241:9;36274:4;36294:11;36320:1;36336::::0;36352:7:::1;:5;:7::i;:::-;36374:15;36202:198;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28309:5:::0;28290:16;;:24;;;;;;;;;;;;;;;;;;36010: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:60::-;3826:3;3847:5;3840:12;;3798:60;;;:::o;3864:142::-;3914:9;3947:53;3965:34;3974:24;3992:5;3974:24;:::i;:::-;3965:34;:::i;:::-;3947:53;:::i;:::-;3934:66;;3864:142;;;:::o;4012:126::-;4062:9;4095:37;4126:5;4095:37;:::i;:::-;4082:50;;4012:126;;;:::o;4144:152::-;4220:9;4253:37;4284:5;4253:37;:::i;:::-;4240:50;;4144:152;;;:::o;4302:183::-;4415:63;4472:5;4415:63;:::i;:::-;4410:3;4403:76;4302:183;;:::o;4491:274::-;4610:4;4648:2;4637:9;4633:18;4625:26;;4661:97;4755:1;4744:9;4740:17;4731:6;4661:97;:::i;:::-;4491:274;;;;:::o;4771:118::-;4858:24;4876:5;4858:24;:::i;:::-;4853:3;4846:37;4771:118;;:::o;4895:222::-;4988:4;5026:2;5015:9;5011:18;5003:26;;5039:71;5107:1;5096:9;5092:17;5083:6;5039:71;:::i;:::-;4895:222;;;;:::o;5123:619::-;5200:6;5208;5216;5265:2;5253:9;5244:7;5240:23;5236:32;5233:119;;;5271:79;;:::i;:::-;5233:119;5391:1;5416:53;5461:7;5452:6;5441:9;5437:22;5416:53;:::i;:::-;5406:63;;5362:117;5518:2;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5489:118;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5123:619;;;;;:::o;5748:86::-;5783:7;5823:4;5816:5;5812:16;5801:27;;5748:86;;;:::o;5840:112::-;5923:22;5939:5;5923:22;:::i;:::-;5918:3;5911:35;5840:112;;:::o;5958:214::-;6047:4;6085:2;6074:9;6070:18;6062:26;;6098:67;6162:1;6151:9;6147:17;6138:6;6098:67;:::i;:::-;5958:214;;;;:::o;6178:116::-;6248:21;6263:5;6248:21;:::i;:::-;6241:5;6238:32;6228:60;;6284:1;6281;6274:12;6228:60;6178:116;:::o;6300:133::-;6343:5;6381:6;6368:20;6359:29;;6397:30;6421:5;6397:30;:::i;:::-;6300:133;;;;:::o;6439:468::-;6504:6;6512;6561:2;6549:9;6540:7;6536:23;6532:32;6529:119;;;6567:79;;:::i;:::-;6529:119;6687:1;6712:53;6757:7;6748:6;6737:9;6733:22;6712:53;:::i;:::-;6702:63;;6658:117;6814:2;6840:50;6882:7;6873:6;6862:9;6858:22;6840:50;:::i;:::-;6830:60;;6785:115;6439:468;;;;;:::o;6913:329::-;6972:6;7021:2;7009:9;7000:7;6996:23;6992:32;6989:119;;;7027:79;;:::i;:::-;6989:119;7147:1;7172:53;7217:7;7208:6;7197:9;7193:22;7172:53;:::i;:::-;7162:63;;7118:117;6913:329;;;;:::o;7248:474::-;7316:6;7324;7373:2;7361:9;7352:7;7348:23;7344:32;7341:119;;;7379:79;;:::i;:::-;7341:119;7499:1;7524:53;7569:7;7560:6;7549:9;7545:22;7524:53;:::i;:::-;7514:63;;7470:117;7626:2;7652:53;7697:7;7688:6;7677:9;7673:22;7652:53;:::i;:::-;7642:63;;7597:118;7248:474;;;;;:::o;7728:180::-;7776:77;7773:1;7766:88;7873:4;7870:1;7863:15;7897:4;7894:1;7887:15;7914:320;7958:6;7995:1;7989:4;7985:12;7975:22;;8042:1;8036:4;8032:12;8063:18;8053:81;;8119:4;8111:6;8107:17;8097:27;;8053:81;8181:2;8173:6;8170:14;8150:18;8147:38;8144:84;;8200:18;;:::i;:::-;8144:84;7965:269;7914:320;;;:::o;8240:180::-;8288:77;8285:1;8278:88;8385:4;8382:1;8375:15;8409:4;8406:1;8399:15;8426:191;8466:3;8485:20;8503:1;8485:20;:::i;:::-;8480:25;;8519:20;8537:1;8519:20;:::i;:::-;8514:25;;8562:1;8559;8555:9;8548:16;;8583:3;8580:1;8577:10;8574:36;;;8590:18;;:::i;:::-;8574:36;8426:191;;;;:::o;8623:224::-;8763:34;8759:1;8751:6;8747:14;8740:58;8832:7;8827:2;8819:6;8815:15;8808:32;8623:224;:::o;8853:366::-;8995:3;9016:67;9080:2;9075:3;9016:67;:::i;:::-;9009:74;;9092:93;9181:3;9092:93;:::i;:::-;9210:2;9205:3;9201:12;9194:19;;8853:366;;;:::o;9225:419::-;9391:4;9429:2;9418:9;9414:18;9406:26;;9478:9;9472:4;9468:20;9464:1;9453:9;9449:17;9442:47;9506:131;9632:4;9506:131;:::i;:::-;9498:139;;9225:419;;;:::o;9650:225::-;9790:34;9786:1;9778:6;9774:14;9767:58;9859:8;9854:2;9846:6;9842:15;9835:33;9650:225;:::o;9881:366::-;10023:3;10044:67;10108:2;10103:3;10044:67;:::i;:::-;10037:74;;10120:93;10209:3;10120:93;:::i;:::-;10238:2;10233:3;10229:12;10222:19;;9881:366;;;:::o;10253:419::-;10419:4;10457:2;10446:9;10442:18;10434:26;;10506:9;10500:4;10496:20;10492:1;10481:9;10477:17;10470:47;10534:131;10660:4;10534:131;:::i;:::-;10526:139;;10253:419;;;:::o;10678:223::-;10818:34;10814:1;10806:6;10802:14;10795:58;10887:6;10882:2;10874:6;10870:15;10863:31;10678:223;:::o;10907:366::-;11049:3;11070:67;11134:2;11129:3;11070:67;:::i;:::-;11063:74;;11146:93;11235:3;11146:93;:::i;:::-;11264:2;11259:3;11255:12;11248:19;;10907:366;;;:::o;11279:419::-;11445:4;11483:2;11472:9;11468:18;11460:26;;11532:9;11526:4;11522:20;11518:1;11507:9;11503:17;11496:47;11560:131;11686:4;11560:131;:::i;:::-;11552:139;;11279:419;;;:::o;11704:221::-;11844:34;11840:1;11832:6;11828:14;11821:58;11913:4;11908:2;11900:6;11896:15;11889:29;11704:221;:::o;11931:366::-;12073:3;12094:67;12158:2;12153:3;12094:67;:::i;:::-;12087:74;;12170:93;12259:3;12170:93;:::i;:::-;12288:2;12283:3;12279:12;12272:19;;11931:366;;;:::o;12303:419::-;12469:4;12507:2;12496:9;12492:18;12484:26;;12556:9;12550:4;12546:20;12542:1;12531:9;12527:17;12520:47;12584:131;12710:4;12584:131;:::i;:::-;12576:139;;12303:419;;;:::o;12728:179::-;12868:31;12864:1;12856:6;12852:14;12845:55;12728:179;:::o;12913:366::-;13055:3;13076:67;13140:2;13135:3;13076:67;:::i;:::-;13069:74;;13152:93;13241:3;13152:93;:::i;:::-;13270:2;13265:3;13261:12;13254:19;;12913:366;;;:::o;13285:419::-;13451:4;13489:2;13478:9;13474:18;13466:26;;13538:9;13532:4;13528:20;13524:1;13513:9;13509:17;13502:47;13566:131;13692:4;13566:131;:::i;:::-;13558:139;;13285:419;;;:::o;13710:244::-;13850:34;13846:1;13838:6;13834:14;13827:58;13919:27;13914:2;13906:6;13902:15;13895:52;13710:244;:::o;13960:366::-;14102:3;14123:67;14187:2;14182:3;14123:67;:::i;:::-;14116:74;;14199:93;14288:3;14199:93;:::i;:::-;14317:2;14312:3;14308:12;14301:19;;13960:366;;;:::o;14332:419::-;14498:4;14536:2;14525:9;14521:18;14513:26;;14585:9;14579:4;14575:20;14571:1;14560:9;14556:17;14549:47;14613:131;14739:4;14613:131;:::i;:::-;14605:139;;14332:419;;;:::o;14757:224::-;14897:34;14893:1;14885:6;14881:14;14874:58;14966:7;14961:2;14953:6;14949:15;14942:32;14757:224;:::o;14987:366::-;15129:3;15150:67;15214:2;15209:3;15150:67;:::i;:::-;15143:74;;15226:93;15315:3;15226:93;:::i;:::-;15344:2;15339:3;15335:12;15328:19;;14987:366;;;:::o;15359:419::-;15525:4;15563:2;15552:9;15548:18;15540:26;;15612:9;15606:4;15602:20;15598:1;15587:9;15583:17;15576:47;15640:131;15766:4;15640:131;:::i;:::-;15632:139;;15359:419;;;:::o;15784:222::-;15924:34;15920:1;15912:6;15908:14;15901:58;15993:5;15988:2;15980:6;15976:15;15969:30;15784:222;:::o;16012:366::-;16154:3;16175:67;16239:2;16234:3;16175:67;:::i;:::-;16168:74;;16251:93;16340:3;16251:93;:::i;:::-;16369:2;16364:3;16360:12;16353:19;;16012:366;;;:::o;16384:419::-;16550:4;16588:2;16577:9;16573:18;16565:26;;16637:9;16631:4;16627:20;16623:1;16612:9;16608:17;16601:47;16665:131;16791:4;16665:131;:::i;:::-;16657:139;;16384:419;;;:::o;16809:225::-;16949:34;16945:1;16937:6;16933:14;16926:58;17018:8;17013:2;17005:6;17001:15;16994:33;16809:225;:::o;17040:366::-;17182:3;17203:67;17267:2;17262:3;17203:67;:::i;:::-;17196:74;;17279:93;17368:3;17279:93;:::i;:::-;17397:2;17392:3;17388:12;17381:19;;17040:366;;;:::o;17412:419::-;17578:4;17616:2;17605:9;17601:18;17593:26;;17665:9;17659:4;17655:20;17651:1;17640:9;17636:17;17629:47;17693:131;17819:4;17693:131;:::i;:::-;17685:139;;17412:419;;;:::o;17837:194::-;17877:4;17897:20;17915:1;17897:20;:::i;:::-;17892:25;;17931:20;17949:1;17931:20;:::i;:::-;17926:25;;17975:1;17972;17968:9;17960:17;;17999:1;17993:4;17990:11;17987:37;;;18004:18;;:::i;:::-;17987:37;17837:194;;;;:::o;18037:168::-;18177:20;18173:1;18165:6;18161:14;18154:44;18037:168;:::o;18211:366::-;18353:3;18374:67;18438:2;18433:3;18374:67;:::i;:::-;18367:74;;18450:93;18539:3;18450:93;:::i;:::-;18568:2;18563:3;18559:12;18552:19;;18211:366;;;:::o;18583:419::-;18749:4;18787:2;18776:9;18772:18;18764:26;;18836:9;18830:4;18826:20;18822:1;18811:9;18807:17;18800:47;18864:131;18990:4;18864:131;:::i;:::-;18856:139;;18583:419;;;:::o;19008:228::-;19148:34;19144:1;19136:6;19132:14;19125:58;19217:11;19212:2;19204:6;19200:15;19193:36;19008:228;:::o;19242:366::-;19384:3;19405:67;19469:2;19464:3;19405:67;:::i;:::-;19398:74;;19481:93;19570:3;19481:93;:::i;:::-;19599:2;19594:3;19590:12;19583:19;;19242:366;;;:::o;19614:419::-;19780:4;19818:2;19807:9;19803:18;19795:26;;19867:9;19861:4;19857:20;19853:1;19842:9;19838:17;19831:47;19895:131;20021:4;19895:131;:::i;:::-;19887:139;;19614:419;;;:::o;20039:241::-;20179:34;20175:1;20167:6;20163:14;20156:58;20248:24;20243:2;20235:6;20231:15;20224:49;20039:241;:::o;20286:366::-;20428:3;20449:67;20513:2;20508:3;20449:67;:::i;:::-;20442:74;;20525:93;20614:3;20525:93;:::i;:::-;20643:2;20638:3;20634:12;20627:19;;20286:366;;;:::o;20658:419::-;20824:4;20862:2;20851:9;20847:18;20839:26;;20911:9;20905:4;20901:20;20897:1;20886:9;20882:17;20875:47;20939:131;21065:4;20939:131;:::i;:::-;20931:139;;20658:419;;;:::o;21083:348::-;21123:7;21146:20;21164:1;21146:20;:::i;:::-;21141:25;;21180:20;21198:1;21180:20;:::i;:::-;21175:25;;21368:1;21300:66;21296:74;21293:1;21290:81;21285:1;21278:9;21271:17;21267:105;21264:131;;;21375:18;;:::i;:::-;21264:131;21423:1;21420;21416:9;21405:20;;21083:348;;;;:::o;21437:180::-;21485:77;21482:1;21475:88;21582:4;21579:1;21572:15;21606:4;21603:1;21596:15;21623:185;21663:1;21680:20;21698:1;21680:20;:::i;:::-;21675:25;;21714:20;21732:1;21714:20;:::i;:::-;21709:25;;21753:1;21743:35;;21758:18;;:::i;:::-;21743:35;21800:1;21797;21793:9;21788:14;;21623:185;;;;:::o;21814:182::-;21954:34;21950:1;21942:6;21938:14;21931:58;21814:182;:::o;22002:366::-;22144:3;22165:67;22229:2;22224:3;22165:67;:::i;:::-;22158:74;;22241:93;22330:3;22241:93;:::i;:::-;22359:2;22354:3;22350:12;22343:19;;22002:366;;;:::o;22374:419::-;22540:4;22578:2;22567:9;22563:18;22555:26;;22627:9;22621:4;22617:20;22613:1;22602:9;22598:17;22591:47;22655:131;22781:4;22655:131;:::i;:::-;22647:139;;22374:419;;;:::o;22799:442::-;22948:4;22986:2;22975:9;22971:18;22963:26;;22999:71;23067:1;23056:9;23052:17;23043:6;22999:71;:::i;:::-;23080:72;23148:2;23137:9;23133:18;23124:6;23080:72;:::i;:::-;23162;23230:2;23219:9;23215:18;23206:6;23162:72;:::i;:::-;22799:442;;;;;;:::o;23247:180::-;23295:77;23292:1;23285:88;23392:4;23389:1;23382:15;23416:4;23413:1;23406:15;23433:180;23481:77;23478:1;23471:88;23578:4;23575:1;23568:15;23602:4;23599:1;23592:15;23619:143;23676:5;23707:6;23701:13;23692:22;;23723:33;23750:5;23723:33;:::i;:::-;23619:143;;;;:::o;23768:351::-;23838:6;23887:2;23875:9;23866:7;23862:23;23858:32;23855:119;;;23893:79;;:::i;:::-;23855:119;24013:1;24038:64;24094:7;24085:6;24074:9;24070:22;24038:64;:::i;:::-;24028:74;;23984:128;23768:351;;;;:::o;24125:85::-;24170:7;24199:5;24188:16;;24125:85;;;:::o;24216:158::-;24274:9;24307:61;24325:42;24334:32;24360:5;24334:32;:::i;:::-;24325:42;:::i;:::-;24307:61;:::i;:::-;24294:74;;24216:158;;;:::o;24380:147::-;24475:45;24514:5;24475:45;:::i;:::-;24470:3;24463:58;24380:147;;:::o;24533:114::-;24600:6;24634:5;24628:12;24618:22;;24533:114;;;:::o;24653:184::-;24752:11;24786:6;24781:3;24774:19;24826:4;24821:3;24817:14;24802:29;;24653:184;;;;:::o;24843:132::-;24910:4;24933:3;24925:11;;24963:4;24958:3;24954:14;24946:22;;24843:132;;;:::o;24981:108::-;25058:24;25076:5;25058:24;:::i;:::-;25053:3;25046:37;24981:108;;:::o;25095:179::-;25164:10;25185:46;25227:3;25219:6;25185:46;:::i;:::-;25263:4;25258:3;25254:14;25240:28;;25095:179;;;;:::o;25280:113::-;25350:4;25382;25377:3;25373:14;25365:22;;25280:113;;;:::o;25429:732::-;25548:3;25577:54;25625:5;25577:54;:::i;:::-;25647:86;25726:6;25721:3;25647:86;:::i;:::-;25640:93;;25757:56;25807:5;25757:56;:::i;:::-;25836:7;25867:1;25852:284;25877:6;25874:1;25871:13;25852:284;;;25953:6;25947:13;25980:63;26039:3;26024:13;25980:63;:::i;:::-;25973:70;;26066:60;26119:6;26066:60;:::i;:::-;26056:70;;25912:224;25899:1;25896;25892:9;25887:14;;25852:284;;;25856:14;26152:3;26145:10;;25553:608;;;25429:732;;;;:::o;26167:831::-;26430:4;26468:3;26457:9;26453:19;26445:27;;26482:71;26550:1;26539:9;26535:17;26526:6;26482:71;:::i;:::-;26563:80;26639:2;26628:9;26624:18;26615:6;26563:80;:::i;:::-;26690:9;26684:4;26680:20;26675:2;26664:9;26660:18;26653:48;26718:108;26821:4;26812:6;26718:108;:::i;:::-;26710:116;;26836:72;26904:2;26893:9;26889:18;26880:6;26836:72;:::i;:::-;26918:73;26986:3;26975:9;26971:19;26962:6;26918:73;:::i;:::-;26167:831;;;;;;;;:::o;27004:807::-;27253:4;27291:3;27280:9;27276:19;27268:27;;27305:71;27373:1;27362:9;27358:17;27349:6;27305:71;:::i;:::-;27386:72;27454:2;27443:9;27439:18;27430:6;27386:72;:::i;:::-;27468:80;27544:2;27533:9;27529:18;27520:6;27468:80;:::i;:::-;27558;27634:2;27623:9;27619:18;27610:6;27558:80;:::i;:::-;27648:73;27716:3;27705:9;27701:19;27692:6;27648:73;:::i;:::-;27731;27799:3;27788:9;27784:19;27775:6;27731:73;:::i;:::-;27004:807;;;;;;;;;:::o;27817:143::-;27874:5;27905:6;27899:13;27890:22;;27921:33;27948:5;27921:33;:::i;:::-;27817:143;;;;:::o;27966:663::-;28054:6;28062;28070;28119:2;28107:9;28098:7;28094:23;28090:32;28087:119;;;28125:79;;:::i;:::-;28087:119;28245:1;28270:64;28326:7;28317:6;28306:9;28302:22;28270:64;:::i;:::-;28260:74;;28216:128;28383:2;28409:64;28465:7;28456:6;28445:9;28441:22;28409:64;:::i;:::-;28399:74;;28354:129;28522:2;28548:64;28604:7;28595:6;28584:9;28580:22;28548:64;:::i;:::-;28538:74;;28493:129;27966:663;;;;;:::o
Swarm Source
ipfs://7e7bdbc6cd5561fd0c37894bc12e168bd45454dc8a8877d5688409ffada1856c
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.