Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 53 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 20919478 | 28 days ago | IN | 0 ETH | 0.00061203 | ||||
Approve | 19874970 | 174 days ago | IN | 0 ETH | 0.00024211 | ||||
Approve | 18091928 | 424 days ago | IN | 0 ETH | 0.00067917 | ||||
Approve | 16528807 | 643 days ago | IN | 0 ETH | 0.0026493 | ||||
Approve | 16174011 | 693 days ago | IN | 0 ETH | 0.00071067 | ||||
Approve | 16025287 | 714 days ago | IN | 0 ETH | 0.00059218 | ||||
Approve | 15994731 | 718 days ago | IN | 0 ETH | 0.00065077 | ||||
Approve | 15850826 | 738 days ago | IN | 0 ETH | 0.00035992 | ||||
Approve | 15651234 | 766 days ago | IN | 0 ETH | 0.00040903 | ||||
Approve | 15561592 | 778 days ago | IN | 0 ETH | 0.00097167 | ||||
Approve | 15558661 | 779 days ago | IN | 0 ETH | 0.00018344 | ||||
Approve | 15548442 | 780 days ago | IN | 0 ETH | 0.00056686 | ||||
Approve | 15548251 | 780 days ago | IN | 0 ETH | 0.0009514 | ||||
Approve | 15548197 | 780 days ago | IN | 0 ETH | 0.00074861 | ||||
Approve | 15548195 | 780 days ago | IN | 0 ETH | 0.00116155 | ||||
Approve | 15548192 | 780 days ago | IN | 0 ETH | 0.00069547 | ||||
Approve | 15548177 | 780 days ago | IN | 0 ETH | 0.0006157 | ||||
Approve | 15548158 | 780 days ago | IN | 0 ETH | 0.00064781 | ||||
Approve | 15548158 | 780 days ago | IN | 0 ETH | 0.00065189 | ||||
Approve | 15548158 | 780 days ago | IN | 0 ETH | 0.00070622 | ||||
Approve | 15548155 | 780 days ago | IN | 0 ETH | 0.00072432 | ||||
Approve | 15548143 | 780 days ago | IN | 0 ETH | 0.00062453 | ||||
Approve | 15548137 | 780 days ago | IN | 0 ETH | 0.00055986 | ||||
Approve | 15548137 | 780 days ago | IN | 0 ETH | 0.00058348 | ||||
Approve | 15548134 | 780 days ago | IN | 0 ETH | 0.0005769 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
20919505 | 28 days ago | 0.00061345 ETH | ||||
20919505 | 28 days ago | 0.00061345 ETH | ||||
20919505 | 28 days ago | 0.0012269 ETH | ||||
19874974 | 174 days ago | 0.00128125 ETH | ||||
19874974 | 174 days ago | 0.00128125 ETH | ||||
19874974 | 174 days ago | 0.0025625 ETH | ||||
16089869 | 705 days ago | 0.00043347 ETH | ||||
16089869 | 705 days ago | 0.00043347 ETH | ||||
16089869 | 705 days ago | 0.00086695 ETH | ||||
16025292 | 714 days ago | 0.00234933 ETH | ||||
16025292 | 714 days ago | 0.00234933 ETH | ||||
16025292 | 714 days ago | 0.00469867 ETH | ||||
15850829 | 738 days ago | 0.00017308 ETH | ||||
15850829 | 738 days ago | 0.00017308 ETH | ||||
15850829 | 738 days ago | 0.00034617 ETH | ||||
15651236 | 766 days ago | 0.00259031 ETH | ||||
15651236 | 766 days ago | 0.00259031 ETH | ||||
15651236 | 766 days ago | 0.00518062 ETH | ||||
15565769 | 778 days ago | 0.00091884 ETH | ||||
15565769 | 778 days ago | 0.00091884 ETH | ||||
15565769 | 778 days ago | 0.00183769 ETH | ||||
15564506 | 778 days ago | 0.00169855 ETH | ||||
15564506 | 778 days ago | 0.00169855 ETH | ||||
15564506 | 778 days ago | 0.00339711 ETH | ||||
15564500 | 778 days ago | 0.00133112 ETH |
Loading...
Loading
Contract Name:
HumanOnlyArt
Compiler Version
v0.8.4+commit.c7e474f2
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-09-16 */ /** Human Only Art: $HOA - You buy, we support NFT Collections from Human Artists. Tokenomics: - 5% of each buy/sell goes into supporting the NFT Collection of "Human Only Art". Website: https://humanonlyart.eth.limo Twitter: https://twitter.com/HumanOnlyArtNFT Medium: https://humanonlyart.medium.com */ // SPDX-License-Identifier: Unlicensed pragma solidity ^0.8.4; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @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) { return a + b; } /** * @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 a - b; } /** * @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) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting 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 a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting 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) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * 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) { unchecked { require(b > 0, errorMessage); return a % b; } } } /* * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(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"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); (bool success, ) = recipient.call{value: amount}(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value ) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue( address target, bytes memory data, uint256 value, string memory errorMessage ) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); (bool success, bytes memory returndata) = target.call{value: value}(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a static call. * * _Available since v3.3._ */ function functionStaticCall( address target, bytes memory data, string memory errorMessage ) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`], * but performing a delegate call. * * _Available since v3.4._ */ function functionDelegateCall( address target, bytes memory data, string memory errorMessage ) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult( bool success, bytes memory returndata, string memory errorMessage ) private pure returns (bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } pragma solidity >=0.5.0; 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; } pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } 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 implementation contract HumanOnlyArt is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; mapping(address => uint256) private _rOwned; mapping(address => uint256) private _tOwned; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFee; mapping(address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 4206900000000 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; string private _name = 'Human Only Art'; string private _symbol = 'HOA'; uint8 private _decimals = 9; uint256 private _taxFee = 0; uint256 private _teamFee = 5; uint256 private _previousTaxFee = _taxFee; uint256 private _previousTeamFee = _teamFee; address payable public _NFTWalletAddress; address payable public _marketingWalletAddress; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; mapping(address => bool) private _isUniswapPair; bool inSwap = false; bool public swapEnabled = true; uint8 _sellTaxMultiplier = 1; uint256 private _maxTxAmount = 300000000000000e9; // We will set a minimum amount of tokens to be swaped => 5M uint256 private _numOfTokensToExchangeForTeam = 5 * 10**3 * 10**9; struct AirdropReceiver { address addy; uint256 amount; } event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); event SwapEnabledUpdated(bool enabled); modifier lockTheSwap() { inSwap = true; _; inSwap = false; } constructor( address payable NFTWalletAddress, address payable marketingWalletAddress ) { _NFTWalletAddress = NFTWalletAddress; _marketingWalletAddress = marketingWalletAddress; _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02( 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D ); // UniswapV2 for Ethereum network // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair( address(this), _uniswapV2Router.WETH() ); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; // Exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public override returns (bool) { _transfer(sender, recipient, amount); _approve( sender, _msgSender(), _allowances[sender][_msgSender()].sub( amount, 'ERC20: transfer amount exceeds allowance' ) ); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue) ); return true; } 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; } function isExcluded(address account) public view returns (bool) { return _isExcluded[account]; } function setExcludeFromFee(address account, bool excluded) external onlyOwner { _isExcludedFromFee[account] = excluded; } function totalFees() public view returns (uint256) { return _tFeeTotal; } function deliver(uint256 tAmount) public { address sender = _msgSender(); require( !_isExcluded[sender], 'Excluded addresses cannot call this function' ); (uint256 rAmount, , , , , ) = _getValues(tAmount, false); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rTotal = _rTotal.sub(rAmount); _tFeeTotal = _tFeeTotal.add(tAmount); } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns (uint256) { require(tAmount <= _tTotal, 'Amount must be less than supply'); if (!deductTransferFee) { (uint256 rAmount, , , , , ) = _getValues(tAmount, false); return rAmount; } else { (, uint256 rTransferAmount, , , , ) = _getValues(tAmount, false); return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns (uint256) { require(rAmount <= _rTotal, 'Amount must be less than total reflections'); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeAccount(address account) external onlyOwner { require( account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.' ); require(!_isExcluded[account], 'Account is already excluded'); if (_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } function includeAccount(address account) external onlyOwner { require(_isExcluded[account], 'Account is already excluded'); for (uint256 i = 0; i < _excluded.length; i++) { if (_excluded[i] == account) { _excluded[i] = _excluded[_excluded.length - 1]; _tOwned[account] = 0; _isExcluded[account] = false; _excluded.pop(); break; } } } function removeAllFee() private { if (_taxFee == 0 && _teamFee == 0) return; _previousTaxFee = _taxFee; _previousTeamFee = _teamFee; _taxFee = 0; _teamFee = 0; } function restoreAllFee() private { _taxFee = _previousTaxFee; _teamFee = _previousTeamFee; } function isExcludedFromFee(address account) public view returns (bool) { return _isExcludedFromFee[account]; } function _approve( address owner, address spender, uint256 amount ) private { 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); } function _transfer( address sender, address recipient, uint256 amount ) private { require(sender != address(0), 'ERC20: transfer from the zero address'); require(recipient != address(0), 'ERC20: transfer to the zero address'); require(amount > 0, 'Transfer amount must be greater than zero'); if (sender != owner() && recipient != owner()) require( amount <= _maxTxAmount, 'Transfer amount exceeds the maxTxAmount.' ); // is the token balance of this contract address over the min number of // tokens that we need to initiate a swap? // also, don't get caught in a circular team event. // also, don't swap if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); if (contractTokenBalance >= _maxTxAmount) { contractTokenBalance = _maxTxAmount; } bool overMinTokenBalance = contractTokenBalance >= _numOfTokensToExchangeForTeam; if ( !inSwap && swapEnabled && overMinTokenBalance && (recipient == uniswapV2Pair || _isUniswapPair[recipient]) ) { // We need to swap the current tokens to ETH and send to the team wallet swapTokensForEth(contractTokenBalance); uint256 contractETHBalance = address(this).balance; if (contractETHBalance > 0) { sendETHToTeam(address(this).balance); } } // indicates if fee should be deducted from transfer bool takeFee = false; // take fee only on swaps if ( (sender == uniswapV2Pair || recipient == uniswapV2Pair || _isUniswapPair[recipient] || _isUniswapPair[sender]) && !(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) ) { takeFee = true; } //transfer amount, it will take tax and team fee _tokenTransfer(sender, recipient, amount, takeFee); } function swapTokensForEth(uint256 tokenAmount) private lockTheSwap { // 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 sendETHToTeam(uint256 amount) private { _NFTWalletAddress.call{ value: amount.div(2) }(''); _marketingWalletAddress.call{ value: amount.div(2) }(''); } // We are exposing these functions to be able to manual swap and send // in case the token is highly valued and 5M becomes too much function manualSwap() external onlyOwner { uint256 contractBalance = balanceOf(address(this)); swapTokensForEth(contractBalance); } function manualSend() external onlyOwner { uint256 contractETHBalance = address(this).balance; sendETHToTeam(contractETHBalance); } function setSwapEnabled(bool enabled) external onlyOwner { swapEnabled = enabled; } function _tokenTransfer( address sender, address recipient, uint256 amount, bool takeFee ) private { if (!takeFee) removeAllFee(); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, amount); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount); } else { _transferStandard(sender, recipient, amount); } if (!takeFee) restoreAllFee(); } function _transferStandard( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount, _isSelling(recipient)); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferToExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount, _isSelling(recipient)); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferFromExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount, _isSelling(recipient)); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _transferBothExcluded( address sender, address recipient, uint256 tAmount ) private { ( uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam ) = _getValues(tAmount, _isSelling(recipient)); _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(rAmount); _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _takeTeam(tTeam); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _takeTeam(uint256 tTeam) private { uint256 currentRate = _getRate(); uint256 rTeam = tTeam.mul(currentRate); _rOwned[address(this)] = _rOwned[address(this)].add(rTeam); if (_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tTeam); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _getValues(uint256 tAmount, bool isSelling) private view returns ( uint256, uint256, uint256, uint256, uint256, uint256 ) { (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues( tAmount, _taxFee, _teamFee, isSelling ); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues( tAmount, tFee, tTeam, currentRate ); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam); } function _getTValues( uint256 tAmount, uint256 taxFee, uint256 teamFee, bool isSelling ) private view returns ( uint256, uint256, uint256 ) { uint256 finalTax = isSelling ? taxFee.mul(_sellTaxMultiplier) : taxFee; uint256 finalTeam = isSelling ? teamFee.mul(_sellTaxMultiplier) : teamFee; uint256 tFee = tAmount.mul(finalTax).div(100); uint256 tTeam = tAmount.mul(finalTeam).div(100); uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam); return (tTransferAmount, tFee, tTeam); } function _getRValues( uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate ) private pure returns ( uint256, uint256, uint256 ) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTeam = tTeam.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns (uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns (uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _getTaxFee() private view returns (uint256) { return _taxFee; } function _getMaxTxAmount() private view returns (uint256) { return _maxTxAmount; } function _isSelling(address recipient) private view returns (bool) { return recipient == uniswapV2Pair || _isUniswapPair[recipient]; } function _getETHBalance() public view returns (uint256 balance) { return address(this).balance; } function _setTaxFee(uint256 taxFee) external onlyOwner { require(taxFee <= 5, 'taxFee should be in 0 - 5'); _taxFee = taxFee; } function _setTeamFee(uint256 teamFee) external onlyOwner { require(teamFee <= 5, 'teamFee should be in 0 - 5'); _teamFee = teamFee; } function _setSellTaxMultiplier(uint8 mult) external onlyOwner { require(mult >= 1 && mult <= 3, 'multiplier should be in 1 - 3'); _sellTaxMultiplier = mult; } function _setNFTWallet(address payable NFTWalletAddress) external onlyOwner { _NFTWalletAddress = NFTWalletAddress; } function _setMarketingWallet(address payable marketingWalletAddress) external onlyOwner { _marketingWalletAddress = marketingWalletAddress; } function _setMaxTxAmount(uint256 maxTxAmount) external onlyOwner { require( maxTxAmount >= 100000000000000e9, 'maxTxAmount should be greater than 100000000000000e9' ); _maxTxAmount = maxTxAmount; } function isUniswapPair(address _pair) external view returns (bool) { if (_pair == uniswapV2Pair) return true; return _isUniswapPair[_pair]; } function addUniswapPair(address _pair) external onlyOwner { _isUniswapPair[_pair] = true; } function removeUniswapPair(address _pair) external onlyOwner { _isUniswapPair[_pair] = false; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"NFTWalletAddress","type":"address"},{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_NFTWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_getETHBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"marketingWalletAddress","type":"address"}],"name":"_setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"_setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"NFTWalletAddress","type":"address"}],"name":"_setNFTWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"mult","type":"uint8"}],"name":"_setSellTaxMultiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"_setTaxFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"teamFee","type":"uint256"}],"name":"_setTeamFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"addUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","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":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"isUniswapPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"}],"name":"removeUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405268e40e772ce376d2000060075560075460001962000023919062000962565b6000196200003291906200089f565b6008556040518060400160405280600e81526020017f48756d616e204f6e6c7920417274000000000000000000000000000000000000815250600a908051906020019062000082929190620006e8565b506040518060400160405280600381526020017f484f410000000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000d0929190620006e8565b506009600c60006101000a81548160ff021916908360ff1602179055506000600d556005600e55600d54600f55600e546010556000601460006101000a81548160ff0219169083151502179055506001601460016101000a81548160ff0219169083151502179055506001601460026101000a81548160ff021916908360ff160217905550693f870857a3e0e380000060155565048c273950006016553480156200017a57600080fd5b5060405162006338380380620063388339818101604052810190620001a09190620007f2565b620001c0620001b4620005f360201b60201c565b620005fb60201b60201c565b81601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008546001600062000259620005f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f757600080fd5b505afa1580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003329190620007c6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200039557600080fd5b505afa158015620003aa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d09190620007c6565b6040518363ffffffff1660e01b8152600401620003ef92919062000855565b602060405180830381600087803b1580156200040a57600080fd5b505af11580156200041f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004459190620007c6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620004c8620006bf60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000581620005f360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600754604051620005e2919062000882565b60405180910390a350505062000a5b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620006f6906200092c565b90600052602060002090601f0160209004810192826200071a576000855562000766565b82601f106200073557805160ff191683800117855562000766565b8280016001018555821562000766579182015b828111156200076557825182559160200191906001019062000748565b5b50905062000775919062000779565b5090565b5b80821115620007945760008160009055506001016200077a565b5090565b600081519050620007a98162000a27565b92915050565b600081519050620007c08162000a41565b92915050565b600060208284031215620007d957600080fd5b6000620007e98482850162000798565b91505092915050565b600080604083850312156200080657600080fd5b60006200081685828601620007af565b92505060206200082985828601620007af565b9150509250929050565b6200083e81620008da565b82525050565b6200084f8162000922565b82525050565b60006040820190506200086c600083018562000833565b6200087b602083018462000833565b9392505050565b600060208201905062000899600083018462000844565b92915050565b6000620008ac8262000922565b9150620008b98362000922565b925082821015620008cf57620008ce6200099a565b5b828203905092915050565b6000620008e78262000902565b9050919050565b6000620008fb8262000902565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200094557607f821691505b602082108114156200095c576200095b620009f8565b5b50919050565b60006200096f8262000922565b91506200097c8362000922565b9250826200098f576200098e620009c9565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000a3281620008da565b811462000a3e57600080fd5b50565b62000a4c81620008ee565b811462000a5857600080fd5b50565b60805160601c60a05160601c61587962000abf6000396000818161122d0152818161172f0152818161295601528181612a2401528181612a79015261439d015260008181610a7501528181612e6901528181612f7f0152612fa601526158796000f3fe60806040526004361061024a5760003560e01c80635880b87311610139578063a7f404e2116100b6578063e01af92c1161007a578063e01af92c146108d3578063f2cc0c18146108fc578063f2fde38b14610925578063f42938901461094e578063f815a84214610965578063f84354f11461099057610251565b8063a7f404e2146107ca578063a9059cbb146107f3578063af9549e014610830578063cba0e99614610859578063dd62ed3e1461089657610251565b80638da5cb5b116100fd5780638da5cb5b146106d157806395d89b41146106fc5780639cece12e14610727578063a457c2d714610764578063a6931ed7146107a157610251565b80635880b873146106005780636ddd17131461062957806370a0823114610654578063715018a6146106915780637775ae6e146106a857610251565b8063303adcd8116101c75780634549b0391161018b5780634549b0391461051957806349bd5a5e146105565780634db6f9cf1461058157806351bc3c85146105ac5780635342acb4146105c357610251565b8063303adcd814610434578063313ce5671461045d57806339509351146104885780633bd5d173146104c55780634144d9e4146104ee57610251565b80631bbae6e01161020e5780631bbae6e01461033f5780631ff53b601461036857806323b872dd1461039157806328667162146103ce5780632d838119146103f757610251565b806306fdde0314610256578063095ea7b31461028157806313114a9d146102be5780631694505e146102e957806318160ddd1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109b9565b6040516102789190614cf5565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906147e4565b610a4b565b6040516102b59190614cbf565b60405180910390f35b3480156102ca57600080fd5b506102d3610a69565b6040516102e09190614f37565b60405180910390f35b3480156102f557600080fd5b506102fe610a73565b60405161030b9190614cda565b60405180910390f35b34801561032057600080fd5b50610329610a97565b6040516103369190614f37565b60405180910390f35b34801561034b57600080fd5b5061036660048036038101906103619190614849565b610aa1565b005b34801561037457600080fd5b5061038f600480360381019061038a91906146f4565b610b74565b005b34801561039d57600080fd5b506103b860048036038101906103b39190614759565b610c34565b6040516103c59190614cbf565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190614849565b610d0d565b005b34801561040357600080fd5b5061041e60048036038101906104199190614849565b610dd7565b60405161042b9190614f37565b60405180910390f35b34801561044057600080fd5b5061045b600480360381019061045691906148ae565b610e45565b005b34801561046957600080fd5b50610472610f36565b60405161047f9190614fac565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa91906147e4565b610f4d565b6040516104bc9190614cbf565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e79190614849565b611000565b005b3480156104fa57600080fd5b5061050361117d565b6040516105109190614ca4565b60405180910390f35b34801561052557600080fd5b50610540600480360381019061053b9190614872565b6111a3565b60405161054d9190614f37565b60405180910390f35b34801561056257600080fd5b5061056b61122b565b6040516105789190614c89565b60405180910390f35b34801561058d57600080fd5b5061059661124f565b6040516105a39190614ca4565b60405180910390f35b3480156105b857600080fd5b506105c1611275565b005b3480156105cf57600080fd5b506105ea60048036038101906105e591906146a2565b61130a565b6040516105f79190614cbf565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190614849565b611360565b005b34801561063557600080fd5b5061063e61142a565b60405161064b9190614cbf565b60405180910390f35b34801561066057600080fd5b5061067b600480360381019061067691906146a2565b61143d565b6040516106889190614f37565b60405180910390f35b34801561069d57600080fd5b506106a6611528565b005b3480156106b457600080fd5b506106cf60048036038101906106ca91906146f4565b6115b0565b005b3480156106dd57600080fd5b506106e6611670565b6040516106f39190614c89565b60405180910390f35b34801561070857600080fd5b50610711611699565b60405161071e9190614cf5565b60405180910390f35b34801561073357600080fd5b5061074e600480360381019061074991906146a2565b61172b565b60405161075b9190614cbf565b60405180910390f35b34801561077057600080fd5b5061078b600480360381019061078691906147e4565b6117df565b6040516107989190614cbf565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c391906146a2565b6118ac565b005b3480156107d657600080fd5b506107f160048036038101906107ec91906146a2565b611983565b005b3480156107ff57600080fd5b5061081a600480360381019061081591906147e4565b611a5a565b6040516108279190614cbf565b60405180910390f35b34801561083c57600080fd5b50610857600480360381019061085291906147a8565b611a78565b005b34801561086557600080fd5b50610880600480360381019061087b91906146a2565b611b4f565b60405161088d9190614cbf565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b8919061471d565b611ba5565b6040516108ca9190614f37565b60405180910390f35b3480156108df57600080fd5b506108fa60048036038101906108f59190614820565b611c2c565b005b34801561090857600080fd5b50610923600480360381019061091e91906146a2565b611cc5565b005b34801561093157600080fd5b5061094c600480360381019061094791906146a2565b611fe3565b005b34801561095a57600080fd5b506109636120db565b005b34801561097157600080fd5b5061097a612168565b6040516109879190614f37565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b291906146a2565b612170565b005b6060600a80546109c89061520c565b80601f01602080910402602001604051908101604052809291908181526020018280546109f49061520c565b8015610a415780601f10610a1657610100808354040283529160200191610a41565b820191906000526020600020905b815481529060010190602001808311610a2457829003601f168201915b5050505050905090565b6000610a5f610a5861253e565b8484612546565b6001905092915050565b6000600954905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b610aa961253e565b73ffffffffffffffffffffffffffffffffffffffff16610ac7611670565b73ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490614e77565b60405180910390fd5b69152d02c7e14af6800000811015610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190614df7565b60405180910390fd5b8060158190555050565b610b7c61253e565b73ffffffffffffffffffffffffffffffffffffffff16610b9a611670565b73ffffffffffffffffffffffffffffffffffffffff1614610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be790614e77565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610c41848484612711565b610d0284610c4d61253e565b610cfd856040518060600160405280602881526020016157f760289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cb361253e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c379092919063ffffffff16565b612546565b600190509392505050565b610d1561253e565b73ffffffffffffffffffffffffffffffffffffffff16610d33611670565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090614e77565b60405180910390fd5b6005811115610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc490614d57565b60405180910390fd5b80600e8190555050565b6000600854821115610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590614d77565b60405180910390fd5b6000610e28612c8c565b9050610e3d8184612cb790919063ffffffff16565b915050919050565b610e4d61253e565b73ffffffffffffffffffffffffffffffffffffffff16610e6b611670565b73ffffffffffffffffffffffffffffffffffffffff1614610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890614e77565b60405180910390fd5b60018160ff1610158015610ed9575060038160ff1611155b610f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0f90614e17565b60405180910390fd5b80601460026101000a81548160ff021916908360ff16021790555050565b6000600c60009054906101000a900460ff16905090565b6000610ff6610f5a61253e565b84610ff18560036000610f6b61253e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b612546565b6001905092915050565b600061100a61253e565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109090614f17565b60405180910390fd5b60006110a6836000612ce3565b505050505090506110ff81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061115781600854612d4d90919063ffffffff16565b60088190555061117283600954612ccd90919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006007548311156111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190614e37565b60405180910390fd5b8161120c5760006111fc846000612ce3565b5050505050905080915050611225565b6000611219846000612ce3565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61127d61253e565b73ffffffffffffffffffffffffffffffffffffffff1661129b611670565b73ffffffffffffffffffffffffffffffffffffffff16146112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890614e77565b60405180910390fd5b60006112fc3061143d565b905061130781612d63565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61136861253e565b73ffffffffffffffffffffffffffffffffffffffff16611386611670565b73ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d390614e77565b60405180910390fd5b6005811115611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790614d17565b60405180910390fd5b80600d8190555050565b601460019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114d857600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611523565b611520600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dd7565b90505b919050565b61153061253e565b73ffffffffffffffffffffffffffffffffffffffff1661154e611670565b73ffffffffffffffffffffffffffffffffffffffff16146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90614e77565b60405180910390fd5b6115ae6000613057565b565b6115b861253e565b73ffffffffffffffffffffffffffffffffffffffff166115d6611670565b73ffffffffffffffffffffffffffffffffffffffff161461162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390614e77565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546116a89061520c565b80601f01602080910402602001604051908101604052809291908181526020018280546116d49061520c565b80156117215780601f106116f657610100808354040283529160200191611721565b820191906000526020600020905b81548152906001019060200180831161170457829003601f168201915b5050505050905090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178a57600190506117da565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b60006118a26117ec61253e565b8461189d8560405180606001604052806025815260200161581f602591396003600061181661253e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c379092919063ffffffff16565b612546565b6001905092915050565b6118b461253e565b73ffffffffffffffffffffffffffffffffffffffff166118d2611670565b73ffffffffffffffffffffffffffffffffffffffff1614611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614e77565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61198b61253e565b73ffffffffffffffffffffffffffffffffffffffff166119a9611670565b73ffffffffffffffffffffffffffffffffffffffff16146119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690614e77565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611a6e611a6761253e565b8484612711565b6001905092915050565b611a8061253e565b73ffffffffffffffffffffffffffffffffffffffff16611a9e611670565b73ffffffffffffffffffffffffffffffffffffffff1614611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90614e77565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c3461253e565b73ffffffffffffffffffffffffffffffffffffffff16611c52611670565b73ffffffffffffffffffffffffffffffffffffffff1614611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f90614e77565b60405180910390fd5b80601460016101000a81548160ff02191690831515021790555050565b611ccd61253e565b73ffffffffffffffffffffffffffffffffffffffff16611ceb611670565b73ffffffffffffffffffffffffffffffffffffffff1614611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3890614e77565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614ef7565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890614dd7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f2557611ee1600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dd7565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611feb61253e565b73ffffffffffffffffffffffffffffffffffffffff16612009611670565b73ffffffffffffffffffffffffffffffffffffffff161461205f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205690614e77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c690614d97565b60405180910390fd5b6120d881613057565b50565b6120e361253e565b73ffffffffffffffffffffffffffffffffffffffff16612101611670565b73ffffffffffffffffffffffffffffffffffffffff1614612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e90614e77565b60405180910390fd5b60004790506121658161311b565b50565b600047905090565b61217861253e565b73ffffffffffffffffffffffffffffffffffffffff16612196611670565b73ffffffffffffffffffffffffffffffffffffffff16146121ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e390614e77565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f90614dd7565b60405180910390fd5b60005b60068054905081101561253a578173ffffffffffffffffffffffffffffffffffffffff16600682815481106122d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561252757600660016006805490506123349190615108565b8154811061236b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600682815481106123d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060068054806124ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561253a565b80806125329061523e565b91505061227b565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90614ed7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90614db7565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127049190614f37565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277890614eb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e890614d37565b60405180910390fd5b60008111612834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282b90614e97565b60405180910390fd5b61283c611670565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128aa575061287a611670565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128f5576015548111156128f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb90614e57565b60405180910390fd5b5b60006129003061143d565b905060155481106129115760155490505b60006016548210159050601460009054906101000a900460ff161580156129445750601460019054906101000a900460ff165b801561294d5750805b80156129f857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806129f75750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15612a2057612a0682612d63565b60004790506000811115612a1e57612a1d4761311b565b5b505b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480612ac757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80612b1b5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b6f5750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612c195750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c175750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b15612c2357600190505b612c2f8686868461325a565b505050505050565b6000838311158290612c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c769190614cf5565b60405180910390fd5b5082840390509392505050565b6000806000612c996134b1565b91509150612cb08183612cb790919063ffffffff16565b9250505090565b60008183612cc5919061507d565b905092915050565b60008183612cdb9190615027565b905092915050565b6000806000806000806000806000612d018b600d54600e548d6137fc565b9250925092506000612d11612c8c565b90506000806000612d248f8787876138ff565b9250925092508282828989899c509c509c509c509c509c50505050505050509295509295509295565b60008183612d5b9190615108565b905092915050565b6001601460006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612def5781602001602082028036833780820191505090505b5090503081600081518110612e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ecd57600080fd5b505afa158015612ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0591906146cb565b81600181518110612f3f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fa4307f000000000000000000000000000000000000000000000000000000000000000084612546565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613006959493929190614f52565b600060405180830381600087803b15801561302057600080fd5b505af1158015613034573d6000803e3d6000fd5b50505050506000601460006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613168600283612cb790919063ffffffff16565b60405161317490614c74565b60006040518083038185875af1925050503d80600081146131b1576040519150601f19603f3d011682016040523d82523d6000602084013e6131b6565b606091505b505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613206600283612cb790919063ffffffff16565b60405161321290614c74565b60006040518083038185875af1925050503d806000811461324f576040519150601f19603f3d011682016040523d82523d6000602084013e613254565b606091505b50505050565b8061326857613267613988565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561330b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133205761331b8484846139cb565b61349d565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133c35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133d8576133d3848484613c34565b61349c565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561347a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561348f5761348a848484613e9d565b61349b565b61349a84848461419b565b5b5b5b806134ab576134aa61436f565b5b50505050565b600080600060085490506000600754905060005b6006805490508110156137bf57826001600060068481548110613511577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061362557508160026000600684815481106135bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561363c57600854600754945094505050506137f8565b6136f2600160006006848154811061367d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612d4d90919063ffffffff16565b92506137aa6002600060068481548110613735577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612d4d90919063ffffffff16565b915080806137b79061523e565b9150506134c5565b506137d7600754600854612cb790919063ffffffff16565b8210156137ef576008546007549350935050506137f8565b81819350935050505b9091565b6000806000808461380d5786613833565b613832601460029054906101000a900460ff1660ff168861438390919063ffffffff16565b5b90506000856138425786613868565b613867601460029054906101000a900460ff1660ff168861438390919063ffffffff16565b5b905060006138926064613884858d61438390919063ffffffff16565b612cb790919063ffffffff16565b905060006138bc60646138ae858e61438390919063ffffffff16565b612cb790919063ffffffff16565b905060006138e5826138d7858f612d4d90919063ffffffff16565b612d4d90919063ffffffff16565b905080838397509750975050505050509450945094915050565b600080600080613918858961438390919063ffffffff16565b9050600061392f868961438390919063ffffffff16565b90506000613946878961438390919063ffffffff16565b9050600061396f826139618587612d4d90919063ffffffff16565b612d4d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600d5414801561399c57506000600e54145b156139a6576139c9565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806139e6876139e18a614399565b612ce3565b955095509550955095509550613a4487600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad986600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b6e85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bba81614445565b613bc484836145ea565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c219190614f37565b60405180910390a3505050505050505050565b600080600080600080613c4f87613c4a8a614399565b612ce3565b955095509550955095509550613cad86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4283600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dd785600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e2381614445565b613e2d84836145ea565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e8a9190614f37565b60405180910390a3505050505050505050565b600080600080600080613eb887613eb38a614399565b612ce3565b955095509550955095509550613f1687600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fab86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061404083600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140d585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061412181614445565b61412b84836145ea565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516141889190614f37565b60405180910390a3505050505050505050565b6000806000806000806141b6876141b18a614399565b612ce3565b95509550955095509550955061421486600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142a985600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142f581614445565b6142ff84836145ea565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161435c9190614f37565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b6000818361439191906150ae565b905092915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061443e5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b600061444f612c8c565b90506000614466828461438390919063ffffffff16565b90506144ba81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156145e5576145a183600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6145ff82600854612d4d90919063ffffffff16565b60088190555061461a81600954612ccd90919063ffffffff16565b6009819055505050565b60008135905061463381615783565b92915050565b60008151905061464881615783565b92915050565b60008135905061465d8161579a565b92915050565b600081359050614672816157b1565b92915050565b600081359050614687816157c8565b92915050565b60008135905061469c816157df565b92915050565b6000602082840312156146b457600080fd5b60006146c284828501614624565b91505092915050565b6000602082840312156146dd57600080fd5b60006146eb84828501614639565b91505092915050565b60006020828403121561470657600080fd5b60006147148482850161464e565b91505092915050565b6000806040838503121561473057600080fd5b600061473e85828601614624565b925050602061474f85828601614624565b9150509250929050565b60008060006060848603121561476e57600080fd5b600061477c86828701614624565b935050602061478d86828701614624565b925050604061479e86828701614678565b9150509250925092565b600080604083850312156147bb57600080fd5b60006147c985828601614624565b92505060206147da85828601614663565b9150509250929050565b600080604083850312156147f757600080fd5b600061480585828601614624565b925050602061481685828601614678565b9150509250929050565b60006020828403121561483257600080fd5b600061484084828501614663565b91505092915050565b60006020828403121561485b57600080fd5b600061486984828501614678565b91505092915050565b6000806040838503121561488557600080fd5b600061489385828601614678565b92505060206148a485828601614663565b9150509250929050565b6000602082840312156148c057600080fd5b60006148ce8482850161468d565b91505092915050565b60006148e383836148fe565b60208301905092915050565b6148f88161514e565b82525050565b6149078161513c565b82525050565b6149168161513c565b82525050565b600061492782614fd7565b6149318185614ffa565b935061493c83614fc7565b8060005b8381101561496d57815161495488826148d7565b975061495f83614fed565b925050600181019050614940565b5085935050505092915050565b61498381615160565b82525050565b614992816151a3565b82525050565b6149a1816151c7565b82525050565b60006149b282614fe2565b6149bc8185615016565b93506149cc8185602086016151d9565b6149d581615314565b840191505092915050565b60006149ed601983615016565b91506149f882615325565b602082019050919050565b6000614a10602383615016565b9150614a1b8261534e565b604082019050919050565b6000614a33601a83615016565b9150614a3e8261539d565b602082019050919050565b6000614a56602a83615016565b9150614a61826153c6565b604082019050919050565b6000614a79602683615016565b9150614a8482615415565b604082019050919050565b6000614a9c602283615016565b9150614aa782615464565b604082019050919050565b6000614abf601b83615016565b9150614aca826154b3565b602082019050919050565b6000614ae2603483615016565b9150614aed826154dc565b604082019050919050565b6000614b05601d83615016565b9150614b108261552b565b602082019050919050565b6000614b28601f83615016565b9150614b3382615554565b602082019050919050565b6000614b4b602883615016565b9150614b568261557d565b604082019050919050565b6000614b6e602083615016565b9150614b79826155cc565b602082019050919050565b6000614b91602983615016565b9150614b9c826155f5565b604082019050919050565b6000614bb4602583615016565b9150614bbf82615644565b604082019050919050565b6000614bd760008361500b565b9150614be282615693565b600082019050919050565b6000614bfa602483615016565b9150614c0582615696565b604082019050919050565b6000614c1d602283615016565b9150614c28826156e5565b604082019050919050565b6000614c40602c83615016565b9150614c4b82615734565b604082019050919050565b614c5f8161518c565b82525050565b614c6e81615196565b82525050565b6000614c7f82614bca565b9150819050919050565b6000602082019050614c9e600083018461490d565b92915050565b6000602082019050614cb960008301846148ef565b92915050565b6000602082019050614cd4600083018461497a565b92915050565b6000602082019050614cef6000830184614989565b92915050565b60006020820190508181036000830152614d0f81846149a7565b905092915050565b60006020820190508181036000830152614d30816149e0565b9050919050565b60006020820190508181036000830152614d5081614a03565b9050919050565b60006020820190508181036000830152614d7081614a26565b9050919050565b60006020820190508181036000830152614d9081614a49565b9050919050565b60006020820190508181036000830152614db081614a6c565b9050919050565b60006020820190508181036000830152614dd081614a8f565b9050919050565b60006020820190508181036000830152614df081614ab2565b9050919050565b60006020820190508181036000830152614e1081614ad5565b9050919050565b60006020820190508181036000830152614e3081614af8565b9050919050565b60006020820190508181036000830152614e5081614b1b565b9050919050565b60006020820190508181036000830152614e7081614b3e565b9050919050565b60006020820190508181036000830152614e9081614b61565b9050919050565b60006020820190508181036000830152614eb081614b84565b9050919050565b60006020820190508181036000830152614ed081614ba7565b9050919050565b60006020820190508181036000830152614ef081614bed565b9050919050565b60006020820190508181036000830152614f1081614c10565b9050919050565b60006020820190508181036000830152614f3081614c33565b9050919050565b6000602082019050614f4c6000830184614c56565b92915050565b600060a082019050614f676000830188614c56565b614f746020830187614998565b8181036040830152614f86818661491c565b9050614f95606083018561490d565b614fa26080830184614c56565b9695505050505050565b6000602082019050614fc16000830184614c65565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006150328261518c565b915061503d8361518c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561507257615071615287565b5b828201905092915050565b60006150888261518c565b91506150938361518c565b9250826150a3576150a26152b6565b5b828204905092915050565b60006150b98261518c565b91506150c48361518c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150fd576150fc615287565b5b828202905092915050565b60006151138261518c565b915061511e8361518c565b92508282101561513157615130615287565b5b828203905092915050565b60006151478261516c565b9050919050565b60006151598261516c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006151ae826151b5565b9050919050565b60006151c08261516c565b9050919050565b60006151d28261518c565b9050919050565b60005b838110156151f75780820151818401526020810190506151dc565b83811115615206576000848401525b50505050565b6000600282049050600182168061522457607f821691505b60208210811415615238576152376152e5565b5b50919050565b60006152498261518c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561527c5761527b615287565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f7461784665652073686f756c6420626520696e2030202d203500000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2030202d2035000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f6d756c7469706c6965722073686f756c6420626520696e2031202d2033000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61578c8161513c565b811461579757600080fd5b50565b6157a38161514e565b81146157ae57600080fd5b50565b6157ba81615160565b81146157c557600080fd5b50565b6157d18161518c565b81146157dc57600080fd5b50565b6157e881615196565b81146157f357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207a18304238ad5cbc0635bcf6e98b66cc3a9dfc11bad2cb603ecee8c6ee994a2564736f6c634300080400330000000000000000000000009707cbbcfd356c37a69f938cedfc211ea3b548e6000000000000000000000000a73303c8412baf5f621738002080a6ee60737677
Deployed Bytecode
0x60806040526004361061024a5760003560e01c80635880b87311610139578063a7f404e2116100b6578063e01af92c1161007a578063e01af92c146108d3578063f2cc0c18146108fc578063f2fde38b14610925578063f42938901461094e578063f815a84214610965578063f84354f11461099057610251565b8063a7f404e2146107ca578063a9059cbb146107f3578063af9549e014610830578063cba0e99614610859578063dd62ed3e1461089657610251565b80638da5cb5b116100fd5780638da5cb5b146106d157806395d89b41146106fc5780639cece12e14610727578063a457c2d714610764578063a6931ed7146107a157610251565b80635880b873146106005780636ddd17131461062957806370a0823114610654578063715018a6146106915780637775ae6e146106a857610251565b8063303adcd8116101c75780634549b0391161018b5780634549b0391461051957806349bd5a5e146105565780634db6f9cf1461058157806351bc3c85146105ac5780635342acb4146105c357610251565b8063303adcd814610434578063313ce5671461045d57806339509351146104885780633bd5d173146104c55780634144d9e4146104ee57610251565b80631bbae6e01161020e5780631bbae6e01461033f5780631ff53b601461036857806323b872dd1461039157806328667162146103ce5780632d838119146103f757610251565b806306fdde0314610256578063095ea7b31461028157806313114a9d146102be5780631694505e146102e957806318160ddd1461031457610251565b3661025157005b600080fd5b34801561026257600080fd5b5061026b6109b9565b6040516102789190614cf5565b60405180910390f35b34801561028d57600080fd5b506102a860048036038101906102a391906147e4565b610a4b565b6040516102b59190614cbf565b60405180910390f35b3480156102ca57600080fd5b506102d3610a69565b6040516102e09190614f37565b60405180910390f35b3480156102f557600080fd5b506102fe610a73565b60405161030b9190614cda565b60405180910390f35b34801561032057600080fd5b50610329610a97565b6040516103369190614f37565b60405180910390f35b34801561034b57600080fd5b5061036660048036038101906103619190614849565b610aa1565b005b34801561037457600080fd5b5061038f600480360381019061038a91906146f4565b610b74565b005b34801561039d57600080fd5b506103b860048036038101906103b39190614759565b610c34565b6040516103c59190614cbf565b60405180910390f35b3480156103da57600080fd5b506103f560048036038101906103f09190614849565b610d0d565b005b34801561040357600080fd5b5061041e60048036038101906104199190614849565b610dd7565b60405161042b9190614f37565b60405180910390f35b34801561044057600080fd5b5061045b600480360381019061045691906148ae565b610e45565b005b34801561046957600080fd5b50610472610f36565b60405161047f9190614fac565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa91906147e4565b610f4d565b6040516104bc9190614cbf565b60405180910390f35b3480156104d157600080fd5b506104ec60048036038101906104e79190614849565b611000565b005b3480156104fa57600080fd5b5061050361117d565b6040516105109190614ca4565b60405180910390f35b34801561052557600080fd5b50610540600480360381019061053b9190614872565b6111a3565b60405161054d9190614f37565b60405180910390f35b34801561056257600080fd5b5061056b61122b565b6040516105789190614c89565b60405180910390f35b34801561058d57600080fd5b5061059661124f565b6040516105a39190614ca4565b60405180910390f35b3480156105b857600080fd5b506105c1611275565b005b3480156105cf57600080fd5b506105ea60048036038101906105e591906146a2565b61130a565b6040516105f79190614cbf565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190614849565b611360565b005b34801561063557600080fd5b5061063e61142a565b60405161064b9190614cbf565b60405180910390f35b34801561066057600080fd5b5061067b600480360381019061067691906146a2565b61143d565b6040516106889190614f37565b60405180910390f35b34801561069d57600080fd5b506106a6611528565b005b3480156106b457600080fd5b506106cf60048036038101906106ca91906146f4565b6115b0565b005b3480156106dd57600080fd5b506106e6611670565b6040516106f39190614c89565b60405180910390f35b34801561070857600080fd5b50610711611699565b60405161071e9190614cf5565b60405180910390f35b34801561073357600080fd5b5061074e600480360381019061074991906146a2565b61172b565b60405161075b9190614cbf565b60405180910390f35b34801561077057600080fd5b5061078b600480360381019061078691906147e4565b6117df565b6040516107989190614cbf565b60405180910390f35b3480156107ad57600080fd5b506107c860048036038101906107c391906146a2565b6118ac565b005b3480156107d657600080fd5b506107f160048036038101906107ec91906146a2565b611983565b005b3480156107ff57600080fd5b5061081a600480360381019061081591906147e4565b611a5a565b6040516108279190614cbf565b60405180910390f35b34801561083c57600080fd5b50610857600480360381019061085291906147a8565b611a78565b005b34801561086557600080fd5b50610880600480360381019061087b91906146a2565b611b4f565b60405161088d9190614cbf565b60405180910390f35b3480156108a257600080fd5b506108bd60048036038101906108b8919061471d565b611ba5565b6040516108ca9190614f37565b60405180910390f35b3480156108df57600080fd5b506108fa60048036038101906108f59190614820565b611c2c565b005b34801561090857600080fd5b50610923600480360381019061091e91906146a2565b611cc5565b005b34801561093157600080fd5b5061094c600480360381019061094791906146a2565b611fe3565b005b34801561095a57600080fd5b506109636120db565b005b34801561097157600080fd5b5061097a612168565b6040516109879190614f37565b60405180910390f35b34801561099c57600080fd5b506109b760048036038101906109b291906146a2565b612170565b005b6060600a80546109c89061520c565b80601f01602080910402602001604051908101604052809291908181526020018280546109f49061520c565b8015610a415780601f10610a1657610100808354040283529160200191610a41565b820191906000526020600020905b815481529060010190602001808311610a2457829003601f168201915b5050505050905090565b6000610a5f610a5861253e565b8484612546565b6001905092915050565b6000600954905090565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b610aa961253e565b73ffffffffffffffffffffffffffffffffffffffff16610ac7611670565b73ffffffffffffffffffffffffffffffffffffffff1614610b1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1490614e77565b60405180910390fd5b69152d02c7e14af6800000811015610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190614df7565b60405180910390fd5b8060158190555050565b610b7c61253e565b73ffffffffffffffffffffffffffffffffffffffff16610b9a611670565b73ffffffffffffffffffffffffffffffffffffffff1614610bf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be790614e77565b60405180910390fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610c41848484612711565b610d0284610c4d61253e565b610cfd856040518060600160405280602881526020016157f760289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610cb361253e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c379092919063ffffffff16565b612546565b600190509392505050565b610d1561253e565b73ffffffffffffffffffffffffffffffffffffffff16610d33611670565b73ffffffffffffffffffffffffffffffffffffffff1614610d89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8090614e77565b60405180910390fd5b6005811115610dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc490614d57565b60405180910390fd5b80600e8190555050565b6000600854821115610e1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1590614d77565b60405180910390fd5b6000610e28612c8c565b9050610e3d8184612cb790919063ffffffff16565b915050919050565b610e4d61253e565b73ffffffffffffffffffffffffffffffffffffffff16610e6b611670565b73ffffffffffffffffffffffffffffffffffffffff1614610ec1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb890614e77565b60405180910390fd5b60018160ff1610158015610ed9575060038160ff1611155b610f18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0f90614e17565b60405180910390fd5b80601460026101000a81548160ff021916908360ff16021790555050565b6000600c60009054906101000a900460ff16905090565b6000610ff6610f5a61253e565b84610ff18560036000610f6b61253e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b612546565b6001905092915050565b600061100a61253e565b9050600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109090614f17565b60405180910390fd5b60006110a6836000612ce3565b505050505090506110ff81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061115781600854612d4d90919063ffffffff16565b60088190555061117283600954612ccd90919063ffffffff16565b600981905550505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006007548311156111ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e190614e37565b60405180910390fd5b8161120c5760006111fc846000612ce3565b5050505050905080915050611225565b6000611219846000612ce3565b50505050915050809150505b92915050565b7f0000000000000000000000007a8872c9a087543ec9f82c562326b39703c38d5581565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61127d61253e565b73ffffffffffffffffffffffffffffffffffffffff1661129b611670565b73ffffffffffffffffffffffffffffffffffffffff16146112f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e890614e77565b60405180910390fd5b60006112fc3061143d565b905061130781612d63565b50565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61136861253e565b73ffffffffffffffffffffffffffffffffffffffff16611386611670565b73ffffffffffffffffffffffffffffffffffffffff16146113dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d390614e77565b60405180910390fd5b6005811115611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790614d17565b60405180910390fd5b80600d8190555050565b601460019054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114d857600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611523565b611520600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dd7565b90505b919050565b61153061253e565b73ffffffffffffffffffffffffffffffffffffffff1661154e611670565b73ffffffffffffffffffffffffffffffffffffffff16146115a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159b90614e77565b60405180910390fd5b6115ae6000613057565b565b6115b861253e565b73ffffffffffffffffffffffffffffffffffffffff166115d6611670565b73ffffffffffffffffffffffffffffffffffffffff161461162c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162390614e77565b60405180910390fd5b80601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600b80546116a89061520c565b80601f01602080910402602001604051908101604052809291908181526020018280546116d49061520c565b80156117215780601f106116f657610100808354040283529160200191611721565b820191906000526020600020905b81548152906001019060200180831161170457829003601f168201915b5050505050905090565b60007f0000000000000000000000007a8872c9a087543ec9f82c562326b39703c38d5573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561178a57600190506117da565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690505b919050565b60006118a26117ec61253e565b8461189d8560405180606001604052806025815260200161581f602591396003600061181661253e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c379092919063ffffffff16565b612546565b6001905092915050565b6118b461253e565b73ffffffffffffffffffffffffffffffffffffffff166118d2611670565b73ffffffffffffffffffffffffffffffffffffffff1614611928576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191f90614e77565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61198b61253e565b73ffffffffffffffffffffffffffffffffffffffff166119a9611670565b73ffffffffffffffffffffffffffffffffffffffff16146119ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f690614e77565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611a6e611a6761253e565b8484612711565b6001905092915050565b611a8061253e565b73ffffffffffffffffffffffffffffffffffffffff16611a9e611670565b73ffffffffffffffffffffffffffffffffffffffff1614611af4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aeb90614e77565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c3461253e565b73ffffffffffffffffffffffffffffffffffffffff16611c52611670565b73ffffffffffffffffffffffffffffffffffffffff1614611ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9f90614e77565b60405180910390fd5b80601460016101000a81548160ff02191690831515021790555050565b611ccd61253e565b73ffffffffffffffffffffffffffffffffffffffff16611ceb611670565b73ffffffffffffffffffffffffffffffffffffffff1614611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3890614e77565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbb90614ef7565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4890614dd7565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f2557611ee1600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610dd7565b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506006819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611feb61253e565b73ffffffffffffffffffffffffffffffffffffffff16612009611670565b73ffffffffffffffffffffffffffffffffffffffff161461205f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205690614e77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156120cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120c690614d97565b60405180910390fd5b6120d881613057565b50565b6120e361253e565b73ffffffffffffffffffffffffffffffffffffffff16612101611670565b73ffffffffffffffffffffffffffffffffffffffff1614612157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214e90614e77565b60405180910390fd5b60004790506121658161311b565b50565b600047905090565b61217861253e565b73ffffffffffffffffffffffffffffffffffffffff16612196611670565b73ffffffffffffffffffffffffffffffffffffffff16146121ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e390614e77565b60405180910390fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f90614dd7565b60405180910390fd5b60005b60068054905081101561253a578173ffffffffffffffffffffffffffffffffffffffff16600682815481106122d9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561252757600660016006805490506123349190615108565b8154811061236b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600682815481106123d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060068054806124ed577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561253a565b80806125329061523e565b91505061227b565b5050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125ad90614ed7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90614db7565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516127049190614f37565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161277890614eb7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e890614d37565b60405180910390fd5b60008111612834576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161282b90614e97565b60405180910390fd5b61283c611670565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128aa575061287a611670565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128f5576015548111156128f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb90614e57565b60405180910390fd5b5b60006129003061143d565b905060155481106129115760155490505b60006016548210159050601460009054906101000a900460ff161580156129445750601460019054906101000a900460ff165b801561294d5750805b80156129f857507f0000000000000000000000007a8872c9a087543ec9f82c562326b39703c38d5573ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806129f75750601360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b5b15612a2057612a0682612d63565b60004790506000811115612a1e57612a1d4761311b565b5b505b60007f0000000000000000000000007a8872c9a087543ec9f82c562326b39703c38d5573ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480612ac757507f0000000000000000000000007a8872c9a087543ec9f82c562326b39703c38d5573ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80612b1b5750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612b6f5750601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8015612c195750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612c175750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b155b15612c2357600190505b612c2f8686868461325a565b505050505050565b6000838311158290612c7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c769190614cf5565b60405180910390fd5b5082840390509392505050565b6000806000612c996134b1565b91509150612cb08183612cb790919063ffffffff16565b9250505090565b60008183612cc5919061507d565b905092915050565b60008183612cdb9190615027565b905092915050565b6000806000806000806000806000612d018b600d54600e548d6137fc565b9250925092506000612d11612c8c565b90506000806000612d248f8787876138ff565b9250925092508282828989899c509c509c509c509c509c50505050505050509295509295509295565b60008183612d5b9190615108565b905092915050565b6001601460006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612def5781602001602082028036833780820191505090505b5090503081600081518110612e2d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612ecd57600080fd5b505afa158015612ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0591906146cb565b81600181518110612f3f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612fa4307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612546565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613006959493929190614f52565b600060405180830381600087803b15801561302057600080fd5b505af1158015613034573d6000803e3d6000fd5b50505050506000601460006101000a81548160ff02191690831515021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613168600283612cb790919063ffffffff16565b60405161317490614c74565b60006040518083038185875af1925050503d80600081146131b1576040519150601f19603f3d011682016040523d82523d6000602084013e6131b6565b606091505b505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16613206600283612cb790919063ffffffff16565b60405161321290614c74565b60006040518083038185875af1925050503d806000811461324f576040519150601f19603f3d011682016040523d82523d6000602084013e613254565b606091505b50505050565b8061326857613267613988565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561330b5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156133205761331b8484846139cb565b61349d565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133c35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156133d8576133d3848484613c34565b61349c565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561347a5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561348f5761348a848484613e9d565b61349b565b61349a84848461419b565b5b5b5b806134ab576134aa61436f565b5b50505050565b600080600060085490506000600754905060005b6006805490508110156137bf57826001600060068481548110613511577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061362557508160026000600684815481106135bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561363c57600854600754945094505050506137f8565b6136f2600160006006848154811061367d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612d4d90919063ffffffff16565b92506137aa6002600060068481548110613735577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612d4d90919063ffffffff16565b915080806137b79061523e565b9150506134c5565b506137d7600754600854612cb790919063ffffffff16565b8210156137ef576008546007549350935050506137f8565b81819350935050505b9091565b6000806000808461380d5786613833565b613832601460029054906101000a900460ff1660ff168861438390919063ffffffff16565b5b90506000856138425786613868565b613867601460029054906101000a900460ff1660ff168861438390919063ffffffff16565b5b905060006138926064613884858d61438390919063ffffffff16565b612cb790919063ffffffff16565b905060006138bc60646138ae858e61438390919063ffffffff16565b612cb790919063ffffffff16565b905060006138e5826138d7858f612d4d90919063ffffffff16565b612d4d90919063ffffffff16565b905080838397509750975050505050509450945094915050565b600080600080613918858961438390919063ffffffff16565b9050600061392f868961438390919063ffffffff16565b90506000613946878961438390919063ffffffff16565b9050600061396f826139618587612d4d90919063ffffffff16565b612d4d90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000600d5414801561399c57506000600e54145b156139a6576139c9565b600d54600f81905550600e546010819055506000600d819055506000600e819055505b565b6000806000806000806139e6876139e18a614399565b612ce3565b955095509550955095509550613a4487600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ad986600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b6e85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bba81614445565b613bc484836145ea565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c219190614f37565b60405180910390a3505050505050505050565b600080600080600080613c4f87613c4a8a614399565b612ce3565b955095509550955095509550613cad86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d4283600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dd785600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e2381614445565b613e2d84836145ea565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613e8a9190614f37565b60405180910390a3505050505050505050565b600080600080600080613eb887613eb38a614399565b612ce3565b955095509550955095509550613f1687600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fab86600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061404083600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140d585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061412181614445565b61412b84836145ea565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516141889190614f37565b60405180910390a3505050505050505050565b6000806000806000806141b6876141b18a614399565b612ce3565b95509550955095509550955061421486600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d4d90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142a985600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142f581614445565b6142ff84836145ea565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161435c9190614f37565b60405180910390a3505050505050505050565b600f54600d81905550601054600e81905550565b6000818361439191906150ae565b905092915050565b60007f0000000000000000000000007a8872c9a087543ec9f82c562326b39703c38d5573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061443e5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b9050919050565b600061444f612c8c565b90506000614466828461438390919063ffffffff16565b90506144ba81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156145e5576145a183600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ccd90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6145ff82600854612d4d90919063ffffffff16565b60088190555061461a81600954612ccd90919063ffffffff16565b6009819055505050565b60008135905061463381615783565b92915050565b60008151905061464881615783565b92915050565b60008135905061465d8161579a565b92915050565b600081359050614672816157b1565b92915050565b600081359050614687816157c8565b92915050565b60008135905061469c816157df565b92915050565b6000602082840312156146b457600080fd5b60006146c284828501614624565b91505092915050565b6000602082840312156146dd57600080fd5b60006146eb84828501614639565b91505092915050565b60006020828403121561470657600080fd5b60006147148482850161464e565b91505092915050565b6000806040838503121561473057600080fd5b600061473e85828601614624565b925050602061474f85828601614624565b9150509250929050565b60008060006060848603121561476e57600080fd5b600061477c86828701614624565b935050602061478d86828701614624565b925050604061479e86828701614678565b9150509250925092565b600080604083850312156147bb57600080fd5b60006147c985828601614624565b92505060206147da85828601614663565b9150509250929050565b600080604083850312156147f757600080fd5b600061480585828601614624565b925050602061481685828601614678565b9150509250929050565b60006020828403121561483257600080fd5b600061484084828501614663565b91505092915050565b60006020828403121561485b57600080fd5b600061486984828501614678565b91505092915050565b6000806040838503121561488557600080fd5b600061489385828601614678565b92505060206148a485828601614663565b9150509250929050565b6000602082840312156148c057600080fd5b60006148ce8482850161468d565b91505092915050565b60006148e383836148fe565b60208301905092915050565b6148f88161514e565b82525050565b6149078161513c565b82525050565b6149168161513c565b82525050565b600061492782614fd7565b6149318185614ffa565b935061493c83614fc7565b8060005b8381101561496d57815161495488826148d7565b975061495f83614fed565b925050600181019050614940565b5085935050505092915050565b61498381615160565b82525050565b614992816151a3565b82525050565b6149a1816151c7565b82525050565b60006149b282614fe2565b6149bc8185615016565b93506149cc8185602086016151d9565b6149d581615314565b840191505092915050565b60006149ed601983615016565b91506149f882615325565b602082019050919050565b6000614a10602383615016565b9150614a1b8261534e565b604082019050919050565b6000614a33601a83615016565b9150614a3e8261539d565b602082019050919050565b6000614a56602a83615016565b9150614a61826153c6565b604082019050919050565b6000614a79602683615016565b9150614a8482615415565b604082019050919050565b6000614a9c602283615016565b9150614aa782615464565b604082019050919050565b6000614abf601b83615016565b9150614aca826154b3565b602082019050919050565b6000614ae2603483615016565b9150614aed826154dc565b604082019050919050565b6000614b05601d83615016565b9150614b108261552b565b602082019050919050565b6000614b28601f83615016565b9150614b3382615554565b602082019050919050565b6000614b4b602883615016565b9150614b568261557d565b604082019050919050565b6000614b6e602083615016565b9150614b79826155cc565b602082019050919050565b6000614b91602983615016565b9150614b9c826155f5565b604082019050919050565b6000614bb4602583615016565b9150614bbf82615644565b604082019050919050565b6000614bd760008361500b565b9150614be282615693565b600082019050919050565b6000614bfa602483615016565b9150614c0582615696565b604082019050919050565b6000614c1d602283615016565b9150614c28826156e5565b604082019050919050565b6000614c40602c83615016565b9150614c4b82615734565b604082019050919050565b614c5f8161518c565b82525050565b614c6e81615196565b82525050565b6000614c7f82614bca565b9150819050919050565b6000602082019050614c9e600083018461490d565b92915050565b6000602082019050614cb960008301846148ef565b92915050565b6000602082019050614cd4600083018461497a565b92915050565b6000602082019050614cef6000830184614989565b92915050565b60006020820190508181036000830152614d0f81846149a7565b905092915050565b60006020820190508181036000830152614d30816149e0565b9050919050565b60006020820190508181036000830152614d5081614a03565b9050919050565b60006020820190508181036000830152614d7081614a26565b9050919050565b60006020820190508181036000830152614d9081614a49565b9050919050565b60006020820190508181036000830152614db081614a6c565b9050919050565b60006020820190508181036000830152614dd081614a8f565b9050919050565b60006020820190508181036000830152614df081614ab2565b9050919050565b60006020820190508181036000830152614e1081614ad5565b9050919050565b60006020820190508181036000830152614e3081614af8565b9050919050565b60006020820190508181036000830152614e5081614b1b565b9050919050565b60006020820190508181036000830152614e7081614b3e565b9050919050565b60006020820190508181036000830152614e9081614b61565b9050919050565b60006020820190508181036000830152614eb081614b84565b9050919050565b60006020820190508181036000830152614ed081614ba7565b9050919050565b60006020820190508181036000830152614ef081614bed565b9050919050565b60006020820190508181036000830152614f1081614c10565b9050919050565b60006020820190508181036000830152614f3081614c33565b9050919050565b6000602082019050614f4c6000830184614c56565b92915050565b600060a082019050614f676000830188614c56565b614f746020830187614998565b8181036040830152614f86818661491c565b9050614f95606083018561490d565b614fa26080830184614c56565b9695505050505050565b6000602082019050614fc16000830184614c65565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006150328261518c565b915061503d8361518c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561507257615071615287565b5b828201905092915050565b60006150888261518c565b91506150938361518c565b9250826150a3576150a26152b6565b5b828204905092915050565b60006150b98261518c565b91506150c48361518c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150fd576150fc615287565b5b828202905092915050565b60006151138261518c565b915061511e8361518c565b92508282101561513157615130615287565b5b828203905092915050565b60006151478261516c565b9050919050565b60006151598261516c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006151ae826151b5565b9050919050565b60006151c08261516c565b9050919050565b60006151d28261518c565b9050919050565b60005b838110156151f75780820151818401526020810190506151dc565b83811115615206576000848401525b50505050565b6000600282049050600182168061522457607f821691505b60208210811415615238576152376152e5565b5b50919050565b60006152498261518c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561527c5761527b615287565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f7461784665652073686f756c6420626520696e2030202d203500000000000000600082015250565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f7465616d4665652073686f756c6420626520696e2030202d2035000000000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f4163636f756e7420697320616c7265616479206578636c756465640000000000600082015250565b7f6d61785478416d6f756e742073686f756c64206265206772656174657220746860008201527f616e203130303030303030303030303030306539000000000000000000000000602082015250565b7f6d756c7469706c6965722073686f756c6420626520696e2031202d2033000000600082015250565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b50565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b7f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008201527f6869732066756e6374696f6e0000000000000000000000000000000000000000602082015250565b61578c8161513c565b811461579757600080fd5b50565b6157a38161514e565b81146157ae57600080fd5b50565b6157ba81615160565b81146157c557600080fd5b50565b6157d18161518c565b81146157dc57600080fd5b50565b6157e881615196565b81146157f357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212207a18304238ad5cbc0635bcf6e98b66cc3a9dfc11bad2cb603ecee8c6ee994a2564736f6c63430008040033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009707cbbcfd356c37a69f938cedfc211ea3b548e6000000000000000000000000a73303c8412baf5f621738002080a6ee60737677
-----Decoded View---------------
Arg [0] : NFTWalletAddress (address): 0x9707CbBcFD356c37a69f938CEDFC211EA3B548E6
Arg [1] : marketingWalletAddress (address): 0xa73303C8412bAF5F621738002080A6ee60737677
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009707cbbcfd356c37a69f938cedfc211ea3b548e6
Arg [1] : 000000000000000000000000a73303c8412baf5f621738002080a6ee60737677
Deployed Bytecode Sourcemap
28880:18718:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31456:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32345:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33756:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29867:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31709:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46990:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;46822:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32520:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46362:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34676:239;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46514:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31626:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32900:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33843:384;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29814:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34233:437;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29923:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29769:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39352:144;;;;;;;;;;;;;:::i;:::-;;36084:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;46216:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30044:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31804:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12352:94;;;;;;;;;;;;;:::i;:::-;;46691:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11701:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31539:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47225:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33160:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;47490:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;47385:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31998:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33608:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33498:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32179:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39652:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34921:431;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12601:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39502:144;;;;;;;;;;;;;:::i;:::-;;46105:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35358:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31456:77;31493:13;31522:5;31515:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31456:77;:::o;32345:169::-;32435:4;32451:39;32460:12;:10;:12::i;:::-;32474:7;32483:6;32451:8;:39::i;:::-;32504:4;32497:11;;32345:169;;;;:::o;33756:81::-;33798:7;33821:10;;33814:17;;33756:81;:::o;29867:51::-;;;:::o;31709:89::-;31762:7;31785;;31778:14;;31709:89;:::o;46990:229::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47093:17:::1;47078:11;:32;;47062:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;47202:11;47187:12;:26;;;;46990:229:::0;:::o;46822:162::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46956:22:::1;46930:23;;:48;;;;;;;;;;;;;;;;;;46822:162:::0;:::o;32520:374::-;32638:4;32651:36;32661:6;32669:9;32680:6;32651:9;:36::i;:::-;32694:176;32711:6;32726:12;:10;:12::i;:::-;32747:116;32795:6;32747:116;;;;;;;;;;;;;;;;;:11;:19;32759:6;32747:19;;;;;;;;;;;;;;;:33;32767:12;:10;:12::i;:::-;32747:33;;;;;;;;;;;;;;;;:37;;:116;;;;;:::i;:::-;32694:8;:176::i;:::-;32884:4;32877:11;;32520:374;;;;;:::o;46362:146::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46445:1:::1;46434:7;:12;;46426:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;46495:7;46484:8;:18;;;;46362:146:::0;:::o;34676:239::-;34743:7;34778;;34767;:18;;34759:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;34839:19;34861:10;:8;:10::i;:::-;34839:32;;34885:24;34897:11;34885:7;:11;;:24;;;;:::i;:::-;34878:31;;;34676:239;;;:::o;46514:171::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46599:1:::1;46591:4;:9;;;;:22;;;;;46612:1;46604:4;:9;;;;46591:22;46583:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;46675:4;46654:18;;:25;;;;;;;;;;;;;;;;;;46514:171:::0;:::o;31626:77::-;31667:5;31688:9;;;;;;;;;;;31681:16;;31626:77;:::o;32900:254::-;33003:4;33019:111;33036:12;:10;:12::i;:::-;33057:7;33073:50;33112:10;33073:11;:25;33085:12;:10;:12::i;:::-;33073:25;;;;;;;;;;;;;;;:34;33099:7;33073:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;33019:8;:111::i;:::-;33144:4;33137:11;;32900:254;;;;:::o;33843:384::-;33891:14;33908:12;:10;:12::i;:::-;33891:29;;33944:11;:19;33956:6;33944:19;;;;;;;;;;;;;;;;;;;;;;;;;33943:20;33927:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;34033:15;34062:26;34073:7;34082:5;34062:10;:26::i;:::-;34032:56;;;;;;;34113:28;34133:7;34113;:15;34121:6;34113:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;34095:7;:15;34103:6;34095:15;;;;;;;;;;;;;;;:46;;;;34158:20;34170:7;34158;;:11;;:20;;;;:::i;:::-;34148:7;:30;;;;34198:23;34213:7;34198:10;;:14;;:23;;;;:::i;:::-;34185:10;:36;;;;33843:384;;;:::o;29814:46::-;;;;;;;;;;;;;:::o;34233:437::-;34339:7;34377;;34366;:18;;34358:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;34432:17;34427:238;;34461:15;34490:26;34501:7;34510:5;34490:10;:26::i;:::-;34460:56;;;;;;;34532:7;34525:14;;;;;34427:238;34565:23;34600:26;34611:7;34620:5;34600:10;:26::i;:::-;34562:64;;;;;;;34642:15;34635:22;;;34233:437;;;;;:::o;29923:38::-;;;:::o;29769:40::-;;;;;;;;;;;;;:::o;39352:144::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39400:23:::1;39426:24;39444:4;39426:9;:24::i;:::-;39400:50;;39457:33;39474:15;39457:16;:33::i;:::-;11992:1;39352:144::o:0;36084:118::-;36149:4;36169:18;:27;36188:7;36169:27;;;;;;;;;;;;;;;;;;;;;;;;;36162:34;;36084:118;;;:::o;46216:140::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46296:1:::1;46286:6;:11;;46278:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;46344:6;46334:7;:16;;;;46216:140:::0;:::o;30044:30::-;;;;;;;;;;;;;:::o;31804:188::-;31870:7;31890:11;:20;31902:7;31890:20;;;;;;;;;;;;;;;;;;;;;;;;;31886:49;;;31919:7;:16;31927:7;31919:16;;;;;;;;;;;;;;;;31912:23;;;;31886:49;31949:37;31969:7;:16;31977:7;31969:16;;;;;;;;;;;;;;;;31949:19;:37::i;:::-;31942:44;;31804:188;;;;:::o;12352:94::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12417:21:::1;12435:1;12417:9;:21::i;:::-;12352:94::o:0;46691:125::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;46794:16:::1;46774:17;;:36;;;;;;;;;;;;;;;;;;46691:125:::0;:::o;11701:87::-;11747:7;11774:6;;;;;;;;;;;11767:13;;11701:87;:::o;31539:81::-;31578:13;31607:7;31600:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31539:81;:::o;47225:154::-;47286:4;47312:13;47303:22;;:5;:22;;;47299:39;;;47334:4;47327:11;;;;47299:39;47352:14;:21;47367:5;47352:21;;;;;;;;;;;;;;;;;;;;;;;;;47345:28;;47225:154;;;;:::o;33160:332::-;33268:4;33284:184;33301:12;:10;:12::i;:::-;33322:7;33338:123;33387:15;33338:123;;;;;;;;;;;;;;;;;:11;:25;33350:12;:10;:12::i;:::-;33338:25;;;;;;;;;;;;;;;:34;33364:7;33338:34;;;;;;;;;;;;;;;;:38;;:123;;;;;:::i;:::-;33284:8;:184::i;:::-;33482:4;33475:11;;33160:332;;;;:::o;47490:103::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47582:5:::1;47558:14;:21;47573:5;47558:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;47490:103:::0;:::o;47385:99::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;47474:4:::1;47450:14;:21;47465:5;47450:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;47385:99:::0;:::o;31998:175::-;32091:4;32107:42;32117:12;:10;:12::i;:::-;32131:9;32142:6;32107:9;:42::i;:::-;32163:4;32156:11;;31998:175;;;;:::o;33608:142::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33736:8:::1;33706:18;:27;33725:7;33706:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;33608:142:::0;;:::o;33498:104::-;33556:4;33576:11;:20;33588:7;33576:20;;;;;;;;;;;;;;;;;;;;;;;;;33569:27;;33498:104;;;:::o;32179:160::-;32280:7;32306:11;:18;32318:5;32306:18;;;;;;;;;;;;;;;:27;32325:7;32306:27;;;;;;;;;;;;;;;;32299:34;;32179:160;;;;:::o;39652:91::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39730:7:::1;39716:11;;:21;;;;;;;;;;;;;;;;;;39652:91:::0;:::o;34921:431::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35015:42:::1;35004:53;;:7;:53;;;;34988:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;35125:11;:20;35137:7;35125:20;;;;;;;;;;;;;;;;;;;;;;;;;35124:21;35116:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;35207:1;35188:7;:16;35196:7;35188:16;;;;;;;;;;;;;;;;:20;35184:99;;;35238:37;35258:7;:16;35266:7;35258:16;;;;;;;;;;;;;;;;35238:19;:37::i;:::-;35219:7;:16;35227:7;35219:16;;;;;;;;;;;;;;;:56;;;;35184:99;35312:4;35289:11;:20;35301:7;35289:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;35323:9;35338:7;35323:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34921:431:::0;:::o;12601:192::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12710:1:::1;12690:22;;:8;:22;;;;12682:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12766:19;12776:8;12766:9;:19::i;:::-;12601:192:::0;:::o;39502:144::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;39550:26:::1;39579:21;39550:50;;39607:33;39621:18;39607:13;:33::i;:::-;11992:1;39502:144::o:0;46105:105::-;46152:15;46183:21;46176:28;;46105:105;:::o;35358:410::-;11932:12;:10;:12::i;:::-;11921:23;;:7;:5;:7::i;:::-;:23;;;11913:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35433:11:::1;:20;35445:7;35433:20;;;;;;;;;;;;;;;;;;;;;;;;;35425:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;35497:9;35492:271;35516:9;:16;;;;35512:1;:20;35492:271;;;35568:7;35552:23;;:9;35562:1;35552:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;35548:208;;;35603:9;35632:1;35613:9;:16;;;;:20;;;;:::i;:::-;35603:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35588:9;35598:1;35588:12;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;35664:1;35645:7;:16;35653:7;35645:16;;;;;;;;;;;;;;;:20;;;;35699:5;35676:11;:20;35688:7;35676:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;35715:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35741:5;;35548:208;35534:3;;;;;:::i;:::-;;;;35492:271;;;;35358:410:::0;:::o;10577:98::-;10630:7;10657:10;10650:17;;10577:98;:::o;36208:339::-;36334:1;36317:19;;:5;:19;;;;36309:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36411:1;36392:21;;:7;:21;;;;36384:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;36491:6;36461:11;:18;36473:5;36461:18;;;;;;;;;;;;;;;:27;36480:7;36461:27;;;;;;;;;;;;;;;:36;;;;36525:7;36509:32;;36518:5;36509:32;;;36534:6;36509:32;;;;;;:::i;:::-;;;;;;;;36208:339;;;:::o;36553:1933::-;36684:1;36666:20;;:6;:20;;;;36658:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;36764:1;36743:23;;:9;:23;;;;36735:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;36830:1;36821:6;:10;36813:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;36900:7;:5;:7::i;:::-;36890:17;;:6;:17;;;;:41;;;;;36924:7;:5;:7::i;:::-;36911:20;;:9;:20;;;;36890:41;36886:156;;;36968:12;;36958:6;:22;;36940:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;36886:156;37285:28;37316:24;37334:4;37316:9;:24::i;:::-;37285:55;;37377:12;;37353:20;:36;37349:94;;37423:12;;37400:35;;37349:94;37451:24;37509:29;;37478:20;:60;;37451:87;;37558:6;;;;;;;;;;;37557:7;:29;;;;;37575:11;;;;;;;;;;;37557:29;:59;;;;;37597:19;37557:59;:127;;;;;37641:13;37628:26;;:9;:26;;;:55;;;;37658:14;:25;37673:9;37658:25;;;;;;;;;;;;;;;;;;;;;;;;;37628:55;37557:127;37545:436;;;37781:38;37798:20;37781:16;:38::i;:::-;37830:26;37859:21;37830:50;;37914:1;37893:18;:22;37889:85;;;37928:36;37942:21;37928:13;:36::i;:::-;37889:85;37545:436;;38047:12;38130:13;38120:23;;:6;:23;;;:62;;;;38169:13;38156:26;;:9;:26;;;38120:62;:100;;;;38195:14;:25;38210:9;38195:25;;;;;;;;;;;;;;;;;;;;;;;;;38120:100;:135;;;;38233:14;:22;38248:6;38233:22;;;;;;;;;;;;;;;;;;;;;;;;;38120:135;38119:210;;;;;38269:18;:26;38288:6;38269:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;38299:18;:29;38318:9;38299:29;;;;;;;;;;;;;;;;;;;;;;;;;38269:59;38267:62;38119:210;38107:261;;;38356:4;38346:14;;38107:261;38430:50;38445:6;38453:9;38464:6;38472:7;38430:14;:50::i;:::-;36553:1933;;;;;;:::o;8152:240::-;8272:7;8330:1;8325;:6;;8333:12;8317:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;8372:1;8368;:5;8361:12;;8152:240;;;;;:::o;45088:154::-;45130:7;45147:15;45164;45183:19;:17;:19::i;:::-;45146:56;;;;45216:20;45228:7;45216;:11;;:20;;;;:::i;:::-;45209:27;;;;45088:154;:::o;7010:98::-;7068:7;7099:1;7095;:5;;;;:::i;:::-;7088:12;;7010:98;;;;:::o;5873:::-;5931:7;5962:1;5958;:5;;;;:::i;:::-;5951:12;;5873:98;;;;:::o;43416:613::-;43514:7;43530;43546;43562;43578;43594;43620:23;43645:12;43659:13;43676:85;43696:7;43712;;43728:8;;43745:9;43676:11;:85::i;:::-;43619:142;;;;;;43768:19;43790:10;:8;:10::i;:::-;43768:32;;43808:15;43825:23;43850:12;43866:81;43886:7;43902:4;43915:5;43929:11;43866;:81::i;:::-;43807:140;;;;;;43962:7;43971:15;43988:4;43994:15;44011:4;44017:5;43954:69;;;;;;;;;;;;;;;;;;;43416:613;;;;;;;;:::o;6254:98::-;6312:7;6343:1;6339;:5;;;;:::i;:::-;6332:12;;6254:98;;;;:::o;38492:537::-;30530:4;30521:6;;:13;;;;;;;;;;;;;;;;;;38622:21:::1;38660:1;38646:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38622:40;;38687:4;38669;38674:1;38669:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;38709:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38699:4;38704:1;38699:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;38740:62;38757:4;38772:15;38790:11;38740:8;:62::i;:::-;38833:15;:66;;;38908:11;38928:1;38966:4;38987;39001:15;38833:190;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30541:1;30558:5:::0;30549:6;;:14;;;;;;;;;;;;;;;;;;38492:537;:::o;12801:173::-;12857:16;12876:6;;;;;;;;;;;12857:25;;12902:8;12893:6;;:17;;;;;;;;;;;;;;;;;;12957:8;12926:40;;12947:8;12926:40;;;;;;;;;;;;12801:173;;:::o;39035:::-;39089:17;;;;;;;;;;;:22;;39120:13;39131:1;39120:6;:10;;:13;;;;:::i;:::-;39089:50;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39146:23;;;;;;;;;;;:28;;39183:13;39194:1;39183:6;:10;;:13;;;;:::i;:::-;39146:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39035:173;:::o;39749:636::-;39883:7;39878:28;;39892:14;:12;:14::i;:::-;39878:28;39919:11;:19;39931:6;39919:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;39943:11;:22;39955:9;39943:22;;;;;;;;;;;;;;;;;;;;;;;;;39942:23;39919:46;39915:427;;;39976:48;39998:6;40006:9;40017:6;39976:21;:48::i;:::-;39915:427;;;40043:11;:19;40055:6;40043:19;;;;;;;;;;;;;;;;;;;;;;;;;40042:20;:46;;;;;40066:11;:22;40078:9;40066:22;;;;;;;;;;;;;;;;;;;;;;;;;40042:46;40038:304;;;40099:46;40119:6;40127:9;40138:6;40099:19;:46::i;:::-;40038:304;;;40163:11;:19;40175:6;40163:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;40186:11;:22;40198:9;40186:22;;;;;;;;;;;;;;;;;;;;;;;;;40163:45;40159:183;;;40219:48;40241:6;40249:9;40260:6;40219:21;:48::i;:::-;40159:183;;;40290:44;40308:6;40316:9;40327:6;40290:17;:44::i;:::-;40159:183;40038:304;39915:427;40355:7;40350:29;;40364:15;:13;:15::i;:::-;40350:29;39749:636;;;;:::o;45248:521::-;45299:7;45308;45324:15;45342:7;;45324:25;;45356:15;45374:7;;45356:25;;45393:9;45388:276;45412:9;:16;;;;45408:1;:20;45388:276;;;45472:7;45448;:21;45456:9;45466:1;45456:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45448:21;;;;;;;;;;;;;;;;:31;:66;;;;45507:7;45483;:21;45491:9;45501:1;45491:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45483:21;;;;;;;;;;;;;;;;:31;45448:66;45444:106;;;45533:7;;45542;;45525:25;;;;;;;;;45444:106;45569:34;45581:7;:21;45589:9;45599:1;45589:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45581:21;;;;;;;;;;;;;;;;45569:7;:11;;:34;;;;:::i;:::-;45559:44;;45622:34;45634:7;:21;45642:9;45652:1;45642:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45634:21;;;;;;;;;;;;;;;;45622:7;:11;;:34;;;;:::i;:::-;45612:44;;45430:3;;;;;:::i;:::-;;;;45388:276;;;;45684:20;45696:7;;45684;;:11;;:20;;;;:::i;:::-;45674:7;:30;45670:61;;;45714:7;;45723;;45706:25;;;;;;;;45670:61;45746:7;45755;45738:25;;;;;;45248:521;;;:::o;44035:583::-;44192:7;44208;44224;44249:16;44268:9;:51;;44313:6;44268:51;;;44280:30;44291:18;;;;;;;;;;;44280:30;;:6;:10;;:30;;;;:::i;:::-;44268:51;44249:70;;44326:17;44346:9;:53;;44392:7;44346:53;;;44358:31;44370:18;;;;;;;;;;;44358:31;;:7;:11;;:31;;;;:::i;:::-;44346:53;44326:73;;44408:12;44423:30;44449:3;44423:21;44435:8;44423:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;44408:45;;44460:13;44476:31;44503:3;44476:22;44488:9;44476:7;:11;;:22;;;;:::i;:::-;:26;;:31;;;;:::i;:::-;44460:47;;44514:23;44540:28;44562:5;44540:17;44552:4;44540:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;44514:54;;44583:15;44600:4;44606:5;44575:37;;;;;;;;;;;44035:583;;;;;;;;:::o;44624:458::-;44782:7;44798;44814;44839:15;44857:24;44869:11;44857:7;:11;;:24;;;;:::i;:::-;44839:42;;44888:12;44903:21;44912:11;44903:4;:8;;:21;;;;:::i;:::-;44888:36;;44931:13;44947:22;44957:11;44947:5;:9;;:22;;;;:::i;:::-;44931:38;;44976:23;45002:28;45024:5;45002:17;45014:4;45002:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;44976:54;;45045:7;45054:15;45071:4;45037:39;;;;;;;;;;44624:458;;;;;;;;:::o;35774:193::-;35828:1;35817:7;;:12;:29;;;;;35845:1;35833:8;;:13;35817:29;35813:42;;;35848:7;;35813:42;35881:7;;35863:15;:25;;;;35914:8;;35895:16;:27;;;;35941:1;35931:7;:11;;;;35960:1;35949:8;:12;;;;35774:193;:::o;41578:610::-;41705:15;41729:23;41761:12;41782:23;41814:12;41835:13;41858:42;41869:7;41878:21;41889:9;41878:10;:21::i;:::-;41858:10;:42::i;:::-;41696:204;;;;;;;;;;;;41925:28;41945:7;41925;:15;41933:6;41925:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41907:7;:15;41915:6;41907:15;;;;;;;;;;;;;;;:46;;;;41978:28;41998:7;41978;:15;41986:6;41978:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41960:7;:15;41968:6;41960:15;;;;;;;;;;;;;;;:46;;;;42034:39;42057:15;42034:7;:18;42042:9;42034:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42013:7;:18;42021:9;42013:18;;;;;;;;;;;;;;;:60;;;;42080:16;42090:5;42080:9;:16::i;:::-;42103:23;42115:4;42121;42103:11;:23::i;:::-;42155:9;42138:44;;42147:6;42138:44;;;42166:15;42138:44;;;;;;:::i;:::-;;;;;;;;41578:610;;;;;;;;;:::o;40950:622::-;41075:15;41099:23;41131:12;41152:23;41184:12;41205:13;41228:42;41239:7;41248:21;41259:9;41248:10;:21::i;:::-;41228:10;:42::i;:::-;41066:204;;;;;;;;;;;;41295:28;41315:7;41295;:15;41303:6;41295:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41277:7;:15;41285:6;41277:15;;;;;;;;;;;;;;;:46;;;;41351:39;41374:15;41351:7;:18;41359:9;41351:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41330:7;:18;41338:9;41330:18;;;;;;;;;;;;;;;:60;;;;41418:39;41441:15;41418:7;:18;41426:9;41418:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;41397:7;:18;41405:9;41397:18;;;;;;;;;;;;;;;:60;;;;41464:16;41474:5;41464:9;:16::i;:::-;41487:23;41499:4;41505;41487:11;:23::i;:::-;41539:9;41522:44;;41531:6;41522:44;;;41550:15;41522:44;;;;;;:::i;:::-;;;;;;;;40950:622;;;;;;;;;:::o;42194:677::-;42321:15;42345:23;42377:12;42398:23;42430:12;42451:13;42474:42;42485:7;42494:21;42505:9;42494:10;:21::i;:::-;42474:10;:42::i;:::-;42312:204;;;;;;;;;;;;42541:28;42561:7;42541;:15;42549:6;42541:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42523:7;:15;42531:6;42523:15;;;;;;;;;;;;;;;:46;;;;42594:28;42614:7;42594;:15;42602:6;42594:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;42576:7;:15;42584:6;42576:15;;;;;;;;;;;;;;;:46;;;;42650:39;42673:15;42650:7;:18;42658:9;42650:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42629:7;:18;42637:9;42629:18;;;;;;;;;;;;;;;:60;;;;42717:39;42740:15;42717:7;:18;42725:9;42717:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;42696:7;:18;42704:9;42696:18;;;;;;;;;;;;;;;:60;;;;42763:16;42773:5;42763:9;:16::i;:::-;42786:23;42798:4;42804;42786:11;:23::i;:::-;42838:9;42821:44;;42830:6;42821:44;;;42849:15;42821:44;;;;;;:::i;:::-;;;;;;;;42194:677;;;;;;;;;:::o;40391:553::-;40514:15;40538:23;40570:12;40591:23;40623:12;40644:13;40667:42;40678:7;40687:21;40698:9;40687:10;:21::i;:::-;40667:10;:42::i;:::-;40505:204;;;;;;;;;;;;40734:28;40754:7;40734;:15;40742:6;40734:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40716:7;:15;40724:6;40716:15;;;;;;;;;;;;;;;:46;;;;40790:39;40813:15;40790:7;:18;40798:9;40790:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40769:7;:18;40777:9;40769:18;;;;;;;;;;;;;;;:60;;;;40836:16;40846:5;40836:9;:16::i;:::-;40859:23;40871:4;40877;40859:11;:23::i;:::-;40911:9;40894:44;;40903:6;40894:44;;;40922:15;40894:44;;;;;;:::i;:::-;;;;;;;;40391:553;;;;;;;;;:::o;35973:105::-;36023:15;;36013:7;:25;;;;36056:16;;36045:8;:27;;;;35973:105::o;6611:98::-;6669:7;6700:1;6696;:5;;;;:::i;:::-;6689:12;;6611:98;;;;:::o;45957:142::-;46018:4;46051:13;46038:26;;:9;:26;;;:55;;;;46068:14;:25;46083:9;46068:25;;;;;;;;;;;;;;;;;;;;;;;;;46038:55;46031:62;;45957:142;;;:::o;42877:301::-;42926:19;42948:10;:8;:10::i;:::-;42926:32;;42965:13;42981:22;42991:11;42981:5;:9;;:22;;;;:::i;:::-;42965:38;;43035:33;43062:5;43035:7;:22;43051:4;43035:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;43010:7;:22;43026:4;43010:22;;;;;;;;;;;;;;;:58;;;;43079:11;:26;43099:4;43079:26;;;;;;;;;;;;;;;;;;;;;;;;;43075:97;;;43139:33;43166:5;43139:7;:22;43155:4;43139:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;43114:7;:22;43130:4;43114:22;;;;;;;;;;;;;;;:58;;;;43075:97;42877:301;;;:::o;43184:137::-;43258:17;43270:4;43258:7;;:11;;:17;;;;:::i;:::-;43248:7;:27;;;;43295:20;43310:4;43295:10;;:14;;:20;;;;:::i;:::-;43282:10;:33;;;;43184:137;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:133::-;505:5;543:6;530:20;521:29;;559:30;583:5;559:30;:::i;:::-;511:84;;;;:::o;601:139::-;647:5;685:6;672:20;663:29;;701:33;728:5;701:33;:::i;:::-;653:87;;;;:::o;746:135::-;790:5;828:6;815:20;806:29;;844:31;869:5;844:31;:::i;:::-;796:85;;;;:::o;887:262::-;946:6;995:2;983:9;974:7;970:23;966:32;963:2;;;1011:1;1008;1001:12;963:2;1054:1;1079:53;1124:7;1115:6;1104:9;1100:22;1079:53;:::i;:::-;1069:63;;1025:117;953:196;;;;:::o;1155:284::-;1225:6;1274:2;1262:9;1253:7;1249:23;1245:32;1242:2;;;1290:1;1287;1280:12;1242:2;1333:1;1358:64;1414:7;1405:6;1394:9;1390:22;1358:64;:::i;:::-;1348:74;;1304:128;1232:207;;;;:::o;1445:278::-;1512:6;1561:2;1549:9;1540:7;1536:23;1532:32;1529:2;;;1577:1;1574;1567:12;1529:2;1620:1;1645:61;1698:7;1689:6;1678:9;1674:22;1645:61;:::i;:::-;1635:71;;1591:125;1519:204;;;;:::o;1729:407::-;1797:6;1805;1854:2;1842:9;1833:7;1829:23;1825:32;1822:2;;;1870:1;1867;1860:12;1822:2;1913:1;1938:53;1983:7;1974:6;1963:9;1959:22;1938:53;:::i;:::-;1928:63;;1884:117;2040:2;2066:53;2111:7;2102:6;2091:9;2087:22;2066:53;:::i;:::-;2056:63;;2011:118;1812:324;;;;;:::o;2142:552::-;2219:6;2227;2235;2284:2;2272:9;2263:7;2259:23;2255:32;2252:2;;;2300:1;2297;2290:12;2252:2;2343:1;2368:53;2413:7;2404:6;2393:9;2389:22;2368:53;:::i;:::-;2358:63;;2314:117;2470:2;2496:53;2541:7;2532:6;2521:9;2517:22;2496:53;:::i;:::-;2486:63;;2441:118;2598:2;2624:53;2669:7;2660:6;2649:9;2645:22;2624:53;:::i;:::-;2614:63;;2569:118;2242:452;;;;;:::o;2700:401::-;2765:6;2773;2822:2;2810:9;2801:7;2797:23;2793:32;2790:2;;;2838:1;2835;2828:12;2790:2;2881:1;2906:53;2951:7;2942:6;2931:9;2927:22;2906:53;:::i;:::-;2896:63;;2852:117;3008:2;3034:50;3076:7;3067:6;3056:9;3052:22;3034:50;:::i;:::-;3024:60;;2979:115;2780:321;;;;;:::o;3107:407::-;3175:6;3183;3232:2;3220:9;3211:7;3207:23;3203:32;3200:2;;;3248:1;3245;3238:12;3200:2;3291:1;3316:53;3361:7;3352:6;3341:9;3337:22;3316:53;:::i;:::-;3306:63;;3262:117;3418:2;3444:53;3489:7;3480:6;3469:9;3465:22;3444:53;:::i;:::-;3434:63;;3389:118;3190:324;;;;;:::o;3520:256::-;3576:6;3625:2;3613:9;3604:7;3600:23;3596:32;3593:2;;;3641:1;3638;3631:12;3593:2;3684:1;3709:50;3751:7;3742:6;3731:9;3727:22;3709:50;:::i;:::-;3699:60;;3655:114;3583:193;;;;:::o;3782:262::-;3841:6;3890:2;3878:9;3869:7;3865:23;3861:32;3858:2;;;3906:1;3903;3896:12;3858:2;3949:1;3974:53;4019:7;4010:6;3999:9;3995:22;3974:53;:::i;:::-;3964:63;;3920:117;3848:196;;;;:::o;4050:401::-;4115:6;4123;4172:2;4160:9;4151:7;4147:23;4143:32;4140:2;;;4188:1;4185;4178:12;4140:2;4231:1;4256:53;4301:7;4292:6;4281:9;4277:22;4256:53;:::i;:::-;4246:63;;4202:117;4358:2;4384:50;4426:7;4417:6;4406:9;4402:22;4384:50;:::i;:::-;4374:60;;4329:115;4130:321;;;;;:::o;4457:258::-;4514:6;4563:2;4551:9;4542:7;4538:23;4534:32;4531:2;;;4579:1;4576;4569:12;4531:2;4622:1;4647:51;4690:7;4681:6;4670:9;4666:22;4647:51;:::i;:::-;4637:61;;4593:115;4521:194;;;;:::o;4721:179::-;4790:10;4811:46;4853:3;4845:6;4811:46;:::i;:::-;4889:4;4884:3;4880:14;4866:28;;4801:99;;;;:::o;4906:142::-;5009:32;5035:5;5009:32;:::i;:::-;5004:3;4997:45;4987:61;;:::o;5054:108::-;5131:24;5149:5;5131:24;:::i;:::-;5126:3;5119:37;5109:53;;:::o;5168:118::-;5255:24;5273:5;5255:24;:::i;:::-;5250:3;5243:37;5233:53;;:::o;5322:732::-;5441:3;5470:54;5518:5;5470:54;:::i;:::-;5540:86;5619:6;5614:3;5540:86;:::i;:::-;5533:93;;5650:56;5700:5;5650:56;:::i;:::-;5729:7;5760:1;5745:284;5770:6;5767:1;5764:13;5745:284;;;5846:6;5840:13;5873:63;5932:3;5917:13;5873:63;:::i;:::-;5866:70;;5959:60;6012:6;5959:60;:::i;:::-;5949:70;;5805:224;5792:1;5789;5785:9;5780:14;;5745:284;;;5749:14;6045:3;6038:10;;5446:608;;;;;;;:::o;6060:109::-;6141:21;6156:5;6141:21;:::i;:::-;6136:3;6129:34;6119:50;;:::o;6175:185::-;6289:64;6347:5;6289:64;:::i;:::-;6284:3;6277:77;6267:93;;:::o;6366:147::-;6461:45;6500:5;6461:45;:::i;:::-;6456:3;6449:58;6439:74;;:::o;6519:364::-;6607:3;6635:39;6668:5;6635:39;:::i;:::-;6690:71;6754:6;6749:3;6690:71;:::i;:::-;6683:78;;6770:52;6815:6;6810:3;6803:4;6796:5;6792:16;6770:52;:::i;:::-;6847:29;6869:6;6847:29;:::i;:::-;6842:3;6838:39;6831:46;;6611:272;;;;;:::o;6889:366::-;7031:3;7052:67;7116:2;7111:3;7052:67;:::i;:::-;7045:74;;7128:93;7217:3;7128:93;:::i;:::-;7246:2;7241:3;7237:12;7230:19;;7035:220;;;:::o;7261:366::-;7403:3;7424:67;7488:2;7483:3;7424:67;:::i;:::-;7417:74;;7500:93;7589:3;7500:93;:::i;:::-;7618:2;7613:3;7609:12;7602:19;;7407:220;;;:::o;7633:366::-;7775:3;7796:67;7860:2;7855:3;7796:67;:::i;:::-;7789:74;;7872:93;7961:3;7872:93;:::i;:::-;7990:2;7985:3;7981:12;7974:19;;7779:220;;;:::o;8005:366::-;8147:3;8168:67;8232:2;8227:3;8168:67;:::i;:::-;8161:74;;8244:93;8333:3;8244:93;:::i;:::-;8362:2;8357:3;8353:12;8346:19;;8151:220;;;:::o;8377:366::-;8519:3;8540:67;8604:2;8599:3;8540:67;:::i;:::-;8533:74;;8616:93;8705:3;8616:93;:::i;:::-;8734:2;8729:3;8725:12;8718:19;;8523:220;;;:::o;8749:366::-;8891:3;8912:67;8976:2;8971:3;8912:67;:::i;:::-;8905:74;;8988:93;9077:3;8988:93;:::i;:::-;9106:2;9101:3;9097:12;9090:19;;8895:220;;;:::o;9121:366::-;9263:3;9284:67;9348:2;9343:3;9284:67;:::i;:::-;9277:74;;9360:93;9449:3;9360:93;:::i;:::-;9478:2;9473:3;9469:12;9462:19;;9267:220;;;:::o;9493:366::-;9635:3;9656:67;9720:2;9715:3;9656:67;:::i;:::-;9649:74;;9732:93;9821:3;9732:93;:::i;:::-;9850:2;9845:3;9841:12;9834:19;;9639:220;;;:::o;9865:366::-;10007:3;10028:67;10092:2;10087:3;10028:67;:::i;:::-;10021:74;;10104:93;10193:3;10104:93;:::i;:::-;10222:2;10217:3;10213:12;10206:19;;10011:220;;;:::o;10237:366::-;10379:3;10400:67;10464:2;10459:3;10400:67;:::i;:::-;10393:74;;10476:93;10565:3;10476:93;:::i;:::-;10594:2;10589:3;10585:12;10578:19;;10383:220;;;:::o;10609:366::-;10751:3;10772:67;10836:2;10831:3;10772:67;:::i;:::-;10765:74;;10848:93;10937:3;10848:93;:::i;:::-;10966:2;10961:3;10957:12;10950:19;;10755:220;;;:::o;10981:366::-;11123:3;11144:67;11208:2;11203:3;11144:67;:::i;:::-;11137:74;;11220:93;11309:3;11220:93;:::i;:::-;11338:2;11333:3;11329:12;11322:19;;11127:220;;;:::o;11353:366::-;11495:3;11516:67;11580:2;11575:3;11516:67;:::i;:::-;11509:74;;11592:93;11681:3;11592:93;:::i;:::-;11710:2;11705:3;11701:12;11694:19;;11499:220;;;:::o;11725:366::-;11867:3;11888:67;11952:2;11947:3;11888:67;:::i;:::-;11881:74;;11964:93;12053:3;11964:93;:::i;:::-;12082:2;12077:3;12073:12;12066:19;;11871:220;;;:::o;12097:398::-;12256:3;12277:83;12358:1;12353:3;12277:83;:::i;:::-;12270:90;;12369:93;12458:3;12369:93;:::i;:::-;12487:1;12482:3;12478:11;12471:18;;12260:235;;;:::o;12501:366::-;12643:3;12664:67;12728:2;12723:3;12664:67;:::i;:::-;12657:74;;12740:93;12829:3;12740:93;:::i;:::-;12858:2;12853:3;12849:12;12842:19;;12647:220;;;:::o;12873:366::-;13015:3;13036:67;13100:2;13095:3;13036:67;:::i;:::-;13029:74;;13112:93;13201:3;13112:93;:::i;:::-;13230:2;13225:3;13221:12;13214:19;;13019:220;;;:::o;13245:366::-;13387:3;13408:67;13472:2;13467:3;13408:67;:::i;:::-;13401:74;;13484:93;13573:3;13484:93;:::i;:::-;13602:2;13597:3;13593:12;13586:19;;13391:220;;;:::o;13617:118::-;13704:24;13722:5;13704:24;:::i;:::-;13699:3;13692:37;13682:53;;:::o;13741:112::-;13824:22;13840:5;13824:22;:::i;:::-;13819:3;13812:35;13802:51;;:::o;13859:379::-;14043:3;14065:147;14208:3;14065:147;:::i;:::-;14058:154;;14229:3;14222:10;;14047:191;;;:::o;14244:222::-;14337:4;14375:2;14364:9;14360:18;14352:26;;14388:71;14456:1;14445:9;14441:17;14432:6;14388:71;:::i;:::-;14342:124;;;;:::o;14472:254::-;14581:4;14619:2;14608:9;14604:18;14596:26;;14632:87;14716:1;14705:9;14701:17;14692:6;14632:87;:::i;:::-;14586:140;;;;:::o;14732:210::-;14819:4;14857:2;14846:9;14842:18;14834:26;;14870:65;14932:1;14921:9;14917:17;14908:6;14870:65;:::i;:::-;14824:118;;;;:::o;14948:276::-;15068:4;15106:2;15095:9;15091:18;15083:26;;15119:98;15214:1;15203:9;15199:17;15190:6;15119:98;:::i;:::-;15073:151;;;;:::o;15230:313::-;15343:4;15381:2;15370:9;15366:18;15358:26;;15430:9;15424:4;15420:20;15416:1;15405:9;15401:17;15394:47;15458:78;15531:4;15522:6;15458:78;:::i;:::-;15450:86;;15348:195;;;;:::o;15549:419::-;15715:4;15753:2;15742:9;15738:18;15730:26;;15802:9;15796:4;15792:20;15788:1;15777:9;15773:17;15766:47;15830:131;15956:4;15830:131;:::i;:::-;15822:139;;15720:248;;;:::o;15974:419::-;16140:4;16178:2;16167:9;16163:18;16155:26;;16227:9;16221:4;16217:20;16213:1;16202:9;16198:17;16191:47;16255:131;16381:4;16255:131;:::i;:::-;16247:139;;16145:248;;;:::o;16399:419::-;16565:4;16603:2;16592:9;16588:18;16580:26;;16652:9;16646:4;16642:20;16638:1;16627:9;16623:17;16616:47;16680:131;16806:4;16680:131;:::i;:::-;16672:139;;16570:248;;;:::o;16824:419::-;16990:4;17028:2;17017:9;17013:18;17005:26;;17077:9;17071:4;17067:20;17063:1;17052:9;17048:17;17041:47;17105:131;17231:4;17105:131;:::i;:::-;17097:139;;16995:248;;;:::o;17249:419::-;17415:4;17453:2;17442:9;17438:18;17430:26;;17502:9;17496:4;17492:20;17488:1;17477:9;17473:17;17466:47;17530:131;17656:4;17530:131;:::i;:::-;17522:139;;17420:248;;;:::o;17674:419::-;17840:4;17878:2;17867:9;17863:18;17855:26;;17927:9;17921:4;17917:20;17913:1;17902:9;17898:17;17891:47;17955:131;18081:4;17955:131;:::i;:::-;17947:139;;17845:248;;;:::o;18099:419::-;18265:4;18303:2;18292:9;18288:18;18280:26;;18352:9;18346:4;18342:20;18338:1;18327:9;18323:17;18316:47;18380:131;18506:4;18380:131;:::i;:::-;18372:139;;18270:248;;;:::o;18524:419::-;18690:4;18728:2;18717:9;18713:18;18705:26;;18777:9;18771:4;18767:20;18763:1;18752:9;18748:17;18741:47;18805:131;18931:4;18805:131;:::i;:::-;18797:139;;18695:248;;;:::o;18949:419::-;19115:4;19153:2;19142:9;19138:18;19130:26;;19202:9;19196:4;19192:20;19188:1;19177:9;19173:17;19166:47;19230:131;19356:4;19230:131;:::i;:::-;19222:139;;19120:248;;;:::o;19374:419::-;19540:4;19578:2;19567:9;19563:18;19555:26;;19627:9;19621:4;19617:20;19613:1;19602:9;19598:17;19591:47;19655:131;19781:4;19655:131;:::i;:::-;19647:139;;19545:248;;;:::o;19799:419::-;19965:4;20003:2;19992:9;19988:18;19980:26;;20052:9;20046:4;20042:20;20038:1;20027:9;20023:17;20016:47;20080:131;20206:4;20080:131;:::i;:::-;20072:139;;19970:248;;;:::o;20224:419::-;20390:4;20428:2;20417:9;20413:18;20405:26;;20477:9;20471:4;20467:20;20463:1;20452:9;20448:17;20441:47;20505:131;20631:4;20505:131;:::i;:::-;20497:139;;20395:248;;;:::o;20649:419::-;20815:4;20853:2;20842:9;20838:18;20830:26;;20902:9;20896:4;20892:20;20888:1;20877:9;20873:17;20866:47;20930:131;21056:4;20930:131;:::i;:::-;20922:139;;20820:248;;;:::o;21074:419::-;21240:4;21278:2;21267:9;21263:18;21255:26;;21327:9;21321:4;21317:20;21313:1;21302:9;21298:17;21291:47;21355:131;21481:4;21355:131;:::i;:::-;21347:139;;21245:248;;;:::o;21499:419::-;21665:4;21703:2;21692:9;21688:18;21680:26;;21752:9;21746:4;21742:20;21738:1;21727:9;21723:17;21716:47;21780:131;21906:4;21780:131;:::i;:::-;21772:139;;21670:248;;;:::o;21924:419::-;22090:4;22128:2;22117:9;22113:18;22105:26;;22177:9;22171:4;22167:20;22163:1;22152:9;22148:17;22141:47;22205:131;22331:4;22205:131;:::i;:::-;22197:139;;22095:248;;;:::o;22349:419::-;22515:4;22553:2;22542:9;22538:18;22530:26;;22602:9;22596:4;22592:20;22588:1;22577:9;22573:17;22566:47;22630:131;22756:4;22630:131;:::i;:::-;22622:139;;22520:248;;;:::o;22774:222::-;22867:4;22905:2;22894:9;22890:18;22882:26;;22918:71;22986:1;22975:9;22971:17;22962:6;22918:71;:::i;:::-;22872:124;;;;:::o;23002:831::-;23265:4;23303:3;23292:9;23288:19;23280:27;;23317:71;23385:1;23374:9;23370:17;23361:6;23317:71;:::i;:::-;23398:80;23474:2;23463:9;23459:18;23450:6;23398:80;:::i;:::-;23525:9;23519:4;23515:20;23510:2;23499:9;23495:18;23488:48;23553:108;23656:4;23647:6;23553:108;:::i;:::-;23545:116;;23671:72;23739:2;23728:9;23724:18;23715:6;23671:72;:::i;:::-;23753:73;23821:3;23810:9;23806:19;23797:6;23753:73;:::i;:::-;23270:563;;;;;;;;:::o;23839:214::-;23928:4;23966:2;23955:9;23951:18;23943:26;;23979:67;24043:1;24032:9;24028:17;24019:6;23979:67;:::i;:::-;23933:120;;;;:::o;24059:132::-;24126:4;24149:3;24141:11;;24179:4;24174:3;24170:14;24162:22;;24131:60;;;:::o;24197:114::-;24264:6;24298:5;24292:12;24282:22;;24271:40;;;:::o;24317:99::-;24369:6;24403:5;24397:12;24387:22;;24376:40;;;:::o;24422:113::-;24492:4;24524;24519:3;24515:14;24507:22;;24497:38;;;:::o;24541:184::-;24640:11;24674:6;24669:3;24662:19;24714:4;24709:3;24705:14;24690:29;;24652:73;;;;:::o;24731:147::-;24832:11;24869:3;24854:18;;24844:34;;;;:::o;24884:169::-;24968:11;25002:6;24997:3;24990:19;25042:4;25037:3;25033:14;25018:29;;24980:73;;;;:::o;25059:305::-;25099:3;25118:20;25136:1;25118:20;:::i;:::-;25113:25;;25152:20;25170:1;25152:20;:::i;:::-;25147:25;;25306:1;25238:66;25234:74;25231:1;25228:81;25225:2;;;25312:18;;:::i;:::-;25225:2;25356:1;25353;25349:9;25342:16;;25103:261;;;;:::o;25370:185::-;25410:1;25427:20;25445:1;25427:20;:::i;:::-;25422:25;;25461:20;25479:1;25461:20;:::i;:::-;25456:25;;25500:1;25490:2;;25505:18;;:::i;:::-;25490:2;25547:1;25544;25540:9;25535:14;;25412:143;;;;:::o;25561:348::-;25601:7;25624:20;25642:1;25624:20;:::i;:::-;25619:25;;25658:20;25676:1;25658:20;:::i;:::-;25653:25;;25846:1;25778:66;25774:74;25771:1;25768:81;25763:1;25756:9;25749:17;25745:105;25742:2;;;25853:18;;:::i;:::-;25742:2;25901:1;25898;25894:9;25883:20;;25609:300;;;;:::o;25915:191::-;25955:4;25975:20;25993:1;25975:20;:::i;:::-;25970:25;;26009:20;26027:1;26009:20;:::i;:::-;26004:25;;26048:1;26045;26042:8;26039:2;;;26053:18;;:::i;:::-;26039:2;26098:1;26095;26091:9;26083:17;;25960:146;;;;:::o;26112:96::-;26149:7;26178:24;26196:5;26178:24;:::i;:::-;26167:35;;26157:51;;;:::o;26214:104::-;26259:7;26288:24;26306:5;26288:24;:::i;:::-;26277:35;;26267:51;;;:::o;26324:90::-;26358:7;26401:5;26394:13;26387:21;26376:32;;26366:48;;;:::o;26420:126::-;26457:7;26497:42;26490:5;26486:54;26475:65;;26465:81;;;:::o;26552:77::-;26589:7;26618:5;26607:16;;26597:32;;;:::o;26635:86::-;26670:7;26710:4;26703:5;26699:16;26688:27;;26678:43;;;:::o;26727:180::-;26804:9;26837:64;26895:5;26837:64;:::i;:::-;26824:77;;26814:93;;;:::o;26913:140::-;26990:9;27023:24;27041:5;27023:24;:::i;:::-;27010:37;;27000:53;;;:::o;27059:121::-;27117:9;27150:24;27168:5;27150:24;:::i;:::-;27137:37;;27127:53;;;:::o;27186:307::-;27254:1;27264:113;27278:6;27275:1;27272:13;27264:113;;;27363:1;27358:3;27354:11;27348:18;27344:1;27339:3;27335:11;27328:39;27300:2;27297:1;27293:10;27288:15;;27264:113;;;27395:6;27392:1;27389:13;27386:2;;;27475:1;27466:6;27461:3;27457:16;27450:27;27386:2;27235:258;;;;:::o;27499:320::-;27543:6;27580:1;27574:4;27570:12;27560:22;;27627:1;27621:4;27617:12;27648:18;27638:2;;27704:4;27696:6;27692:17;27682:27;;27638:2;27766;27758:6;27755:14;27735:18;27732:38;27729:2;;;27785:18;;:::i;:::-;27729:2;27550:269;;;;:::o;27825:233::-;27864:3;27887:24;27905:5;27887:24;:::i;:::-;27878:33;;27933:66;27926:5;27923:77;27920:2;;;28003:18;;:::i;:::-;27920:2;28050:1;28043:5;28039:13;28032:20;;27868:190;;;:::o;28064:180::-;28112:77;28109:1;28102:88;28209:4;28206:1;28199:15;28233:4;28230:1;28223:15;28250:180;28298:77;28295:1;28288:88;28395:4;28392:1;28385:15;28419:4;28416:1;28409:15;28436:180;28484:77;28481:1;28474:88;28581:4;28578:1;28571:15;28605:4;28602:1;28595:15;28622:102;28663:6;28714:2;28710:7;28705:2;28698:5;28694:14;28690:28;28680:38;;28670:54;;;:::o;28730:175::-;28870:27;28866:1;28858:6;28854:14;28847:51;28836:69;:::o;28911:222::-;29051:34;29047:1;29039:6;29035:14;29028:58;29120:5;29115:2;29107:6;29103:15;29096:30;29017:116;:::o;29139:176::-;29279:28;29275:1;29267:6;29263:14;29256:52;29245:70;:::o;29321:229::-;29461:34;29457:1;29449:6;29445:14;29438:58;29530:12;29525:2;29517:6;29513:15;29506:37;29427:123;:::o;29556:225::-;29696:34;29692:1;29684:6;29680:14;29673:58;29765:8;29760:2;29752:6;29748:15;29741:33;29662:119;:::o;29787:221::-;29927:34;29923:1;29915:6;29911:14;29904:58;29996:4;29991:2;29983:6;29979:15;29972:29;29893:115;:::o;30014:177::-;30154:29;30150:1;30142:6;30138:14;30131:53;30120:71;:::o;30197:239::-;30337:34;30333:1;30325:6;30321:14;30314:58;30406:22;30401:2;30393:6;30389:15;30382:47;30303:133;:::o;30442:179::-;30582:31;30578:1;30570:6;30566:14;30559:55;30548:73;:::o;30627:181::-;30767:33;30763:1;30755:6;30751:14;30744:57;30733:75;:::o;30814:227::-;30954:34;30950:1;30942:6;30938:14;30931:58;31023:10;31018:2;31010:6;31006:15;30999:35;30920:121;:::o;31047:182::-;31187:34;31183:1;31175:6;31171:14;31164:58;31153:76;:::o;31235:228::-;31375:34;31371:1;31363:6;31359:14;31352:58;31444:11;31439:2;31431:6;31427:15;31420:36;31341:122;:::o;31469:224::-;31609:34;31605:1;31597:6;31593:14;31586:58;31678:7;31673:2;31665:6;31661:15;31654:32;31575:118;:::o;31699:114::-;31805:8;:::o;31819:223::-;31959:34;31955:1;31947:6;31943:14;31936:58;32028:6;32023:2;32015:6;32011:15;32004:31;31925:117;:::o;32048:221::-;32188:34;32184:1;32176:6;32172:14;32165:58;32257:4;32252:2;32244:6;32240:15;32233:29;32154:115;:::o;32275:231::-;32415:34;32411:1;32403:6;32399:14;32392:58;32484:14;32479:2;32471:6;32467:15;32460:39;32381:125;:::o;32512:122::-;32585:24;32603:5;32585:24;:::i;:::-;32578:5;32575:35;32565:2;;32624:1;32621;32614:12;32565:2;32555:79;:::o;32640:138::-;32721:32;32747:5;32721:32;:::i;:::-;32714:5;32711:43;32701:2;;32768:1;32765;32758:12;32701:2;32691:87;:::o;32784:116::-;32854:21;32869:5;32854:21;:::i;:::-;32847:5;32844:32;32834:2;;32890:1;32887;32880:12;32834:2;32824:76;:::o;32906:122::-;32979:24;32997:5;32979:24;:::i;:::-;32972:5;32969:35;32959:2;;33018:1;33015;33008:12;32959:2;32949:79;:::o;33034:118::-;33105:22;33121:5;33105:22;:::i;:::-;33098:5;33095:33;33085:2;;33142:1;33139;33132:12;33085:2;33075:77;:::o
Swarm Source
ipfs://7a18304238ad5cbc0635bcf6e98b66cc3a9dfc11bad2cb603ecee8c6ee994a25
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | Ether (ETH) | 100.00% | $2,450.91 | 0.000000000000000001 | <$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.