More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 237 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 17506939 | 568 days ago | IN | 0 ETH | 0.00040758 | ||||
Approve | 17506916 | 568 days ago | IN | 0 ETH | 0.00071645 | ||||
Approve | 17009410 | 638 days ago | IN | 0 ETH | 0.00054614 | ||||
Approve | 17009410 | 638 days ago | IN | 0 ETH | 0.00054614 | ||||
Approve | 16862478 | 659 days ago | IN | 0 ETH | 0.00065993 | ||||
Approve | 16790231 | 669 days ago | IN | 0 ETH | 0.00059584 | ||||
Approve | 16448009 | 717 days ago | IN | 0 ETH | 0.00085916 | ||||
Approve | 15952970 | 786 days ago | IN | 0 ETH | 0.00094524 | ||||
Approve | 15937400 | 789 days ago | IN | 0 ETH | 0.00063733 | ||||
Approve | 15933900 | 789 days ago | IN | 0 ETH | 0.00240461 | ||||
Approve | 15910442 | 792 days ago | IN | 0 ETH | 0.00049872 | ||||
Approve | 15907180 | 793 days ago | IN | 0 ETH | 0.00056517 | ||||
Approve | 15881917 | 796 days ago | IN | 0 ETH | 0.00052191 | ||||
Approve | 15881457 | 796 days ago | IN | 0 ETH | 0.00047444 | ||||
Approve | 15881448 | 796 days ago | IN | 0 ETH | 0.00052426 | ||||
Approve | 15881445 | 796 days ago | IN | 0 ETH | 0.00053587 | ||||
Approve | 15881442 | 796 days ago | IN | 0 ETH | 0.00059316 | ||||
Approve | 15879745 | 797 days ago | IN | 0 ETH | 0.00058226 | ||||
Approve | 15879669 | 797 days ago | IN | 0 ETH | 0.00059714 | ||||
Approve | 15879660 | 797 days ago | IN | 0 ETH | 0.00061569 | ||||
Approve | 15878798 | 797 days ago | IN | 0 ETH | 0.00057187 | ||||
Approve | 15878651 | 797 days ago | IN | 0 ETH | 0.00050531 | ||||
Approve | 15878277 | 797 days ago | IN | 0 ETH | 0.00047593 | ||||
Approve | 15878170 | 797 days ago | IN | 0 ETH | 0.00054533 | ||||
Approve | 15878164 | 797 days ago | IN | 0 ETH | 0.0005783 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
15907182 | 793 days ago | 0.00314768 ETH | ||||
15907182 | 793 days ago | 0.00314768 ETH | ||||
15900060 | 794 days ago | 0.0034462 ETH | ||||
15900060 | 794 days ago | 0.0034462 ETH | ||||
15897705 | 794 days ago | 0.00358422 ETH | ||||
15897705 | 794 days ago | 0.000351 ETH | ||||
15897705 | 794 days ago | 0.00393522 ETH | ||||
15887972 | 795 days ago | 0.0038596 ETH | ||||
15887972 | 795 days ago | 0.0038596 ETH | ||||
15884337 | 796 days ago | 0.00613031 ETH | ||||
15884337 | 796 days ago | 0.00613031 ETH | ||||
15882515 | 796 days ago | 0.00504859 ETH | ||||
15882515 | 796 days ago | 0.00504859 ETH | ||||
15882302 | 796 days ago | 0.00538708 ETH | ||||
15882302 | 796 days ago | 0.00538708 ETH | ||||
15882218 | 796 days ago | 0.0049853 ETH | ||||
15882218 | 796 days ago | 0.0049853 ETH | ||||
15882191 | 796 days ago | 0.00563665 ETH | ||||
15882191 | 796 days ago | 0.00563665 ETH | ||||
15881483 | 796 days ago | 0.00931435 ETH | ||||
15881483 | 796 days ago | 0.00931435 ETH | ||||
15881479 | 796 days ago | 0.00547433 ETH | ||||
15881479 | 796 days ago | 0.05443009 ETH | ||||
15881479 | 796 days ago | 0.05990443 ETH | ||||
15880402 | 796 days ago | 0.00664482 ETH |
Loading...
Loading
Contract Name:
THEZONE
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-11-01 */ /** *Submitted for verification at Etherscan.io on 2022-04-19 */ /** * THE ZONE * * Telegram: https://t.me/TheZoneToken * Twitter: https://twitter.com/TheZoneToken * Website: https://TheZone.tech * */ // SPDX-License-Identifier: MIT pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * Requirements: * * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender``'s tokens of at least * `amount`. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract THEZONE is ERC20, Ownable { using SafeMath for uint256; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool private swapping; address public marketingWallet; address public devWallet; address public liquidityWallet; uint256 public maxTransactionAmount; uint256 public swapTokensAtAmount; uint256 public maxWallet; bool public limitsInEffect = true; bool public tradingActive = false; bool public swapEnabled = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = true; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; /******************/ // exlcude from fees and max transaction amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress); event ExcludeFromFees(address indexed account, bool isExcluded); event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet); event devWalletUpdated(address indexed newWallet, address indexed oldWallet); event liquidityWalletUpdated(address indexed newWallet, address indexed oldWallet); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); event OwnerForcedSwapBack(uint256 timestamp); constructor() ERC20("THE ZONE", "ZONE") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); uint256 _buyMarketingFee = 5; uint256 _buyLiquidityFee = 0; uint256 _buyDevFee = 0; uint256 _sellMarketingFee = 0; uint256 _sellLiquidityFee = 0; uint256 _sellDevFee = 5; uint256 totalSupply = 1 * 1e9 * 1e18; maxTransactionAmount = totalSupply * 20 / 1000; // 2% maxTransactionAmountTxn maxWallet = totalSupply * 2 / 100; // 2% maxWallet swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05% swap wallet buyMarketingFee = _buyMarketingFee; buyLiquidityFee = _buyLiquidityFee; buyDevFee = _buyDevFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; sellMarketingFee = _sellMarketingFee; sellLiquidityFee = _sellLiquidityFee; sellDevFee = _sellDevFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; marketingWallet = address(0xAAaA210fa8B1Ff96242b13C0baC7a1C5ABEBF45d); // set as marketing wallet devWallet = address(0xf74170c3495F16675Cac72dA2e39539e31A5EBD5); // set as dev wallet // exclude from paying fees or having max transaction amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); /* _mint is an internal function in ERC20.sol that is only called here, and CANNOT be called ever again */ _mint(msg.sender, totalSupply); } receive() external payable { } // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; swapEnabled = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool){ limitsInEffect = false; transferDelayEnabled = false; return true; } // disable Transfer delay - cannot be reenabled function disableTransferDelay() external onlyOwner returns (bool){ transferDelayEnabled = false; return true; } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){ require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount; return true; } function updateMaxAmount(uint256 newNum) external onlyOwner { require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.5%"); maxTransactionAmount = newNum * (10**18); } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } // only use to disable contract sales if absolutely necessary (emergency use only) function updateSwapEnabled(bool enabled) external onlyOwner(){ swapEnabled = enabled; } function updateBuyFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee; require(buyTotalFees <= 99, "Just for the snipers at launch"); } function updateSellFees(uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee; require(sellTotalFees <= 25, "Must keep fees at 25% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; emit SetAutomatedMarketMakerPair(pair, value); } function updateMarketingWallet(address newMarketingWallet) external onlyOwner { emit marketingWalletUpdated(newMarketingWallet, marketingWallet); marketingWallet = newMarketingWallet; } function updateDevWallet(address newWallet) external onlyOwner { emit devWalletUpdated(newWallet, devWallet); devWallet = newWallet; } function updateLiquidityWallet(address newWallet) external onlyOwner { emit liquidityWalletUpdated(newWallet, liquidityWallet); liquidityWallet = newWallet; } function isExcludedFromFees(address account) public view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); if(amount == 0) { super._transfer(from, to, 0); return; } if(limitsInEffect){ if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ){ if(!tradingActive){ require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number; } } //when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } //when sell else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount."); } else { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; // only take fees on buys/sells, do not take on wallet transfers if(takeFee){ // on sell if (automatedMarketMakerPairs[to] && sellTotalFees > 0){ fees = amount.mul(sellTotalFees).div(100); tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees; tokensForDev += fees * sellDevFee / sellTotalFees; tokensForMarketing += fees * sellMarketingFee / sellTotalFees; } // on buy else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = amount.mul(buyTotalFees).div(100); tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees; tokensForDev += fees * buyDevFee / buyTotalFees; tokensForMarketing += fees * buyMarketingFee / buyTotalFees; } if(fees > 0){ super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { // approve token transfer to cover all possible scenarios _approve(address(this), address(uniswapV2Router), tokenAmount); // add the liquidity uniswapV2Router.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable liquidityWallet, block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if(contractBalance == 0 || totalTokensToSwap == 0) {return;} // Halve the amount of liquidity tokens uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2; uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens); uint256 initialETHBalance = address(this).balance; swapTokensForEth(amountToSwapForETH); uint256 ethBalance = address(this).balance.sub(initialETHBalance); uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap); uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap); uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; (bool success,) = address(marketingWallet).call{value: ethForMarketing}(""); (success,) = address(devWallet).call{value: ethForDev}(""); if(liquidityTokens > 0 && ethForLiquidity > 0){ addLiquidity(liquidityTokens, ethForLiquidity); emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity); } } // force Swap back if slippage above 49% for launch. function forceSwapBack() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); require(contractBalance >= totalSupply() / 100, "Can only swap back if more than 1% of tokens stuck on contract"); swapBack(); emit OwnerForcedSwapBack(block.timestamp); } function withdrawDustETH(address _recipient) external onlyOwner { uint256 contractETHBalance = address(this).balance; (bool success, ) = _recipient.call{ value: contractETHBalance }(""); require( success, "Address: unable to send value, recipient may have reverted" ); } }
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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"liquidityWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"forceSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateLiquidityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"}],"name":"withdrawDustETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c06040526001600c60006101000a81548160ff0219169083151502179055506000600c60016101000a81548160ff0219169083151502179055506000600c60026101000a81548160ff0219169083151502179055506001600e60006101000a81548160ff0219169083151502179055503480156200007d57600080fd5b506040518060400160405280600881526020017f544845205a4f4e450000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a4f4e450000000000000000000000000000000000000000000000000000000081525081600390805190602001906200010292919062000bb9565b5080600490805190602001906200011b92919062000bb9565b5050506000620001306200068560201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001fb8160016200068d60201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027657600080fd5b505afa1580156200028b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b1919062000cd3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200031457600080fd5b505afa15801562000329573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034f919062000cd3565b6040518363ffffffff1660e01b81526004016200036e92919062000d16565b602060405180830381600087803b1580156200038957600080fd5b505af11580156200039e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c4919062000cd3565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200040c60a05160016200068d60201b60201c565b6200042160a05160016200078a60201b60201c565b60006005905060008060008060006005905060006b033b2e3c9fd0803ce800000090506103e860148262000456919062000d7c565b62000462919062000e0c565b600981905550606460028262000479919062000d7c565b62000485919062000e0c565b600b819055506127106005826200049d919062000d7c565b620004a9919062000e0c565b600a81905550866010819055508560118190555084601281905550601254601154601054620004d9919062000e44565b620004e5919062000e44565b600f8190555083601481905550826015819055508160168190555060165460155460145462000515919062000e44565b62000521919062000e44565b60138190555073aaaa210fa8b1ff96242b13c0bac7a1c5abebf45d600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073f74170c3495f16675cac72da2e39539e31a5ebd5600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005f3620005e56200082b60201b60201c565b60016200085560201b60201c565b620006063060016200085560201b60201c565b6200061b61dead60016200085560201b60201c565b6200063d6200062f6200082b60201b60201c565b60016200068d60201b60201c565b620006503060016200068d60201b60201c565b6200066561dead60016200068d60201b60201c565b620006773382620009a260201b60201c565b5050505050505050620010d5565b600033905090565b6200069d6200068560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146200072f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007269062000f02565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008656200068560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008f7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ee9062000f02565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405162000996919062000f41565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a0c9062000fae565b60405180910390fd5b62000a296000838362000b5160201b60201c565b62000a458160025462000b5660201b620028ff1790919060201c565b60028190555062000aa3816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000b5660201b620028ff1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b45919062000fe1565b60405180910390a35050565b505050565b600080828462000b67919062000e44565b90508381101562000baf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ba6906200104e565b60405180910390fd5b8091505092915050565b82805462000bc7906200109f565b90600052602060002090601f01602090048101928262000beb576000855562000c37565b82601f1062000c0657805160ff191683800117855562000c37565b8280016001018555821562000c37579182015b8281111562000c3657825182559160200191906001019062000c19565b5b50905062000c46919062000c4a565b5090565b5b8082111562000c6557600081600090555060010162000c4b565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c9b8262000c6e565b9050919050565b62000cad8162000c8e565b811462000cb957600080fd5b50565b60008151905062000ccd8162000ca2565b92915050565b60006020828403121562000cec5762000ceb62000c69565b5b600062000cfc8482850162000cbc565b91505092915050565b62000d108162000c8e565b82525050565b600060408201905062000d2d600083018562000d05565b62000d3c602083018462000d05565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000d898262000d43565b915062000d968362000d43565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000dd25762000dd162000d4d565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000e198262000d43565b915062000e268362000d43565b92508262000e395762000e3862000ddd565b5b828204905092915050565b600062000e518262000d43565b915062000e5e8362000d43565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000e965762000e9562000d4d565b5b828201905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000eea60208362000ea1565b915062000ef78262000eb2565b602082019050919050565b6000602082019050818103600083015262000f1d8162000edb565b9050919050565b60008115159050919050565b62000f3b8162000f24565b82525050565b600060208201905062000f58600083018462000f30565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000f96601f8362000ea1565b915062000fa38262000f5e565b602082019050919050565b6000602082019050818103600083015262000fc98162000f87565b9050919050565b62000fdb8162000d43565b82525050565b600060208201905062000ff8600083018462000fd0565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001036601b8362000ea1565b9150620010438262000ffe565b602082019050919050565b60006020820190508181036000830152620010698162001027565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620010b857607f821691505b60208210811415620010cf57620010ce62001070565b5b50919050565b60805160a051615837620011336000396000818161127701528181611c090152612ee8015260008181610f5101528181612e9001528181613f7d0152818161406d0152818161409401528181614130015261415701526158376000f3fe60806040526004361061036f5760003560e01c806392136913116101c6578063c876d0b9116100f7578063e37ba8f911610095578063f11a24d31161006f578063f11a24d314610cab578063f2fde38b14610cd6578063f637434214610cff578063f8b45b0514610d2a57610376565b8063e37ba8f914610c2e578063e393c29414610c57578063e884f26014610c8057610376565b8063d4698016116100d1578063d469801614610b70578063d85ba06314610b9b578063dd62ed3e14610bc6578063e2f4560514610c0357610376565b8063c876d0b914610add578063c8c8ebe414610b08578063d257b34f14610b3357610376565b8063a457c2d711610164578063b62496f51161013e578063b62496f514610a23578063bbc0c74214610a60578063c024666814610a8b578063c17b5b8c14610ab457610376565b8063a457c2d714610980578063a9059cbb146109bd578063aacebbe3146109fa57610376565b80639a7a23d6116101a05780639a7a23d6146108d65780639c3b4fdc146108ff5780639fccce321461092a578063a0d82dc51461095557610376565b80639213691314610857578063924de9b71461088257806395d89b41146108ab57610376565b80634fbee193116102a05780637571336a1161023e5780638095d564116102185780638095d564146107c15780638a8c523c146107ea5780638da5cb5b146108015780638ea5220f1461082c57610376565b80637571336a1461074257806375f0a8741461076b5780637bce5a041461079657610376565b80636ddd17131161027a5780636ddd17131461069857806370a08231146106c3578063715018a614610700578063751039fc1461071757610376565b80634fbee1931461061957806351f205e4146106565780636a486a8e1461066d57610376565b80631a8145bb1161030d578063313ce567116102e7578063313ce5671461055b578063395093511461058657806349bd5a5e146105c35780634a62bb65146105ee57610376565b80631a8145bb146104c85780631f3fed8f146104f357806323b872dd1461051e57610376565b806310d5de531161034957806310d5de531461040c5780631694505e1461044957806318160ddd146104745780631816467f1461049f57610376565b806306fdde031461037b578063095ea7b3146103a6578063106b5da1146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d55565b60405161039d9190614336565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906143f1565b610de7565b6040516103da919061444c565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614467565b610e05565b005b34801561041857600080fd5b50610433600480360381019061042e9190614494565b610f2f565b604051610440919061444c565b60405180910390f35b34801561045557600080fd5b5061045e610f4f565b60405161046b9190614520565b60405180910390f35b34801561048057600080fd5b50610489610f73565b604051610496919061454a565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190614494565b610f7d565b005b3480156104d457600080fd5b506104dd6110d4565b6040516104ea919061454a565b60405180910390f35b3480156104ff57600080fd5b506105086110da565b604051610515919061454a565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190614565565b6110e0565b604051610552919061444c565b60405180910390f35b34801561056757600080fd5b506105706111b9565b60405161057d91906145d4565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a891906143f1565b6111c2565b6040516105ba919061444c565b60405180910390f35b3480156105cf57600080fd5b506105d8611275565b6040516105e591906145fe565b60405180910390f35b3480156105fa57600080fd5b50610603611299565b604051610610919061444c565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190614494565b6112ac565b60405161064d919061444c565b60405180910390f35b34801561066257600080fd5b5061066b611302565b005b34801561067957600080fd5b5061068261143e565b60405161068f919061454a565b60405180910390f35b3480156106a457600080fd5b506106ad611444565b6040516106ba919061444c565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190614494565b611457565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b5061071561149f565b005b34801561072357600080fd5b5061072c6115f7565b604051610739919061444c565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614645565b6116cd565b005b34801561077757600080fd5b506107806117bf565b60405161078d91906145fe565b60405180910390f35b3480156107a257600080fd5b506107ab6117e5565b6040516107b8919061454a565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190614685565b6117eb565b005b3480156107f657600080fd5b506107ff611905565b005b34801561080d57600080fd5b506108166119d4565b60405161082391906145fe565b60405180910390f35b34801561083857600080fd5b506108416119fe565b60405161084e91906145fe565b60405180910390f35b34801561086357600080fd5b5061086c611a24565b604051610879919061454a565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a491906146d8565b611a2a565b005b3480156108b757600080fd5b506108c0611ade565b6040516108cd9190614336565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614645565b611b70565b005b34801561090b57600080fd5b50610914611ca4565b604051610921919061454a565b60405180910390f35b34801561093657600080fd5b5061093f611caa565b60405161094c919061454a565b60405180910390f35b34801561096157600080fd5b5061096a611cb0565b604051610977919061454a565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906143f1565b611cb6565b6040516109b4919061444c565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906143f1565b611d83565b6040516109f1919061444c565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c9190614494565b611da1565b005b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614494565b611ef8565b604051610a57919061444c565b60405180910390f35b348015610a6c57600080fd5b50610a75611f18565b604051610a82919061444c565b60405180910390f35b348015610a9757600080fd5b50610ab26004803603810190610aad9190614645565b611f2b565b005b348015610ac057600080fd5b50610adb6004803603810190610ad69190614685565b61206b565b005b348015610ae957600080fd5b50610af2612185565b604051610aff919061444c565b60405180910390f35b348015610b1457600080fd5b50610b1d612198565b604051610b2a919061454a565b60405180910390f35b348015610b3f57600080fd5b50610b5a6004803603810190610b559190614467565b61219e565b604051610b67919061444c565b60405180910390f35b348015610b7c57600080fd5b50610b8561230e565b604051610b9291906145fe565b60405180910390f35b348015610ba757600080fd5b50610bb0612334565b604051610bbd919061454a565b60405180910390f35b348015610bd257600080fd5b50610bed6004803603810190610be89190614705565b61233a565b604051610bfa919061454a565b60405180910390f35b348015610c0f57600080fd5b50610c186123c1565b604051610c25919061454a565b60405180910390f35b348015610c3a57600080fd5b50610c556004803603810190610c509190614494565b6123c7565b005b348015610c6357600080fd5b50610c7e6004803603810190610c799190614494565b61251e565b005b348015610c8c57600080fd5b50610c9561266b565b604051610ca2919061444c565b60405180910390f35b348015610cb757600080fd5b50610cc0612726565b604051610ccd919061454a565b60405180910390f35b348015610ce257600080fd5b50610cfd6004803603810190610cf89190614494565b61272c565b005b348015610d0b57600080fd5b50610d146128f3565b604051610d21919061454a565b60405180910390f35b348015610d3657600080fd5b50610d3f6128f9565b604051610d4c919061454a565b60405180910390f35b606060038054610d6490614774565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9090614774565b8015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b5050505050905090565b6000610dfb610df461295d565b8484612965565b6001905092915050565b610e0d61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e93906147f2565b60405180910390fd5b670de0b6b3a76400006103e86005610eb2610f73565b610ebc9190614841565b610ec691906148ca565b610ed091906148ca565b811015610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f099061496d565b60405180910390fd5b670de0b6b3a764000081610f269190614841565b60098190555050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b610f8561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906147f2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b60006110ed848484612b30565b6111ae846110f961295d565b6111a9856040518060600160405280602881526020016157b560289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061115f61295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b612965565b600190509392505050565b60006012905090565b600061126b6111cf61295d565b8461126685600160006111e061295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff90919063ffffffff16565b612965565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61130a61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611390906147f2565b60405180910390fd5b60006113a430611457565b905060646113b0610f73565b6113ba91906148ca565b8110156113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f3906149ff565b60405180910390fd5b6114046137dc565b7f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051611433919061454a565b60405180910390a150565b60135481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a761295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d906147f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061160161295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611687906147f2565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506000600e60006101000a81548160ff0219169083151502179055506001905090565b6116d561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b906147f2565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6117f361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906147f2565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546118aa9190614a1f565b6118b49190614a1f565b600f819055506063600f541115611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790614ac1565b60405180910390fd5b505050565b61190d61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906147f2565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611a3261295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab8906147f2565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611aed90614774565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1990614774565b8015611b665780601f10611b3b57610100808354040283529160200191611b66565b820191906000526020600020905b815481529060010190602001808311611b4957829003601f168201915b5050505050905090565b611b7861295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe906147f2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d90614b53565b60405180910390fd5b611ca08282613a99565b5050565b60125481565b60195481565b60165481565b6000611d79611cc361295d565b84611d74856040518060600160405280602581526020016157dd6025913960016000611ced61295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b612965565b6001905092915050565b6000611d97611d9061295d565b8484612b30565b6001905092915050565b611da961295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f906147f2565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611f3361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906147f2565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161205f919061444c565b60405180910390a25050565b61207361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f9906147f2565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461212a9190614a1f565b6121349190614a1f565b60138190555060196013541115612180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217790614bbf565b60405180910390fd5b505050565b600e60009054906101000a900460ff1681565b60095481565b60006121a861295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e906147f2565b60405180910390fd5b620186a06001612245610f73565b61224f9190614841565b61225991906148ca565b82101561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290614c51565b60405180910390fd5b6103e860056122a8610f73565b6122b29190614841565b6122bc91906148ca565b8211156122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590614ce3565b60405180910390fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6123cf61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906147f2565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61252661295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac906147f2565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff16826040516125e090614d34565b60006040518083038185875af1925050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90614dbb565b60405180910390fd5b505050565b600061267561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb906147f2565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61273461295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba906147f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614e4d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600b5481565b600080828461290e9190614a1f565b905083811015612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a90614eb9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cc90614f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c90614fdd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b23919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b979061506f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0790615101565b60405180910390fd5b6000811415612c2a57612c2583836000613b3a565b613773565b600c60009054906101000a900460ff161561329b57612c476119d4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cb55750612c856119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cee5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d28575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d415750600560149054906101000a900460ff16155b1561329a57600c60019054906101000a900460ff16612e3b57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dfb5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e319061516d565b60405180910390fd5b5b600e60009054906101000a900460ff161561300357612e586119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612edf57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130025743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb490615225565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130a65750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561314d576009548111156130f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e7906152b7565b60405180910390fd5b600b546130fc83611457565b826131079190614a1f565b1115613148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313f90615323565b60405180910390fd5b613299565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f05750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561323f5760095481111561323a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613231906153b5565b60405180910390fd5b613298565b600b5461324b83611457565b826132569190614a1f565b1115613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e90615323565b60405180910390fd5b5b5b5b5b60006132a630611457565b90506000600a5482101590508080156132cb5750600c60029054906101000a900460ff165b80156132e45750600560149054906101000a900460ff16155b801561333a5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133905750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133e65750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342a576001600560146101000a81548160ff02191690831515021790555061340e6137dc565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134e05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134ea57600090505b6000811561376357601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561354d57506000601354115b1561361a5761357a606461356c60135488613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b90506013546015548261358d9190614841565b61359791906148ca565b601860008282546135a89190614a1f565b92505081905550601354601654826135c09190614841565b6135ca91906148ca565b601960008282546135db9190614a1f565b92505081905550601354601454826135f39190614841565b6135fd91906148ca565b6017600082825461360e9190614a1f565b9250508190555061373f565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367557506000600f54115b1561373e576136a26064613694600f5488613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b9050600f54601154826136b59190614841565b6136bf91906148ca565b601860008282546136d09190614a1f565b92505081905550600f54601254826136e89190614841565b6136f291906148ca565b601960008282546137039190614a1f565b92505081905550600f546010548261371b9190614841565b61372591906148ca565b601760008282546137369190614a1f565b925050819055505b5b600081111561375457613753873083613b3a565b5b808561376091906153d5565b94505b61376e878787613b3a565b505050505b505050565b60008383111582906137c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b79190614336565b60405180910390fd5b50600083856137cf91906153d5565b9050809150509392505050565b60006137e730611457565b905060006019546017546018546137fe9190614a1f565b6138089190614a1f565b905060008214806138195750600081145b15613825575050613a97565b6000600282601854856138389190614841565b61384291906148ca565b61384c91906148ca565b905060006138638285613e9490919063ffffffff16565b9050600047905061387382613ede565b60006138888247613e9490919063ffffffff16565b905060006138b3866138a560175485613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b905060006138de876138d060195486613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b905060008183856138ef91906153d5565b6138f991906153d5565b90506000601881905550600060178190555060006019819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161395b90614d34565b60006040518083038185875af1925050503d8060008114613998576040519150601f19603f3d011682016040523d82523d6000602084013e61399d565b606091505b50509050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516139e790614d34565b60006040518083038185875af1925050503d8060008114613a24576040519150601f19603f3d011682016040523d82523d6000602084013e613a29565b606091505b505080915050600088118015613a3f5750600082115b15613a8c57613a4e888361412a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618783601854604051613a8393929190615409565b60405180910390a15b505050505050505050505b565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba19061506f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c1190615101565b60405180910390fd5b613c25838383614235565b613c908160405180606001604052806026815260200161578f602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d23816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613dc2919061454a565b60405180910390a3505050565b600080831415613de25760009050613e44565b60008284613df09190614841565b9050828482613dff91906148ca565b14613e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e36906154b2565b60405180910390fd5b809150505b92915050565b6000613e8c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061423a565b905092915050565b6000613ed683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613778565b905092915050565b6000600267ffffffffffffffff811115613efb57613efa6154d2565b5b604051908082528060200260200182016040528015613f295781602001602082028036833780820191505090505b5090503081600081518110613f4157613f40615501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613fe157600080fd5b505afa158015613ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140199190615545565b8160018151811061402d5761402c615501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614092307f000000000000000000000000000000000000000000000000000000000000000084612965565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140f495949392919061566b565b600060405180830381600087803b15801561410e57600080fd5b505af1158015614122573d6000803e3d6000fd5b505050505050565b614155307f000000000000000000000000000000000000000000000000000000000000000084612965565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016141dc969594939291906156c5565b6060604051808303818588803b1580156141f557600080fd5b505af1158015614209573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061422e919061573b565b5050505050565b505050565b60008083118290614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142789190614336565b60405180910390fd5b506000838561429091906148ca565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142d75780820151818401526020810190506142bc565b838111156142e6576000848401525b50505050565b6000601f19601f8301169050919050565b60006143088261429d565b61431281856142a8565b93506143228185602086016142b9565b61432b816142ec565b840191505092915050565b6000602082019050818103600083015261435081846142fd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143888261435d565b9050919050565b6143988161437d565b81146143a357600080fd5b50565b6000813590506143b58161438f565b92915050565b6000819050919050565b6143ce816143bb565b81146143d957600080fd5b50565b6000813590506143eb816143c5565b92915050565b6000806040838503121561440857614407614358565b5b6000614416858286016143a6565b9250506020614427858286016143dc565b9150509250929050565b60008115159050919050565b61444681614431565b82525050565b6000602082019050614461600083018461443d565b92915050565b60006020828403121561447d5761447c614358565b5b600061448b848285016143dc565b91505092915050565b6000602082840312156144aa576144a9614358565b5b60006144b8848285016143a6565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461435d565b6144c1565b61435d565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143bb565b82525050565b600060208201905061455f600083018461453b565b92915050565b60008060006060848603121561457e5761457d614358565b5b600061458c868287016143a6565b935050602061459d868287016143a6565b92505060406145ae868287016143dc565b9150509250925092565b600060ff82169050919050565b6145ce816145b8565b82525050565b60006020820190506145e960008301846145c5565b92915050565b6145f88161437d565b82525050565b600060208201905061461360008301846145ef565b92915050565b61462281614431565b811461462d57600080fd5b50565b60008135905061463f81614619565b92915050565b6000806040838503121561465c5761465b614358565b5b600061466a858286016143a6565b925050602061467b85828601614630565b9150509250929050565b60008060006060848603121561469e5761469d614358565b5b60006146ac868287016143dc565b93505060206146bd868287016143dc565b92505060406146ce868287016143dc565b9150509250925092565b6000602082840312156146ee576146ed614358565b5b60006146fc84828501614630565b91505092915050565b6000806040838503121561471c5761471b614358565b5b600061472a858286016143a6565b925050602061473b858286016143a6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061478c57607f821691505b602082108114156147a05761479f614745565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147dc6020836142a8565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061484c826143bb565b9150614857836143bb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148905761488f614812565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006148d5826143bb565b91506148e0836143bb565b9250826148f0576148ef61489b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614957602f836142a8565b9150614962826148fb565b604082019050919050565b600060208201905081810360008301526149868161494a565b9050919050565b7f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060008201527f3125206f6620746f6b656e7320737475636b206f6e20636f6e74726163740000602082015250565b60006149e9603e836142a8565b91506149f48261498d565b604082019050919050565b60006020820190508181036000830152614a18816149dc565b9050919050565b6000614a2a826143bb565b9150614a35836143bb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a6a57614a69614812565b5b828201905092915050565b7f4a75737420666f722074686520736e6970657273206174206c61756e63680000600082015250565b6000614aab601e836142a8565b9150614ab682614a75565b602082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614b3d6039836142a8565b9150614b4882614ae1565b604082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614ba9601d836142a8565b9150614bb482614b73565b602082019050919050565b60006020820190508181036000830152614bd881614b9c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c3b6035836142a8565b9150614c4682614bdf565b604082019050919050565b60006020820190508181036000830152614c6a81614c2e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614ccd6034836142a8565b9150614cd882614c71565b604082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b600081905092915050565b50565b6000614d1e600083614d03565b9150614d2982614d0e565b600082019050919050565b6000614d3f82614d11565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614da5603a836142a8565b9150614db082614d49565b604082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e376026836142a8565b9150614e4282614ddb565b604082019050919050565b60006020820190508181036000830152614e6681614e2a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ea3601b836142a8565b9150614eae82614e6d565b602082019050919050565b60006020820190508181036000830152614ed281614e96565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f356024836142a8565b9150614f4082614ed9565b604082019050919050565b60006020820190508181036000830152614f6481614f28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc76022836142a8565b9150614fd282614f6b565b604082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150596025836142a8565b915061506482614ffd565b604082019050919050565b600060208201905081810360008301526150888161504c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150eb6023836142a8565b91506150f68261508f565b604082019050919050565b6000602082019050818103600083015261511a816150de565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006151576016836142a8565b915061516282615121565b602082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061520f6049836142a8565b915061521a8261518d565b606082019050919050565b6000602082019050818103600083015261523e81615202565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006152a16035836142a8565b91506152ac82615245565b604082019050919050565b600060208201905081810360008301526152d081615294565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061530d6013836142a8565b9150615318826152d7565b602082019050919050565b6000602082019050818103600083015261533c81615300565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061539f6036836142a8565b91506153aa82615343565b604082019050919050565b600060208201905081810360008301526153ce81615392565b9050919050565b60006153e0826143bb565b91506153eb836143bb565b9250828210156153fe576153fd614812565b5b828203905092915050565b600060608201905061541e600083018661453b565b61542b602083018561453b565b615438604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061549c6021836142a8565b91506154a782615440565b604082019050919050565b600060208201905081810360008301526154cb8161548f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061553f8161438f565b92915050565b60006020828403121561555b5761555a614358565b5b600061556984828501615530565b91505092915050565b6000819050919050565b600061559761559261558d84615572565b6144c1565b6143bb565b9050919050565b6155a78161557c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155e28161437d565b82525050565b60006155f483836155d9565b60208301905092915050565b6000602082019050919050565b6000615618826155ad565b61562281856155b8565b935061562d836155c9565b8060005b8381101561565e57815161564588826155e8565b975061565083615600565b925050600181019050615631565b5085935050505092915050565b600060a082019050615680600083018861453b565b61568d602083018761559e565b818103604083015261569f818661560d565b90506156ae60608301856145ef565b6156bb608083018461453b565b9695505050505050565b600060c0820190506156da60008301896145ef565b6156e7602083018861453b565b6156f4604083018761559e565b615701606083018661559e565b61570e60808301856145ef565b61571b60a083018461453b565b979650505050505050565b600081519050615735816143c5565b92915050565b60008060006060848603121561575457615753614358565b5b600061576286828701615726565b935050602061577386828701615726565b925050604061578486828701615726565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b260e66112ce1981d65a12d1cb3d35cebb49e87d99ae90081b68ec2e53d7b5fc64736f6c63430008090033
Deployed Bytecode
0x60806040526004361061036f5760003560e01c806392136913116101c6578063c876d0b9116100f7578063e37ba8f911610095578063f11a24d31161006f578063f11a24d314610cab578063f2fde38b14610cd6578063f637434214610cff578063f8b45b0514610d2a57610376565b8063e37ba8f914610c2e578063e393c29414610c57578063e884f26014610c8057610376565b8063d4698016116100d1578063d469801614610b70578063d85ba06314610b9b578063dd62ed3e14610bc6578063e2f4560514610c0357610376565b8063c876d0b914610add578063c8c8ebe414610b08578063d257b34f14610b3357610376565b8063a457c2d711610164578063b62496f51161013e578063b62496f514610a23578063bbc0c74214610a60578063c024666814610a8b578063c17b5b8c14610ab457610376565b8063a457c2d714610980578063a9059cbb146109bd578063aacebbe3146109fa57610376565b80639a7a23d6116101a05780639a7a23d6146108d65780639c3b4fdc146108ff5780639fccce321461092a578063a0d82dc51461095557610376565b80639213691314610857578063924de9b71461088257806395d89b41146108ab57610376565b80634fbee193116102a05780637571336a1161023e5780638095d564116102185780638095d564146107c15780638a8c523c146107ea5780638da5cb5b146108015780638ea5220f1461082c57610376565b80637571336a1461074257806375f0a8741461076b5780637bce5a041461079657610376565b80636ddd17131161027a5780636ddd17131461069857806370a08231146106c3578063715018a614610700578063751039fc1461071757610376565b80634fbee1931461061957806351f205e4146106565780636a486a8e1461066d57610376565b80631a8145bb1161030d578063313ce567116102e7578063313ce5671461055b578063395093511461058657806349bd5a5e146105c35780634a62bb65146105ee57610376565b80631a8145bb146104c85780631f3fed8f146104f357806323b872dd1461051e57610376565b806310d5de531161034957806310d5de531461040c5780631694505e1461044957806318160ddd146104745780631816467f1461049f57610376565b806306fdde031461037b578063095ea7b3146103a6578063106b5da1146103e357610376565b3661037657005b600080fd5b34801561038757600080fd5b50610390610d55565b60405161039d9190614336565b60405180910390f35b3480156103b257600080fd5b506103cd60048036038101906103c891906143f1565b610de7565b6040516103da919061444c565b60405180910390f35b3480156103ef57600080fd5b5061040a60048036038101906104059190614467565b610e05565b005b34801561041857600080fd5b50610433600480360381019061042e9190614494565b610f2f565b604051610440919061444c565b60405180910390f35b34801561045557600080fd5b5061045e610f4f565b60405161046b9190614520565b60405180910390f35b34801561048057600080fd5b50610489610f73565b604051610496919061454a565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c19190614494565b610f7d565b005b3480156104d457600080fd5b506104dd6110d4565b6040516104ea919061454a565b60405180910390f35b3480156104ff57600080fd5b506105086110da565b604051610515919061454a565b60405180910390f35b34801561052a57600080fd5b5061054560048036038101906105409190614565565b6110e0565b604051610552919061444c565b60405180910390f35b34801561056757600080fd5b506105706111b9565b60405161057d91906145d4565b60405180910390f35b34801561059257600080fd5b506105ad60048036038101906105a891906143f1565b6111c2565b6040516105ba919061444c565b60405180910390f35b3480156105cf57600080fd5b506105d8611275565b6040516105e591906145fe565b60405180910390f35b3480156105fa57600080fd5b50610603611299565b604051610610919061444c565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190614494565b6112ac565b60405161064d919061444c565b60405180910390f35b34801561066257600080fd5b5061066b611302565b005b34801561067957600080fd5b5061068261143e565b60405161068f919061454a565b60405180910390f35b3480156106a457600080fd5b506106ad611444565b6040516106ba919061444c565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190614494565b611457565b6040516106f7919061454a565b60405180910390f35b34801561070c57600080fd5b5061071561149f565b005b34801561072357600080fd5b5061072c6115f7565b604051610739919061444c565b60405180910390f35b34801561074e57600080fd5b5061076960048036038101906107649190614645565b6116cd565b005b34801561077757600080fd5b506107806117bf565b60405161078d91906145fe565b60405180910390f35b3480156107a257600080fd5b506107ab6117e5565b6040516107b8919061454a565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e39190614685565b6117eb565b005b3480156107f657600080fd5b506107ff611905565b005b34801561080d57600080fd5b506108166119d4565b60405161082391906145fe565b60405180910390f35b34801561083857600080fd5b506108416119fe565b60405161084e91906145fe565b60405180910390f35b34801561086357600080fd5b5061086c611a24565b604051610879919061454a565b60405180910390f35b34801561088e57600080fd5b506108a960048036038101906108a491906146d8565b611a2a565b005b3480156108b757600080fd5b506108c0611ade565b6040516108cd9190614336565b60405180910390f35b3480156108e257600080fd5b506108fd60048036038101906108f89190614645565b611b70565b005b34801561090b57600080fd5b50610914611ca4565b604051610921919061454a565b60405180910390f35b34801561093657600080fd5b5061093f611caa565b60405161094c919061454a565b60405180910390f35b34801561096157600080fd5b5061096a611cb0565b604051610977919061454a565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906143f1565b611cb6565b6040516109b4919061444c565b60405180910390f35b3480156109c957600080fd5b506109e460048036038101906109df91906143f1565b611d83565b6040516109f1919061444c565b60405180910390f35b348015610a0657600080fd5b50610a216004803603810190610a1c9190614494565b611da1565b005b348015610a2f57600080fd5b50610a4a6004803603810190610a459190614494565b611ef8565b604051610a57919061444c565b60405180910390f35b348015610a6c57600080fd5b50610a75611f18565b604051610a82919061444c565b60405180910390f35b348015610a9757600080fd5b50610ab26004803603810190610aad9190614645565b611f2b565b005b348015610ac057600080fd5b50610adb6004803603810190610ad69190614685565b61206b565b005b348015610ae957600080fd5b50610af2612185565b604051610aff919061444c565b60405180910390f35b348015610b1457600080fd5b50610b1d612198565b604051610b2a919061454a565b60405180910390f35b348015610b3f57600080fd5b50610b5a6004803603810190610b559190614467565b61219e565b604051610b67919061444c565b60405180910390f35b348015610b7c57600080fd5b50610b8561230e565b604051610b9291906145fe565b60405180910390f35b348015610ba757600080fd5b50610bb0612334565b604051610bbd919061454a565b60405180910390f35b348015610bd257600080fd5b50610bed6004803603810190610be89190614705565b61233a565b604051610bfa919061454a565b60405180910390f35b348015610c0f57600080fd5b50610c186123c1565b604051610c25919061454a565b60405180910390f35b348015610c3a57600080fd5b50610c556004803603810190610c509190614494565b6123c7565b005b348015610c6357600080fd5b50610c7e6004803603810190610c799190614494565b61251e565b005b348015610c8c57600080fd5b50610c9561266b565b604051610ca2919061444c565b60405180910390f35b348015610cb757600080fd5b50610cc0612726565b604051610ccd919061454a565b60405180910390f35b348015610ce257600080fd5b50610cfd6004803603810190610cf89190614494565b61272c565b005b348015610d0b57600080fd5b50610d146128f3565b604051610d21919061454a565b60405180910390f35b348015610d3657600080fd5b50610d3f6128f9565b604051610d4c919061454a565b60405180910390f35b606060038054610d6490614774565b80601f0160208091040260200160405190810160405280929190818152602001828054610d9090614774565b8015610ddd5780601f10610db257610100808354040283529160200191610ddd565b820191906000526020600020905b815481529060010190602001808311610dc057829003601f168201915b5050505050905090565b6000610dfb610df461295d565b8484612965565b6001905092915050565b610e0d61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e93906147f2565b60405180910390fd5b670de0b6b3a76400006103e86005610eb2610f73565b610ebc9190614841565b610ec691906148ca565b610ed091906148ca565b811015610f12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f099061496d565b60405180910390fd5b670de0b6b3a764000081610f269190614841565b60098190555050565b601b6020528060005260406000206000915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b610f8561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100b906147f2565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a380600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b60175481565b60006110ed848484612b30565b6111ae846110f961295d565b6111a9856040518060600160405280602881526020016157b560289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061115f61295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b612965565b600190509392505050565b60006012905090565b600061126b6111cf61295d565b8461126685600160006111e061295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff90919063ffffffff16565b612965565b6001905092915050565b7f0000000000000000000000001856e4ee365c45c31da3c14f7681b72a9c75abc581565b600c60009054906101000a900460ff1681565b6000601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61130a61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611399576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611390906147f2565b60405180910390fd5b60006113a430611457565b905060646113b0610f73565b6113ba91906148ca565b8110156113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f3906149ff565b60405180910390fd5b6114046137dc565b7f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb3242604051611433919061454a565b60405180910390a150565b60135481565b600c60029054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a761295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611536576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152d906147f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061160161295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611687906147f2565b60405180910390fd5b6000600c60006101000a81548160ff0219169083151502179055506000600e60006101000a81548160ff0219169083151502179055506001905090565b6116d561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b906147f2565b60405180910390fd5b80601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b6117f361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611879906147f2565b60405180910390fd5b8260108190555081601181905550806012819055506012546011546010546118aa9190614a1f565b6118b49190614a1f565b600f819055506063600f541115611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790614ac1565b60405180910390fd5b505050565b61190d61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461199c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611993906147f2565b60405180910390fd5b6001600c60016101000a81548160ff0219169083151502179055506001600c60026101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b611a3261295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ac1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab8906147f2565b60405180910390fd5b80600c60026101000a81548160ff02191690831515021790555050565b606060048054611aed90614774565b80601f0160208091040260200160405190810160405280929190818152602001828054611b1990614774565b8015611b665780601f10611b3b57610100808354040283529160200191611b66565b820191906000526020600020905b815481529060010190602001808311611b4957829003601f168201915b5050505050905090565b611b7861295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfe906147f2565b60405180910390fd5b7f0000000000000000000000001856e4ee365c45c31da3c14f7681b72a9c75abc573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611c96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8d90614b53565b60405180910390fd5b611ca08282613a99565b5050565b60125481565b60195481565b60165481565b6000611d79611cc361295d565b84611d74856040518060600160405280602581526020016157dd6025913960016000611ced61295d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b612965565b6001905092915050565b6000611d97611d9061295d565b8484612b30565b6001905092915050565b611da961295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e2f906147f2565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601c6020528060005260406000206000915054906101000a900460ff1681565b600c60019054906101000a900460ff1681565b611f3361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb9906147f2565b60405180910390fd5b80601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161205f919061444c565b60405180910390a25050565b61207361295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612102576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f9906147f2565b60405180910390fd5b82601481905550816015819055508060168190555060165460155460145461212a9190614a1f565b6121349190614a1f565b60138190555060196013541115612180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217790614bbf565b60405180910390fd5b505050565b600e60009054906101000a900460ff1681565b60095481565b60006121a861295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222e906147f2565b60405180910390fd5b620186a06001612245610f73565b61224f9190614841565b61225991906148ca565b82101561229b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229290614c51565b60405180910390fd5b6103e860056122a8610f73565b6122b29190614841565b6122bc91906148ca565b8211156122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f590614ce3565b60405180910390fd5b81600a8190555060019050919050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a5481565b6123cf61295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612455906147f2565b60405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f3e0ea4f8339b6050ff814971a9814aa39176c149fcf185975c219f33db2342db60405160405180910390a380600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61252661295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ac906147f2565b60405180910390fd5b600047905060008273ffffffffffffffffffffffffffffffffffffffff16826040516125e090614d34565b60006040518083038185875af1925050503d806000811461261d576040519150601f19603f3d011682016040523d82523d6000602084013e612622565b606091505b5050905080612666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265d90614dbb565b60405180910390fd5b505050565b600061267561295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612704576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126fb906147f2565b60405180910390fd5b6000600e60006101000a81548160ff0219169083151502179055506001905090565b60115481565b61273461295d565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127ba906147f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282a90614e4d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60155481565b600b5481565b600080828461290e9190614a1f565b905083811015612953576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294a90614eb9565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cc90614f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3c90614fdd565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b23919061454a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b979061506f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0790615101565b60405180910390fd5b6000811415612c2a57612c2583836000613b3a565b613773565b600c60009054906101000a900460ff161561329b57612c476119d4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612cb55750612c856119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612cee5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d28575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612d415750600560149054906101000a900460ff16155b1561329a57600c60019054906101000a900460ff16612e3b57601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dfb5750601a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e319061516d565b60405180910390fd5b5b600e60009054906101000a900460ff161561300357612e586119d4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612edf57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612f3757507f0000000000000000000000001856e4ee365c45c31da3c14f7681b72a9c75abc573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156130025743600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb490615225565b60405180910390fd5b43600d60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130a65750601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561314d576009548111156130f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e7906152b7565b60405180910390fd5b600b546130fc83611457565b826131079190614a1f565b1115613148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161313f90615323565b60405180910390fd5b613299565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156131f05750601b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561323f5760095481111561323a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613231906153b5565b60405180910390fd5b613298565b600b5461324b83611457565b826132569190614a1f565b1115613297576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161328e90615323565b60405180910390fd5b5b5b5b5b60006132a630611457565b90506000600a5482101590508080156132cb5750600c60029054906101000a900460ff165b80156132e45750600560149054906101000a900460ff16155b801561333a5750601c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133905750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133e65750601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561342a576001600560146101000a81548160ff02191690831515021790555061340e6137dc565b6000600560146101000a81548160ff0219169083151502179055505b6000600560149054906101000a900460ff16159050601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806134e05750601a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156134ea57600090505b6000811561376357601c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561354d57506000601354115b1561361a5761357a606461356c60135488613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b90506013546015548261358d9190614841565b61359791906148ca565b601860008282546135a89190614a1f565b92505081905550601354601654826135c09190614841565b6135ca91906148ca565b601960008282546135db9190614a1f565b92505081905550601354601454826135f39190614841565b6135fd91906148ca565b6017600082825461360e9190614a1f565b9250508190555061373f565b601c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561367557506000600f54115b1561373e576136a26064613694600f5488613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b9050600f54601154826136b59190614841565b6136bf91906148ca565b601860008282546136d09190614a1f565b92505081905550600f54601254826136e89190614841565b6136f291906148ca565b601960008282546137039190614a1f565b92505081905550600f546010548261371b9190614841565b61372591906148ca565b601760008282546137369190614a1f565b925050819055505b5b600081111561375457613753873083613b3a565b5b808561376091906153d5565b94505b61376e878787613b3a565b505050505b505050565b60008383111582906137c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137b79190614336565b60405180910390fd5b50600083856137cf91906153d5565b9050809150509392505050565b60006137e730611457565b905060006019546017546018546137fe9190614a1f565b6138089190614a1f565b905060008214806138195750600081145b15613825575050613a97565b6000600282601854856138389190614841565b61384291906148ca565b61384c91906148ca565b905060006138638285613e9490919063ffffffff16565b9050600047905061387382613ede565b60006138888247613e9490919063ffffffff16565b905060006138b3866138a560175485613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b905060006138de876138d060195486613dcf90919063ffffffff16565b613e4a90919063ffffffff16565b905060008183856138ef91906153d5565b6138f991906153d5565b90506000601881905550600060178190555060006019819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161395b90614d34565b60006040518083038185875af1925050503d8060008114613998576040519150601f19603f3d011682016040523d82523d6000602084013e61399d565b606091505b50509050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836040516139e790614d34565b60006040518083038185875af1925050503d8060008114613a24576040519150601f19603f3d011682016040523d82523d6000602084013e613a29565b606091505b505080915050600088118015613a3f5750600082115b15613a8c57613a4e888361412a565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618783601854604051613a8393929190615409565b60405180910390a15b505050505050505050505b565b80601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba19061506f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c1190615101565b60405180910390fd5b613c25838383614235565b613c908160405180606001604052806026815260200161578f602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546137789092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d23816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128ff90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613dc2919061454a565b60405180910390a3505050565b600080831415613de25760009050613e44565b60008284613df09190614841565b9050828482613dff91906148ca565b14613e3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e36906154b2565b60405180910390fd5b809150505b92915050565b6000613e8c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061423a565b905092915050565b6000613ed683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613778565b905092915050565b6000600267ffffffffffffffff811115613efb57613efa6154d2565b5b604051908082528060200260200182016040528015613f295781602001602082028036833780820191505090505b5090503081600081518110613f4157613f40615501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613fe157600080fd5b505afa158015613ff5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140199190615545565b8160018151811061402d5761402c615501565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050614092307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612965565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016140f495949392919061566b565b600060405180830381600087803b15801561410e57600080fd5b505af1158015614122573d6000803e3d6000fd5b505050505050565b614155307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612965565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016141dc969594939291906156c5565b6060604051808303818588803b1580156141f557600080fd5b505af1158015614209573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061422e919061573b565b5050505050565b505050565b60008083118290614281576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142789190614336565b60405180910390fd5b506000838561429091906148ca565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156142d75780820151818401526020810190506142bc565b838111156142e6576000848401525b50505050565b6000601f19601f8301169050919050565b60006143088261429d565b61431281856142a8565b93506143228185602086016142b9565b61432b816142ec565b840191505092915050565b6000602082019050818103600083015261435081846142fd565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143888261435d565b9050919050565b6143988161437d565b81146143a357600080fd5b50565b6000813590506143b58161438f565b92915050565b6000819050919050565b6143ce816143bb565b81146143d957600080fd5b50565b6000813590506143eb816143c5565b92915050565b6000806040838503121561440857614407614358565b5b6000614416858286016143a6565b9250506020614427858286016143dc565b9150509250929050565b60008115159050919050565b61444681614431565b82525050565b6000602082019050614461600083018461443d565b92915050565b60006020828403121561447d5761447c614358565b5b600061448b848285016143dc565b91505092915050565b6000602082840312156144aa576144a9614358565b5b60006144b8848285016143a6565b91505092915050565b6000819050919050565b60006144e66144e16144dc8461435d565b6144c1565b61435d565b9050919050565b60006144f8826144cb565b9050919050565b600061450a826144ed565b9050919050565b61451a816144ff565b82525050565b60006020820190506145356000830184614511565b92915050565b614544816143bb565b82525050565b600060208201905061455f600083018461453b565b92915050565b60008060006060848603121561457e5761457d614358565b5b600061458c868287016143a6565b935050602061459d868287016143a6565b92505060406145ae868287016143dc565b9150509250925092565b600060ff82169050919050565b6145ce816145b8565b82525050565b60006020820190506145e960008301846145c5565b92915050565b6145f88161437d565b82525050565b600060208201905061461360008301846145ef565b92915050565b61462281614431565b811461462d57600080fd5b50565b60008135905061463f81614619565b92915050565b6000806040838503121561465c5761465b614358565b5b600061466a858286016143a6565b925050602061467b85828601614630565b9150509250929050565b60008060006060848603121561469e5761469d614358565b5b60006146ac868287016143dc565b93505060206146bd868287016143dc565b92505060406146ce868287016143dc565b9150509250925092565b6000602082840312156146ee576146ed614358565b5b60006146fc84828501614630565b91505092915050565b6000806040838503121561471c5761471b614358565b5b600061472a858286016143a6565b925050602061473b858286016143a6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061478c57607f821691505b602082108114156147a05761479f614745565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006147dc6020836142a8565b91506147e7826147a6565b602082019050919050565b6000602082019050818103600083015261480b816147cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061484c826143bb565b9150614857836143bb565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148905761488f614812565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006148d5826143bb565b91506148e0836143bb565b9250826148f0576148ef61489b565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e742060008201527f6c6f776572207468616e20302e35250000000000000000000000000000000000602082015250565b6000614957602f836142a8565b9150614962826148fb565b604082019050919050565b600060208201905081810360008301526149868161494a565b9050919050565b7f43616e206f6e6c792073776170206261636b206966206d6f7265207468616e2060008201527f3125206f6620746f6b656e7320737475636b206f6e20636f6e74726163740000602082015250565b60006149e9603e836142a8565b91506149f48261498d565b604082019050919050565b60006020820190508181036000830152614a18816149dc565b9050919050565b6000614a2a826143bb565b9150614a35836143bb565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a6a57614a69614812565b5b828201905092915050565b7f4a75737420666f722074686520736e6970657273206174206c61756e63680000600082015250565b6000614aab601e836142a8565b9150614ab682614a75565b602082019050919050565b60006020820190508181036000830152614ada81614a9e565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b6000614b3d6039836142a8565b9150614b4882614ae1565b604082019050919050565b60006020820190508181036000830152614b6c81614b30565b9050919050565b7f4d757374206b656570206665657320617420323525206f72206c657373000000600082015250565b6000614ba9601d836142a8565b9150614bb482614b73565b602082019050919050565b60006020820190508181036000830152614bd881614b9c565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b6000614c3b6035836142a8565b9150614c4682614bdf565b604082019050919050565b60006020820190508181036000830152614c6a81614c2e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b6000614ccd6034836142a8565b9150614cd882614c71565b604082019050919050565b60006020820190508181036000830152614cfc81614cc0565b9050919050565b600081905092915050565b50565b6000614d1e600083614d03565b9150614d2982614d0e565b600082019050919050565b6000614d3f82614d11565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614da5603a836142a8565b9150614db082614d49565b604082019050919050565b60006020820190508181036000830152614dd481614d98565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614e376026836142a8565b9150614e4282614ddb565b604082019050919050565b60006020820190508181036000830152614e6681614e2a565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614ea3601b836142a8565b9150614eae82614e6d565b602082019050919050565b60006020820190508181036000830152614ed281614e96565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f356024836142a8565b9150614f4082614ed9565b604082019050919050565b60006020820190508181036000830152614f6481614f28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fc76022836142a8565b9150614fd282614f6b565b604082019050919050565b60006020820190508181036000830152614ff681614fba565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150596025836142a8565b915061506482614ffd565b604082019050919050565b600060208201905081810360008301526150888161504c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150eb6023836142a8565b91506150f68261508f565b604082019050919050565b6000602082019050818103600083015261511a816150de565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b60006151576016836142a8565b915061516282615121565b602082019050919050565b600060208201905081810360008301526151868161514a565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061520f6049836142a8565b915061521a8261518d565b606082019050919050565b6000602082019050818103600083015261523e81615202565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006152a16035836142a8565b91506152ac82615245565b604082019050919050565b600060208201905081810360008301526152d081615294565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b600061530d6013836142a8565b9150615318826152d7565b602082019050919050565b6000602082019050818103600083015261533c81615300565b9050919050565b7f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560008201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b600061539f6036836142a8565b91506153aa82615343565b604082019050919050565b600060208201905081810360008301526153ce81615392565b9050919050565b60006153e0826143bb565b91506153eb836143bb565b9250828210156153fe576153fd614812565b5b828203905092915050565b600060608201905061541e600083018661453b565b61542b602083018561453b565b615438604083018461453b565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061549c6021836142a8565b91506154a782615440565b604082019050919050565b600060208201905081810360008301526154cb8161548f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061553f8161438f565b92915050565b60006020828403121561555b5761555a614358565b5b600061556984828501615530565b91505092915050565b6000819050919050565b600061559761559261558d84615572565b6144c1565b6143bb565b9050919050565b6155a78161557c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6155e28161437d565b82525050565b60006155f483836155d9565b60208301905092915050565b6000602082019050919050565b6000615618826155ad565b61562281856155b8565b935061562d836155c9565b8060005b8381101561565e57815161564588826155e8565b975061565083615600565b925050600181019050615631565b5085935050505092915050565b600060a082019050615680600083018861453b565b61568d602083018761559e565b818103604083015261569f818661560d565b90506156ae60608301856145ef565b6156bb608083018461453b565b9695505050505050565b600060c0820190506156da60008301896145ef565b6156e7602083018861453b565b6156f4604083018761559e565b615701606083018661559e565b61570e60808301856145ef565b61571b60a083018461453b565b979650505050505050565b600081519050615735816143c5565b92915050565b60008060006060848603121561575457615753614358565b5b600061576286828701615726565b935050602061577386828701615726565b925050604061578486828701615726565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b260e66112ce1981d65a12d1cb3d35cebb49e87d99ae90081b68ec2e53d7b5fc64736f6c63430008090033
Deployed Bytecode Sourcemap
27703:15912:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7821:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9988:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33427:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29047:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27780:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8941:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35653:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28826:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28786;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10639:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8783:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11403:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27838:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28141:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36013:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42957:310;;;;;;;;;;;;;:::i;:::-;;28637:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28221:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9112:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22286:148;;;;;;;;;;;;;:::i;:::-;;32601:159;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33670:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27915:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28526;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34027:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32433:112;;;;;;;;;;;;;:::i;:::-;;21644:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27952:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28672:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33914:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8040:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34985:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28600:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28866:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28748:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12124:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9452:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35433:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29269:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28181:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34795:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34409:378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28444:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28026:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33034:381;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27983:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28492:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9690:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28068:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35818:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43275:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32825:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28563:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22589:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28710:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28108:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7821:100;7875:13;7908:5;7901:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7821:100;:::o;9988:169::-;10071:4;10088:39;10097:12;:10;:12::i;:::-;10111:7;10120:6;10088:8;:39::i;:::-;10145:4;10138:11;;9988:169;;;;:::o;33427:231::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33543:4:::1;33537;33533:1;33517:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;33516:31;;;;:::i;:::-;33506:6;:41;;33498:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;33643:6;33633;:17;;;;:::i;:::-;33610:20;:40;;;;33427:231:::0;:::o;29047:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;27780:51::-;;;:::o;8941:108::-;9002:7;9029:12;;9022:19;;8941:108;:::o;35653:157::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35760:9:::1;;;;;;;;;;;35732:38;;35749:9;35732:38;;;;;;;;;;;;35793:9;35781;;:21;;;;;;;;;;;;;;;;;;35653:157:::0;:::o;28826:33::-;;;;:::o;28786:::-;;;;:::o;10639:355::-;10779:4;10796:36;10806:6;10814:9;10825:6;10796:9;:36::i;:::-;10843:121;10852:6;10860:12;:10;:12::i;:::-;10874:89;10912:6;10874:89;;;;;;;;;;;;;;;;;:11;:19;10886:6;10874:19;;;;;;;;;;;;;;;:33;10894:12;:10;:12::i;:::-;10874:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10843:8;:121::i;:::-;10982:4;10975:11;;10639:355;;;;;:::o;8783:93::-;8841:5;8866:2;8859:9;;8783:93;:::o;11403:218::-;11491:4;11508:83;11517:12;:10;:12::i;:::-;11531:7;11540:50;11579:10;11540:11;:25;11552:12;:10;:12::i;:::-;11540:25;;;;;;;;;;;;;;;:34;11566:7;11540:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11508:8;:83::i;:::-;11609:4;11602:11;;11403:218;;;;:::o;27838:38::-;;;:::o;28141:33::-;;;;;;;;;;;;;:::o;36013:125::-;36078:4;36102:19;:28;36122:7;36102:28;;;;;;;;;;;;;;;;;;;;;;;;;36095:35;;36013:125;;;:::o;42957:310::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43012:23:::1;43038:24;43056:4;43038:9;:24::i;:::-;43012:50;;43116:3;43100:13;:11;:13::i;:::-;:19;;;;:::i;:::-;43081:15;:38;;43073:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;43197:10;:8;:10::i;:::-;43223:36;43243:15;43223:36;;;;;;:::i;:::-;;;;;;;;43001:266;42957:310::o:0;28637:28::-;;;;:::o;28221:31::-;;;;;;;;;;;;;:::o;9112:127::-;9186:7;9213:9;:18;9223:7;9213:18;;;;;;;;;;;;;;;;9206:25;;9112:127;;;:::o;22286:148::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22393:1:::1;22356:40;;22377:6;;;;;;;;;;;22356:40;;;;;;;;;;;;22424:1;22407:6;;:19;;;;;;;;;;;;;;;;;;22286:148::o:0;32601:159::-;32653:4;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32686:5:::1;32669:14;;:22;;;;;;;;;;;;;;;;;;32725:5;32702:20;;:28;;;;;;;;;;;;;;;;;;32748:4;32741:11;;32601:159:::0;:::o;33670:144::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33802:4:::1;33760:31;:39;33792:6;33760:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;33670:144:::0;;:::o;27915:30::-;;;;;;;;;;;;;:::o;28526:::-;;;;:::o;34027:370::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34161:13:::1;34143:15;:31;;;;34203:13;34185:15;:31;;;;34239:7;34227:9;:19;;;;34308:9;;34290:15;;34272;;:33;;;;:::i;:::-;:45;;;;:::i;:::-;34257:12;:60;;;;34352:2;34336:12;;:18;;34328:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34027:370:::0;;;:::o;32433:112::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32504:4:::1;32488:13;;:20;;;;;;;;;;;;;;;;;;32533:4;32519:11;;:18;;;;;;;;;;;;;;;;;;32433:112::o:0;21644:79::-;21682:7;21709:6;;;;;;;;;;;21702:13;;21644:79;:::o;27952:24::-;;;;;;;;;;;;;:::o;28672:31::-;;;;:::o;33914:101::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34000:7:::1;33986:11;;:21;;;;;;;;;;;;;;;;;;33914:101:::0;:::o;8040:104::-;8096:13;8129:7;8122:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8040:104;:::o;34985:244::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35092:13:::1;35084:21;;:4;:21;;;;35076:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;35180:41;35209:4;35215:5;35180:28;:41::i;:::-;34985:244:::0;;:::o;28600:24::-;;;;:::o;28866:27::-;;;;:::o;28748:25::-;;;;:::o;12124:269::-;12217:4;12234:129;12243:12;:10;:12::i;:::-;12257:7;12266:96;12305:15;12266:96;;;;;;;;;;;;;;;;;:11;:25;12278:12;:10;:12::i;:::-;12266:25;;;;;;;;;;;;;;;:34;12292:7;12266:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12234:8;:129::i;:::-;12381:4;12374:11;;12124:269;;;;:::o;9452:175::-;9538:4;9555:42;9565:12;:10;:12::i;:::-;9579:9;9590:6;9555:9;:42::i;:::-;9615:4;9608:11;;9452:175;;;;:::o;35433:208::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35570:15:::1;;;;;;;;;;;35527:59;;35550:18;35527:59;;;;;;;;;;;;35615:18;35597:15;;:36;;;;;;;;;;;;;;;;;;35433:208:::0;:::o;29269:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;28181:33::-;;;;;;;;;;;;;:::o;34795:182::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34911:8:::1;34880:19;:28;34900:7;34880:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;34951:7;34935:34;;;34960:8;34935:34;;;;;;:::i;:::-;;;;;;;;34795:182:::0;;:::o;34409:378::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34545:13:::1;34526:16;:32;;;;34588:13;34569:16;:32;;;;34625:7;34612:10;:20;;;;34697:10;;34678:16;;34659;;:35;;;;:::i;:::-;:48;;;;:::i;:::-;34643:13;:64;;;;34743:2;34726:13;;:19;;34718:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;34409:378:::0;;;:::o;28444:39::-;;;;;;;;;;;;;:::o;28026:35::-;;;;:::o;33034:381::-;33115:4;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33171:6:::1;33167:1;33151:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;33138:9;:39;;33130:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;33286:4;33282:1;33266:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;33253:9;:37;;33245:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;33378:9;33357:18;:30;;;;33404:4;33397:11;;33034:381:::0;;;:::o;27983:30::-;;;;;;;;;;;;;:::o;28492:27::-;;;;:::o;9690:151::-;9779:7;9806:11;:18;9818:5;9806:18;;;;;;;;;;;;;;;:27;9825:7;9806:27;;;;;;;;;;;;;;;;9799:34;;9690:151;;;;:::o;28068:33::-;;;;:::o;35818:181::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;35937:15:::1;;;;;;;;;;;35903:50;;35926:9;35903:50;;;;;;;;;;;;35982:9;35964:15;;:27;;;;;;;;;;;;;;;;;;35818:181:::0;:::o;43275:337::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43350:26:::1;43379:21;43350:50;;43412:12;43430:10;:15;;43454:18;43430:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43411:67;;;43511:7;43489:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;43339:273;;43275:337:::0;:::o;32825:134::-;32885:4;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32924:5:::1;32901:20;;:28;;;;;;;;;;;;;;;;;;32947:4;32940:11;;32825:134:::0;:::o;28563:30::-;;;;:::o;22589:244::-;21866:12;:10;:12::i;:::-;21856:22;;:6;;;;;;;;;;;:22;;;21848:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22698:1:::1;22678:22;;:8;:22;;;;22670:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22788:8;22759:38;;22780:6;;;;;;;;;;;22759:38;;;;;;;;;;;;22817:8;22808:6;;:17;;;;;;;;;;;;;;;;;;22589:244:::0;:::o;28710:31::-;;;;:::o;28108:24::-;;;;:::o;16688:181::-;16746:7;16766:9;16782:1;16778;:5;;;;:::i;:::-;16766:17;;16807:1;16802;:6;;16794:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16860:1;16853:8;;;16688:181;;;;:::o;457:98::-;510:7;537:10;530:17;;457:98;:::o;15310:380::-;15463:1;15446:19;;:5;:19;;;;15438:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15544:1;15525:21;;:7;:21;;;;15517:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15628:6;15598:11;:18;15610:5;15598:18;;;;;;;;;;;;;;;:27;15617:7;15598:27;;;;;;;;;;;;;;;:36;;;;15666:7;15650:32;;15659:5;15650:32;;;15675:6;15650:32;;;;;;:::i;:::-;;;;;;;;15310:380;;;:::o;36150:4085::-;36298:1;36282:18;;:4;:18;;;;36274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36375:1;36361:16;;:2;:16;;;;36353:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;36452:1;36442:6;:11;36439:92;;;36470:28;36486:4;36492:2;36496:1;36470:15;:28::i;:::-;36513:7;;36439:92;36554:14;;;;;;;;;;;36551:1801;;;36614:7;:5;:7::i;:::-;36606:15;;:4;:15;;;;:49;;;;;36648:7;:5;:7::i;:::-;36642:13;;:2;:13;;;;36606:49;:86;;;;;36690:1;36676:16;;:2;:16;;;;36606:86;:128;;;;;36727:6;36713:21;;:2;:21;;;;36606:128;:158;;;;;36756:8;;;;;;;;;;;36755:9;36606:158;36584:1757;;;36802:13;;;;;;;;;;;36798:148;;36847:19;:25;36867:4;36847:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;36876:19;:23;36896:2;36876:23;;;;;;;;;;;;;;;;;;;;;;;;;36847:52;36839:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;36798:148;37104:20;;;;;;;;;;;37100:423;;;37158:7;:5;:7::i;:::-;37152:13;;:2;:13;;;;:47;;;;;37183:15;37169:30;;:2;:30;;;;37152:47;:79;;;;;37217:13;37203:28;;:2;:28;;;;37152:79;37148:356;;;37309:12;37267:28;:39;37296:9;37267:39;;;;;;;;;;;;;;;;:54;37259:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;37468:12;37426:28;:39;37455:9;37426:39;;;;;;;;;;;;;;;:54;;;;37148:356;37100:423;37592:25;:31;37618:4;37592:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;37628:31;:35;37660:2;37628:35;;;;;;;;;;;;;;;;;;;;;;;;;37627:36;37592:71;37588:738;;;37710:20;;37700:6;:30;;37692:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;37849:9;;37832:13;37842:2;37832:9;:13::i;:::-;37823:6;:22;;;;:::i;:::-;:35;;37815:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37588:738;;;37976:25;:29;38002:2;37976:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;38010:31;:37;38042:4;38010:37;;;;;;;;;;;;;;;;;;;;;;;;;38009:38;37976:71;37972:354;;;38094:20;;38084:6;:30;;38076:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;37972:354;;;38273:9;;38256:13;38266:2;38256:9;:13::i;:::-;38247:6;:22;;;;:::i;:::-;:35;;38239:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;37972:354;37588:738;36584:1757;36551:1801;38369:28;38400:24;38418:4;38400:9;:24::i;:::-;38369:55;;38445:12;38484:18;;38460:20;:42;;38445:57;;38533:7;:35;;;;;38557:11;;;;;;;;;;;38533:35;:61;;;;;38586:8;;;;;;;;;;;38585:9;38533:61;:110;;;;;38612:25;:31;38638:4;38612:31;;;;;;;;;;;;;;;;;;;;;;;;;38611:32;38533:110;:153;;;;;38661:19;:25;38681:4;38661:25;;;;;;;;;;;;;;;;;;;;;;;;;38660:26;38533:153;:194;;;;;38704:19;:23;38724:2;38704:23;;;;;;;;;;;;;;;;;;;;;;;;;38703:24;38533:194;38515:338;;;38765:4;38754:8;;:15;;;;;;;;;;;;;;;;;;38798:10;:8;:10::i;:::-;38836:5;38825:8;;:16;;;;;;;;;;;;;;;;;;38515:338;38873:12;38889:8;;;;;;;;;;;38888:9;38873:24;;38998:19;:25;39018:4;38998:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;39027:19;:23;39047:2;39027:23;;;;;;;;;;;;;;;;;;;;;;;;;38998:52;38995:99;;;39077:5;39067:15;;38995:99;39114:12;39218:7;39215:967;;;39269:25;:29;39295:2;39269:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;39318:1;39302:13;;:17;39269:50;39265:748;;;39346:34;39376:3;39346:25;39357:13;;39346:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;39339:41;;39447:13;;39428:16;;39421:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;39399:18;;:61;;;;;;;:::i;:::-;;;;;;;;39515:13;;39502:10;;39495:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;39479:12;;:49;;;;;;;:::i;:::-;;;;;;;;39595:13;;39576:16;;39569:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;39547:18;;:61;;;;;;;:::i;:::-;;;;;;;;39265:748;;;39669:25;:31;39695:4;39669:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;39719:1;39704:12;;:16;39669:51;39666:347;;;39745:33;39774:3;39745:24;39756:12;;39745:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;39738:40;;39841:12;;39823:15;;39816:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;39794:18;;:59;;;;;;;:::i;:::-;;;;;;;;39907:12;;39895:9;;39888:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;39872:12;;:47;;;;;;;:::i;:::-;;;;;;;;39985:12;;39967:15;;39960:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;39938:18;;:59;;;;;;;:::i;:::-;;;;;;;;39666:347;39265:748;40051:1;40044:4;:8;40041:93;;;40076:42;40092:4;40106;40113;40076:15;:42::i;:::-;40041:93;40166:4;40156:14;;;;;:::i;:::-;;;39215:967;40194:33;40210:4;40216:2;40220:6;40194:15;:33::i;:::-;36263:3972;;;;36150:4085;;;;:::o;17591:192::-;17677:7;17710:1;17705;:6;;17713:12;17697:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17737:9;17753:1;17749;:5;;;;:::i;:::-;17737:17;;17774:1;17767:8;;;17591:192;;;;;:::o;41385:1502::-;41424:23;41450:24;41468:4;41450:9;:24::i;:::-;41424:50;;41485:25;41555:12;;41534:18;;41513;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;41485:82;;41610:1;41591:15;:20;:46;;;;41636:1;41615:17;:22;41591:46;41588:60;;;41640:7;;;;41588:60;41717:23;41802:1;41782:17;41761:18;;41743:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;41717:86;;41814:26;41843:36;41863:15;41843;:19;;:36;;;;:::i;:::-;41814:65;;41900:25;41928:21;41900:49;;41962:36;41979:18;41962:16;:36::i;:::-;42020:18;42041:44;42067:17;42041:21;:25;;:44;;;;:::i;:::-;42020:65;;42106:23;42132:57;42171:17;42132:34;42147:18;;42132:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;42106:83;;42200:17;42220:51;42253:17;42220:28;42235:12;;42220:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;42200:71;;42300:23;42357:9;42339:15;42326:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;42300:66;;42416:1;42395:18;:22;;;;42449:1;42428:18;:22;;;;42476:1;42461:12;:16;;;;42499:12;42524:15;;;;;;;;;;;42516:29;;42553:15;42516:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42498:75;;;42605:9;;;;;;;;;;;42597:23;;42628:9;42597:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42584:58;;;;;42684:1;42666:15;:19;:42;;;;;42707:1;42689:15;:19;42666:42;42663:210;;;42724:46;42737:15;42754;42724:12;:46::i;:::-;42790:71;42805:18;42825:15;42842:18;;42790:71;;;;;;;;:::i;:::-;;;;;;;;42663:210;41413:1474;;;;;;;;;;41385:1502;:::o;35237:188::-;35354:5;35320:25;:31;35346:4;35320:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;35411:5;35377:40;;35405:4;35377:40;;;;;;;;;;;;35237:188;;:::o;12883:573::-;13041:1;13023:20;;:6;:20;;;;13015:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13125:1;13104:23;;:9;:23;;;;13096:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13180:47;13201:6;13209:9;13220:6;13180:20;:47::i;:::-;13260:71;13282:6;13260:71;;;;;;;;;;;;;;;;;:9;:17;13270:6;13260:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13240:9;:17;13250:6;13240:17;;;;;;;;;;;;;;;:91;;;;13365:32;13390:6;13365:9;:20;13375:9;13365:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13342:9;:20;13352:9;13342:20;;;;;;;;;;;;;;;:55;;;;13430:9;13413:35;;13422:6;13413:35;;;13441:6;13413:35;;;;;;:::i;:::-;;;;;;;;12883:573;;;:::o;18042:471::-;18100:7;18350:1;18345;:6;18341:47;;;18375:1;18368:8;;;;18341:47;18400:9;18416:1;18412;:5;;;;:::i;:::-;18400:17;;18445:1;18440;18436;:5;;;;:::i;:::-;:10;18428:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18504:1;18497:8;;;18042:471;;;;;:::o;18989:132::-;19047:7;19074:39;19078:1;19081;19074:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;19067:46;;18989:132;;;;:::o;17152:136::-;17210:7;17237:43;17241:1;17244;17237:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17230:50;;17152:136;;;;:::o;40243:601::-;40371:21;40409:1;40395:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40371:40;;40440:4;40422;40427:1;40422:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;40466:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40456:4;40461:1;40456:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;40501:62;40518:4;40533:15;40551:11;40501:8;:62::i;:::-;40602:15;:66;;;40683:11;40709:1;40753:4;40780;40800:15;40602:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40298:546;40243:601;:::o;40856:521::-;41004:62;41021:4;41036:15;41054:11;41004:8;:62::i;:::-;41109:15;:31;;;41148:9;41181:4;41201:11;41227:1;41270;41313:15;;;;;;;;;;;41343;41109:260;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;40856:521;;:::o;16293:125::-;;;;:::o;19617:278::-;19703:7;19735:1;19731;:5;19738:12;19723:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19762:9;19778:1;19774;:5;;;;:::i;:::-;19762:17;;19886:1;19879:8;;;19617:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:::-;3888:6;3937:2;3925:9;3916:7;3912:23;3908:32;3905:119;;;3943:79;;:::i;:::-;3905:119;4063:1;4088:53;4133:7;4124:6;4113:9;4109:22;4088:53;:::i;:::-;4078:63;;4034:117;3829:329;;;;:::o;4164:60::-;4192:3;4213:5;4206:12;;4164:60;;;:::o;4230:142::-;4280:9;4313:53;4331:34;4340:24;4358:5;4340:24;:::i;:::-;4331:34;:::i;:::-;4313:53;:::i;:::-;4300:66;;4230:142;;;:::o;4378:126::-;4428:9;4461:37;4492:5;4461:37;:::i;:::-;4448:50;;4378:126;;;:::o;4510:153::-;4587:9;4620:37;4651:5;4620:37;:::i;:::-;4607:50;;4510:153;;;:::o;4669:185::-;4783:64;4841:5;4783:64;:::i;:::-;4778:3;4771:77;4669:185;;:::o;4860:276::-;4980:4;5018:2;5007:9;5003:18;4995:26;;5031:98;5126:1;5115:9;5111:17;5102:6;5031:98;:::i;:::-;4860:276;;;;:::o;5142:118::-;5229:24;5247:5;5229:24;:::i;:::-;5224:3;5217:37;5142:118;;:::o;5266:222::-;5359:4;5397:2;5386:9;5382:18;5374:26;;5410:71;5478:1;5467:9;5463:17;5454:6;5410:71;:::i;:::-;5266:222;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:86::-;6154:7;6194:4;6187:5;6183:16;6172:27;;6119:86;;;:::o;6211:112::-;6294:22;6310:5;6294:22;:::i;:::-;6289:3;6282:35;6211:112;;:::o;6329:214::-;6418:4;6456:2;6445:9;6441:18;6433:26;;6469:67;6533:1;6522:9;6518:17;6509:6;6469:67;:::i;:::-;6329:214;;;;:::o;6549:118::-;6636:24;6654:5;6636:24;:::i;:::-;6631:3;6624:37;6549:118;;:::o;6673:222::-;6766:4;6804:2;6793:9;6789:18;6781:26;;6817:71;6885:1;6874:9;6870:17;6861:6;6817:71;:::i;:::-;6673:222;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:619::-;7713:6;7721;7729;7778:2;7766:9;7757:7;7753:23;7749:32;7746:119;;;7784:79;;:::i;:::-;7746:119;7904:1;7929:53;7974:7;7965:6;7954:9;7950:22;7929:53;:::i;:::-;7919:63;;7875:117;8031:2;8057:53;8102:7;8093:6;8082:9;8078:22;8057:53;:::i;:::-;8047:63;;8002:118;8159:2;8185:53;8230:7;8221:6;8210:9;8206:22;8185:53;:::i;:::-;8175:63;;8130:118;7636:619;;;;;:::o;8261:323::-;8317:6;8366:2;8354:9;8345:7;8341:23;8337:32;8334:119;;;8372:79;;:::i;:::-;8334:119;8492:1;8517:50;8559:7;8550:6;8539:9;8535:22;8517:50;:::i;:::-;8507:60;;8463:114;8261:323;;;;:::o;8590:474::-;8658:6;8666;8715:2;8703:9;8694:7;8690:23;8686:32;8683:119;;;8721:79;;:::i;:::-;8683:119;8841:1;8866:53;8911:7;8902:6;8891:9;8887:22;8866:53;:::i;:::-;8856:63;;8812:117;8968:2;8994:53;9039:7;9030:6;9019:9;9015:22;8994:53;:::i;:::-;8984:63;;8939:118;8590:474;;;;;:::o;9070:180::-;9118:77;9115:1;9108:88;9215:4;9212:1;9205:15;9239:4;9236:1;9229:15;9256:320;9300:6;9337:1;9331:4;9327:12;9317:22;;9384:1;9378:4;9374:12;9405:18;9395:81;;9461:4;9453:6;9449:17;9439:27;;9395:81;9523:2;9515:6;9512:14;9492:18;9489:38;9486:84;;;9542:18;;:::i;:::-;9486:84;9307:269;9256:320;;;:::o;9582:182::-;9722:34;9718:1;9710:6;9706:14;9699:58;9582:182;:::o;9770:366::-;9912:3;9933:67;9997:2;9992:3;9933:67;:::i;:::-;9926:74;;10009:93;10098:3;10009:93;:::i;:::-;10127:2;10122:3;10118:12;10111:19;;9770:366;;;:::o;10142:419::-;10308:4;10346:2;10335:9;10331:18;10323:26;;10395:9;10389:4;10385:20;10381:1;10370:9;10366:17;10359:47;10423:131;10549:4;10423:131;:::i;:::-;10415:139;;10142:419;;;:::o;10567:180::-;10615:77;10612:1;10605:88;10712:4;10709:1;10702:15;10736:4;10733:1;10726:15;10753:348;10793:7;10816:20;10834:1;10816:20;:::i;:::-;10811:25;;10850:20;10868:1;10850:20;:::i;:::-;10845:25;;11038:1;10970:66;10966:74;10963:1;10960:81;10955:1;10948:9;10941:17;10937:105;10934:131;;;11045:18;;:::i;:::-;10934:131;11093:1;11090;11086:9;11075:20;;10753:348;;;;:::o;11107:180::-;11155:77;11152:1;11145:88;11252:4;11249:1;11242:15;11276:4;11273:1;11266:15;11293:185;11333:1;11350:20;11368:1;11350:20;:::i;:::-;11345:25;;11384:20;11402:1;11384:20;:::i;:::-;11379:25;;11423:1;11413:35;;11428:18;;:::i;:::-;11413:35;11470:1;11467;11463:9;11458:14;;11293:185;;;;:::o;11484:234::-;11624:34;11620:1;11612:6;11608:14;11601:58;11693:17;11688:2;11680:6;11676:15;11669:42;11484:234;:::o;11724:366::-;11866:3;11887:67;11951:2;11946:3;11887:67;:::i;:::-;11880:74;;11963:93;12052:3;11963:93;:::i;:::-;12081:2;12076:3;12072:12;12065:19;;11724:366;;;:::o;12096:419::-;12262:4;12300:2;12289:9;12285:18;12277:26;;12349:9;12343:4;12339:20;12335:1;12324:9;12320:17;12313:47;12377:131;12503:4;12377:131;:::i;:::-;12369:139;;12096:419;;;:::o;12521:249::-;12661:34;12657:1;12649:6;12645:14;12638:58;12730:32;12725:2;12717:6;12713:15;12706:57;12521:249;:::o;12776:366::-;12918:3;12939:67;13003:2;12998:3;12939:67;:::i;:::-;12932:74;;13015:93;13104:3;13015:93;:::i;:::-;13133:2;13128:3;13124:12;13117:19;;12776:366;;;:::o;13148:419::-;13314:4;13352:2;13341:9;13337:18;13329:26;;13401:9;13395:4;13391:20;13387:1;13376:9;13372:17;13365:47;13429:131;13555:4;13429:131;:::i;:::-;13421:139;;13148:419;;;:::o;13573:305::-;13613:3;13632:20;13650:1;13632:20;:::i;:::-;13627:25;;13666:20;13684:1;13666:20;:::i;:::-;13661:25;;13820:1;13752:66;13748:74;13745:1;13742:81;13739:107;;;13826:18;;:::i;:::-;13739:107;13870:1;13867;13863:9;13856:16;;13573:305;;;;:::o;13884:180::-;14024:32;14020:1;14012:6;14008:14;14001:56;13884:180;:::o;14070:366::-;14212:3;14233:67;14297:2;14292:3;14233:67;:::i;:::-;14226:74;;14309:93;14398:3;14309:93;:::i;:::-;14427:2;14422:3;14418:12;14411:19;;14070:366;;;:::o;14442:419::-;14608:4;14646:2;14635:9;14631:18;14623:26;;14695:9;14689:4;14685:20;14681:1;14670:9;14666:17;14659:47;14723:131;14849:4;14723:131;:::i;:::-;14715:139;;14442:419;;;:::o;14867:244::-;15007:34;15003:1;14995:6;14991:14;14984:58;15076:27;15071:2;15063:6;15059:15;15052:52;14867:244;:::o;15117:366::-;15259:3;15280:67;15344:2;15339:3;15280:67;:::i;:::-;15273:74;;15356:93;15445:3;15356:93;:::i;:::-;15474:2;15469:3;15465:12;15458:19;;15117:366;;;:::o;15489:419::-;15655:4;15693:2;15682:9;15678:18;15670:26;;15742:9;15736:4;15732:20;15728:1;15717:9;15713:17;15706:47;15770:131;15896:4;15770:131;:::i;:::-;15762:139;;15489:419;;;:::o;15914:179::-;16054:31;16050:1;16042:6;16038:14;16031:55;15914:179;:::o;16099:366::-;16241:3;16262:67;16326:2;16321:3;16262:67;:::i;:::-;16255:74;;16338:93;16427:3;16338:93;:::i;:::-;16456:2;16451:3;16447:12;16440:19;;16099:366;;;:::o;16471:419::-;16637:4;16675:2;16664:9;16660:18;16652:26;;16724:9;16718:4;16714:20;16710:1;16699:9;16695:17;16688:47;16752:131;16878:4;16752:131;:::i;:::-;16744:139;;16471:419;;;:::o;16896:240::-;17036:34;17032:1;17024:6;17020:14;17013:58;17105:23;17100:2;17092:6;17088:15;17081:48;16896:240;:::o;17142:366::-;17284:3;17305:67;17369:2;17364:3;17305:67;:::i;:::-;17298:74;;17381:93;17470:3;17381:93;:::i;:::-;17499:2;17494:3;17490:12;17483:19;;17142:366;;;:::o;17514:419::-;17680:4;17718:2;17707:9;17703:18;17695:26;;17767:9;17761:4;17757:20;17753:1;17742:9;17738:17;17731:47;17795:131;17921:4;17795:131;:::i;:::-;17787:139;;17514:419;;;:::o;17939:239::-;18079:34;18075:1;18067:6;18063:14;18056:58;18148:22;18143:2;18135:6;18131:15;18124:47;17939:239;:::o;18184:366::-;18326:3;18347:67;18411:2;18406:3;18347:67;:::i;:::-;18340:74;;18423:93;18512:3;18423:93;:::i;:::-;18541:2;18536:3;18532:12;18525:19;;18184:366;;;:::o;18556:419::-;18722:4;18760:2;18749:9;18745:18;18737:26;;18809:9;18803:4;18799:20;18795:1;18784:9;18780:17;18773:47;18837:131;18963:4;18837:131;:::i;:::-;18829:139;;18556:419;;;:::o;18981:147::-;19082:11;19119:3;19104:18;;18981:147;;;;:::o;19134:114::-;;:::o;19254:398::-;19413:3;19434:83;19515:1;19510:3;19434:83;:::i;:::-;19427:90;;19526:93;19615:3;19526:93;:::i;:::-;19644:1;19639:3;19635:11;19628:18;;19254:398;;;:::o;19658:379::-;19842:3;19864:147;20007:3;19864:147;:::i;:::-;19857:154;;20028:3;20021:10;;19658:379;;;:::o;20043:245::-;20183:34;20179:1;20171:6;20167:14;20160:58;20252:28;20247:2;20239:6;20235:15;20228:53;20043:245;:::o;20294:366::-;20436:3;20457:67;20521:2;20516:3;20457:67;:::i;:::-;20450:74;;20533:93;20622:3;20533:93;:::i;:::-;20651:2;20646:3;20642:12;20635:19;;20294:366;;;:::o;20666:419::-;20832:4;20870:2;20859:9;20855:18;20847:26;;20919:9;20913:4;20909:20;20905:1;20894:9;20890:17;20883:47;20947:131;21073:4;20947:131;:::i;:::-;20939:139;;20666:419;;;:::o;21091:225::-;21231:34;21227:1;21219:6;21215:14;21208:58;21300:8;21295:2;21287:6;21283:15;21276:33;21091:225;:::o;21322:366::-;21464:3;21485:67;21549:2;21544:3;21485:67;:::i;:::-;21478:74;;21561:93;21650:3;21561:93;:::i;:::-;21679:2;21674:3;21670:12;21663:19;;21322:366;;;:::o;21694:419::-;21860:4;21898:2;21887:9;21883:18;21875:26;;21947:9;21941:4;21937:20;21933:1;21922:9;21918:17;21911:47;21975:131;22101:4;21975:131;:::i;:::-;21967:139;;21694:419;;;:::o;22119:177::-;22259:29;22255:1;22247:6;22243:14;22236:53;22119:177;:::o;22302:366::-;22444:3;22465:67;22529:2;22524:3;22465:67;:::i;:::-;22458:74;;22541:93;22630:3;22541:93;:::i;:::-;22659:2;22654:3;22650:12;22643:19;;22302:366;;;:::o;22674:419::-;22840:4;22878:2;22867:9;22863:18;22855:26;;22927:9;22921:4;22917:20;22913:1;22902:9;22898:17;22891:47;22955:131;23081:4;22955:131;:::i;:::-;22947:139;;22674:419;;;:::o;23099:223::-;23239:34;23235:1;23227:6;23223:14;23216:58;23308:6;23303:2;23295:6;23291:15;23284:31;23099:223;:::o;23328:366::-;23470:3;23491:67;23555:2;23550:3;23491:67;:::i;:::-;23484:74;;23567:93;23656:3;23567:93;:::i;:::-;23685:2;23680:3;23676:12;23669:19;;23328:366;;;:::o;23700:419::-;23866:4;23904:2;23893:9;23889:18;23881:26;;23953:9;23947:4;23943:20;23939:1;23928:9;23924:17;23917:47;23981:131;24107:4;23981:131;:::i;:::-;23973:139;;23700:419;;;:::o;24125:221::-;24265:34;24261:1;24253:6;24249:14;24242:58;24334:4;24329:2;24321:6;24317:15;24310:29;24125:221;:::o;24352:366::-;24494:3;24515:67;24579:2;24574:3;24515:67;:::i;:::-;24508:74;;24591:93;24680:3;24591:93;:::i;:::-;24709:2;24704:3;24700:12;24693:19;;24352:366;;;:::o;24724:419::-;24890:4;24928:2;24917:9;24913:18;24905:26;;24977:9;24971:4;24967:20;24963:1;24952:9;24948:17;24941:47;25005:131;25131:4;25005:131;:::i;:::-;24997:139;;24724:419;;;:::o;25149:224::-;25289:34;25285:1;25277:6;25273:14;25266:58;25358:7;25353:2;25345:6;25341:15;25334:32;25149:224;:::o;25379:366::-;25521:3;25542:67;25606:2;25601:3;25542:67;:::i;:::-;25535:74;;25618:93;25707:3;25618:93;:::i;:::-;25736:2;25731:3;25727:12;25720:19;;25379:366;;;:::o;25751:419::-;25917:4;25955:2;25944:9;25940:18;25932:26;;26004:9;25998:4;25994:20;25990:1;25979:9;25975:17;25968:47;26032:131;26158:4;26032:131;:::i;:::-;26024:139;;25751:419;;;:::o;26176:222::-;26316:34;26312:1;26304:6;26300:14;26293:58;26385:5;26380:2;26372:6;26368:15;26361:30;26176:222;:::o;26404:366::-;26546:3;26567:67;26631:2;26626:3;26567:67;:::i;:::-;26560:74;;26643:93;26732:3;26643:93;:::i;:::-;26761:2;26756:3;26752:12;26745:19;;26404:366;;;:::o;26776:419::-;26942:4;26980:2;26969:9;26965:18;26957:26;;27029:9;27023:4;27019:20;27015:1;27004:9;27000:17;26993:47;27057:131;27183:4;27057:131;:::i;:::-;27049:139;;26776:419;;;:::o;27201:172::-;27341:24;27337:1;27329:6;27325:14;27318:48;27201:172;:::o;27379:366::-;27521:3;27542:67;27606:2;27601:3;27542:67;:::i;:::-;27535:74;;27618:93;27707:3;27618:93;:::i;:::-;27736:2;27731:3;27727:12;27720:19;;27379:366;;;:::o;27751:419::-;27917:4;27955:2;27944:9;27940:18;27932:26;;28004:9;27998:4;27994:20;27990:1;27979:9;27975:17;27968:47;28032:131;28158:4;28032:131;:::i;:::-;28024:139;;27751:419;;;:::o;28176:297::-;28316:34;28312:1;28304:6;28300:14;28293:58;28385:34;28380:2;28372:6;28368:15;28361:59;28454:11;28449:2;28441:6;28437:15;28430:36;28176:297;:::o;28479:366::-;28621:3;28642:67;28706:2;28701:3;28642:67;:::i;:::-;28635:74;;28718:93;28807:3;28718:93;:::i;:::-;28836:2;28831:3;28827:12;28820:19;;28479:366;;;:::o;28851:419::-;29017:4;29055:2;29044:9;29040:18;29032:26;;29104:9;29098:4;29094:20;29090:1;29079:9;29075:17;29068:47;29132:131;29258:4;29132:131;:::i;:::-;29124:139;;28851:419;;;:::o;29276:240::-;29416:34;29412:1;29404:6;29400:14;29393:58;29485:23;29480:2;29472:6;29468:15;29461:48;29276:240;:::o;29522:366::-;29664:3;29685:67;29749:2;29744:3;29685:67;:::i;:::-;29678:74;;29761:93;29850:3;29761:93;:::i;:::-;29879:2;29874:3;29870:12;29863:19;;29522:366;;;:::o;29894:419::-;30060:4;30098:2;30087:9;30083:18;30075:26;;30147:9;30141:4;30137:20;30133:1;30122:9;30118:17;30111:47;30175:131;30301:4;30175:131;:::i;:::-;30167:139;;29894:419;;;:::o;30319:169::-;30459:21;30455:1;30447:6;30443:14;30436:45;30319:169;:::o;30494:366::-;30636:3;30657:67;30721:2;30716:3;30657:67;:::i;:::-;30650:74;;30733:93;30822:3;30733:93;:::i;:::-;30851:2;30846:3;30842:12;30835:19;;30494:366;;;:::o;30866:419::-;31032:4;31070:2;31059:9;31055:18;31047:26;;31119:9;31113:4;31109:20;31105:1;31094:9;31090:17;31083:47;31147:131;31273:4;31147:131;:::i;:::-;31139:139;;30866:419;;;:::o;31291:241::-;31431:34;31427:1;31419:6;31415:14;31408:58;31500:24;31495:2;31487:6;31483:15;31476:49;31291:241;:::o;31538:366::-;31680:3;31701:67;31765:2;31760:3;31701:67;:::i;:::-;31694:74;;31777:93;31866:3;31777:93;:::i;:::-;31895:2;31890:3;31886:12;31879:19;;31538:366;;;:::o;31910:419::-;32076:4;32114:2;32103:9;32099:18;32091:26;;32163:9;32157:4;32153:20;32149:1;32138:9;32134:17;32127:47;32191:131;32317:4;32191:131;:::i;:::-;32183:139;;31910:419;;;:::o;32335:191::-;32375:4;32395:20;32413:1;32395:20;:::i;:::-;32390:25;;32429:20;32447:1;32429:20;:::i;:::-;32424:25;;32468:1;32465;32462:8;32459:34;;;32473:18;;:::i;:::-;32459:34;32518:1;32515;32511:9;32503:17;;32335:191;;;;:::o;32532:442::-;32681:4;32719:2;32708:9;32704:18;32696:26;;32732:71;32800:1;32789:9;32785:17;32776:6;32732:71;:::i;:::-;32813:72;32881:2;32870:9;32866:18;32857:6;32813:72;:::i;:::-;32895;32963:2;32952:9;32948:18;32939:6;32895:72;:::i;:::-;32532:442;;;;;;:::o;32980:220::-;33120:34;33116:1;33108:6;33104:14;33097:58;33189:3;33184:2;33176:6;33172:15;33165:28;32980:220;:::o;33206:366::-;33348:3;33369:67;33433:2;33428:3;33369:67;:::i;:::-;33362:74;;33445:93;33534:3;33445:93;:::i;:::-;33563:2;33558:3;33554:12;33547:19;;33206:366;;;:::o;33578:419::-;33744:4;33782:2;33771:9;33767:18;33759:26;;33831:9;33825:4;33821:20;33817:1;33806:9;33802:17;33795:47;33859:131;33985:4;33859:131;:::i;:::-;33851:139;;33578:419;;;:::o;34003:180::-;34051:77;34048:1;34041:88;34148:4;34145:1;34138:15;34172:4;34169:1;34162:15;34189:180;34237:77;34234:1;34227:88;34334:4;34331:1;34324:15;34358:4;34355:1;34348:15;34375:143;34432:5;34463:6;34457:13;34448:22;;34479:33;34506:5;34479:33;:::i;:::-;34375:143;;;;:::o;34524:351::-;34594:6;34643:2;34631:9;34622:7;34618:23;34614:32;34611:119;;;34649:79;;:::i;:::-;34611:119;34769:1;34794:64;34850:7;34841:6;34830:9;34826:22;34794:64;:::i;:::-;34784:74;;34740:128;34524:351;;;;:::o;34881:85::-;34926:7;34955:5;34944:16;;34881:85;;;:::o;34972:158::-;35030:9;35063:61;35081:42;35090:32;35116:5;35090:32;:::i;:::-;35081:42;:::i;:::-;35063:61;:::i;:::-;35050:74;;34972:158;;;:::o;35136:147::-;35231:45;35270:5;35231:45;:::i;:::-;35226:3;35219:58;35136:147;;:::o;35289:114::-;35356:6;35390:5;35384:12;35374:22;;35289:114;;;:::o;35409:184::-;35508:11;35542:6;35537:3;35530:19;35582:4;35577:3;35573:14;35558:29;;35409:184;;;;:::o;35599:132::-;35666:4;35689:3;35681:11;;35719:4;35714:3;35710:14;35702:22;;35599:132;;;:::o;35737:108::-;35814:24;35832:5;35814:24;:::i;:::-;35809:3;35802:37;35737:108;;:::o;35851:179::-;35920:10;35941:46;35983:3;35975:6;35941:46;:::i;:::-;36019:4;36014:3;36010:14;35996:28;;35851:179;;;;:::o;36036:113::-;36106:4;36138;36133:3;36129:14;36121:22;;36036:113;;;:::o;36185:732::-;36304:3;36333:54;36381:5;36333:54;:::i;:::-;36403:86;36482:6;36477:3;36403:86;:::i;:::-;36396:93;;36513:56;36563:5;36513:56;:::i;:::-;36592:7;36623:1;36608:284;36633:6;36630:1;36627:13;36608:284;;;36709:6;36703:13;36736:63;36795:3;36780:13;36736:63;:::i;:::-;36729:70;;36822:60;36875:6;36822:60;:::i;:::-;36812:70;;36668:224;36655:1;36652;36648:9;36643:14;;36608:284;;;36612:14;36908:3;36901:10;;36309:608;;;36185:732;;;;:::o;36923:831::-;37186:4;37224:3;37213:9;37209:19;37201:27;;37238:71;37306:1;37295:9;37291:17;37282:6;37238:71;:::i;:::-;37319:80;37395:2;37384:9;37380:18;37371:6;37319:80;:::i;:::-;37446:9;37440:4;37436:20;37431:2;37420:9;37416:18;37409:48;37474:108;37577:4;37568:6;37474:108;:::i;:::-;37466:116;;37592:72;37660:2;37649:9;37645:18;37636:6;37592:72;:::i;:::-;37674:73;37742:3;37731:9;37727:19;37718:6;37674:73;:::i;:::-;36923:831;;;;;;;;:::o;37760:807::-;38009:4;38047:3;38036:9;38032:19;38024:27;;38061:71;38129:1;38118:9;38114:17;38105:6;38061:71;:::i;:::-;38142:72;38210:2;38199:9;38195:18;38186:6;38142:72;:::i;:::-;38224:80;38300:2;38289:9;38285:18;38276:6;38224:80;:::i;:::-;38314;38390:2;38379:9;38375:18;38366:6;38314:80;:::i;:::-;38404:73;38472:3;38461:9;38457:19;38448:6;38404:73;:::i;:::-;38487;38555:3;38544:9;38540:19;38531:6;38487:73;:::i;:::-;37760:807;;;;;;;;;:::o;38573:143::-;38630:5;38661:6;38655:13;38646:22;;38677:33;38704:5;38677:33;:::i;:::-;38573:143;;;;:::o;38722:663::-;38810:6;38818;38826;38875:2;38863:9;38854:7;38850:23;38846:32;38843:119;;;38881:79;;:::i;:::-;38843:119;39001:1;39026:64;39082:7;39073:6;39062:9;39058:22;39026:64;:::i;:::-;39016:74;;38972:128;39139:2;39165:64;39221:7;39212:6;39201:9;39197:22;39165:64;:::i;:::-;39155:74;;39110:129;39278:2;39304:64;39360:7;39351:6;39340:9;39336:22;39304:64;:::i;:::-;39294:74;;39249:129;38722:663;;;;;:::o
Swarm Source
ipfs://b260e66112ce1981d65a12d1cb3d35cebb49e87d99ae90081b68ec2e53d7b5fc
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $3,673.11 | 0.000000000000000048 | <$0.000001 |
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.