Token ArbTribe

 

Overview ERC20

Price
$0.00 @ 0.000000 ETH
Fully Diluted Market Cap
Total Supply:
1,000,000 $TRIBE

Holders:
129 addresses

Transfers:
-

Contract:
0x58EA7917F74834dbE6b57D0a2a74fb68C1e94c550x58EA7917F74834dbE6b57D0a2a74fb68C1e94c55

Decimals:
18

Social Profiles:
Not Available, Update ?

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token ICO / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ArbTribe

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-11-01
*/

// SPDX-License-Identifier: MIT
/** 

               AAA               RRRRRRRRRRRRRRRRR   BBBBBBBBBBBBBBBBB   TTTTTTTTTTTTTTTTTTTTTTTRRRRRRRRRRRRRRRRR   IIIIIIIIIIBBBBBBBBBBBBBBBBB   EEEEEEEEEEEEEEEEEEEEEE !!! 
              A:::A              R::::::::::::::::R  B::::::::::::::::B  T:::::::::::::::::::::TR::::::::::::::::R  I::::::::IB::::::::::::::::B  E::::::::::::::::::::E!!:!!
             A:::::A             R::::::RRRRRR:::::R B::::::BBBBBB:::::B T:::::::::::::::::::::TR::::::RRRRRR:::::R I::::::::IB::::::BBBBBB:::::B E::::::::::::::::::::E!:::!
            A:::::::A            RR:::::R     R:::::RBB:::::B     B:::::BT:::::TT:::::::TT:::::TRR:::::R     R:::::RII::::::IIBB:::::B     B:::::BEE::::::EEEEEEEEE::::E!:::!
           A:::::::::A             R::::R     R:::::R  B::::B     B:::::BTTTTTT  T:::::T  TTTTTT  R::::R     R:::::R  I::::I    B::::B     B:::::B  E:::::E       EEEEEE!:::!
          A:::::A:::::A            R::::R     R:::::R  B::::B     B:::::B        T:::::T          R::::R     R:::::R  I::::I    B::::B     B:::::B  E:::::E             !:::!
         A:::::A A:::::A           R::::RRRRRR:::::R   B::::BBBBBB:::::B         T:::::T          R::::RRRRRR:::::R   I::::I    B::::BBBBBB:::::B   E::::::EEEEEEEEEE   !:::!
        A:::::A   A:::::A          R:::::::::::::RR    B:::::::::::::BB          T:::::T          R:::::::::::::RR    I::::I    B:::::::::::::BB    E:::::::::::::::E   !:::!
       A:::::A     A:::::A         R::::RRRRRR:::::R   B::::BBBBBB:::::B         T:::::T          R::::RRRRRR:::::R   I::::I    B::::BBBBBB:::::B   E:::::::::::::::E   !:::!
      A:::::AAAAAAAAA:::::A        R::::R     R:::::R  B::::B     B:::::B        T:::::T          R::::R     R:::::R  I::::I    B::::B     B:::::B  E::::::EEEEEEEEEE   !:::!
     A:::::::::::::::::::::A       R::::R     R:::::R  B::::B     B:::::B        T:::::T          R::::R     R:::::R  I::::I    B::::B     B:::::B  E:::::E             !!:!!
    A:::::AAAAAAAAAAAAA:::::A      R::::R     R:::::R  B::::B     B:::::B        T:::::T          R::::R     R:::::R  I::::I    B::::B     B:::::B  E:::::E       EEEEEE !!! 
   A:::::A             A:::::A   RR:::::R     R:::::RBB:::::BBBBBB::::::B      TT:::::::TT      RR:::::R     R:::::RII::::::IIBB:::::BBBBBB::::::BEE::::::EEEEEEEE:::::E     
  A:::::A               A:::::A  R::::::R     R:::::RB:::::::::::::::::B       T:::::::::T      R::::::R     R:::::RI::::::::IB:::::::::::::::::B E::::::::::::::::::::E !!! 
 A:::::A                 A:::::A R::::::R     R:::::RB::::::::::::::::B        T:::::::::T      R::::::R     R:::::RI::::::::IB::::::::::::::::B  E::::::::::::::::::::E!!:!!
AAAAAAA                   AAAAAAARRRRRRRR     RRRRRRRBBBBBBBBBBBBBBBBB         TTTTTTTTTTT      RRRRRRRR     RRRRRRRIIIIIIIIIIBBBBBBBBBBBBBBBBB   EEEEEEEEEEEEEEEEEEEEEE !!! 

Pssst. Hey. You. Chief Kek is here to help you gain X's. Liquidity 100% burnt, 800k tokens burnt, Max transaction is 0.5%, Max wallet is 2%. Circ Supply is 200k, what are you waiting for? 

I have specifically designed ArbTribe mechanics to ensure multiple X's from launch. No matter what, ArbTribe will be there. 

*/
            
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);
}




/** 
 *  SourceUnit: c:\Users\ASUS\Desktop\Contracts\contracts\ArbTribe.sol
*/
            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * ////IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}





            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @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;
    }
}





            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

////import "../IERC20.sol";

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}





            
pragma solidity >=0.6.2;

////import './IUniswapV2Router01.sol';

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;
}





            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts (last updated v4.6.0) (utils/math/SafeMath.sol)

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 generally not needed starting with Solidity 0.8, since 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 subtraction 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;
        }
    }
}





            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;

////import "./IERC20.sol";
////import "./extensions/IERC20Metadata.sol";
////import "../../utils/Context.sol";

/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}





            
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;
}





            
////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

////import "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}




////// SPDX-License-Identifier-FLATTEN-SUPPRESS-WARNING: MIT
pragma solidity ^0.8.16;

////import "@openzeppelin/contracts/access/Ownable.sol";
////import "@uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol";
////import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
////import "@openzeppelin/contracts/utils/math/SafeMath.sol";
////import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol";

contract ArbTribe is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public sushiswapRouter;
    address public sushiswapV2Pair;

    bool private swapping;

    uint256 public swapTokensAtAmount;
    uint256 public maxWalletLimit;
    uint256 public maxTxAmount;

    uint8 public liquidityFee = 20;
    uint8 public marketingFee = 20;
    uint16 internal totalFees = liquidityFee + marketingFee;

    address payable public _marketingWallet = payable(address(0x1a205a01a5f824C43E3BDa410a02f20ffF1482E0));

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateRouter(address indexed newAddress, address indexed oldAddress);
    event ExcludeFromFees(address indexed account, bool isExcluded);
    event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiqudity);

    constructor() ERC20("ArbTribe", "$TRIBE") {
        IUniswapV2Router02 _sushiswapRouter = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);

        address _sushiswapV2Pair = IUniswapV2Factory(_sushiswapRouter.factory()).createPair(
            address(this),
            _sushiswapRouter.WETH()
        );

        sushiswapRouter = _sushiswapRouter;
        sushiswapV2Pair = _sushiswapV2Pair;

        _setAutomatedMarketMakerPair(_sushiswapV2Pair, true);

        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);

        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(owner(), 1 * 10**6 * (10**18));
        maxWalletLimit = totalSupply().mul(2).div(100);
        maxTxAmount = totalSupply().mul(5).div(1000);
        swapTokensAtAmount = totalSupply().mul(1).div(1000);
    }

    receive() external payable {
      this;
    }

    function updateRouter(address newAddress) public onlyOwner {
        require(newAddress != address(sushiswapRouter), "$TRIBE The router already has that address");
        emit UpdateRouter(newAddress, address(sushiswapRouter));
        sushiswapRouter = IUniswapV2Router02(newAddress);
        address _sushiswapV2Pair = IUniswapV2Factory(sushiswapRouter.factory()).createPair(
            address(this),
            sushiswapRouter.WETH()
        );
        sushiswapV2Pair = _sushiswapV2Pair;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "$TRIBE Account is already excluded");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFees[accounts[i]] = excluded;
        }

        emit ExcludeMultipleAccountsFromFees(accounts, excluded);
    }

    function setMarketingWallet(address payable wallet) external onlyOwner {
        _marketingWallet = wallet;
    }

    function setSwapAtAmount(uint256 value) external onlyOwner {
        swapTokensAtAmount = value;
    }

    function setMaxWalletAmount(uint256 value) external onlyOwner {
        maxWalletLimit = value;
    }

    function setMaxTxAmount(uint256 value) external onlyOwner {
        maxTxAmount = value;
    }

    function setLiquidityFee(uint8 value) external onlyOwner {
        liquidityFee = value;
        totalFees = liquidityFee  + marketingFee;
    }

    function setmarketingFee(uint8 value) external onlyOwner {
        marketingFee = value;
        totalFees = liquidityFee + marketingFee;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (canSwap && !swapping && !automatedMarketMakerPairs[from] && from != owner() && to != owner()) {
            swapping = true;

            contractTokenBalance = swapTokensAtAmount;

            uint256 feeTokens = contractTokenBalance.mul(marketingFee).div(totalFees);
            swapAndSendToFee(feeTokens);

            uint256 swapTokens = contractTokenBalance.mul(liquidityFee).div(totalFees);
            swapAndLiquify(swapTokens);

            swapping = false;
        }

        bool takeFee = !swapping;

        // if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if (takeFee) {
            require(amount <= maxTxAmount, "Transfer amount exceeds limit");
            if (!automatedMarketMakerPairs[to]) {
                require(amount + balanceOf(to) <= maxWalletLimit, "Wallet limit reached");
            }
            uint256 fees = amount.mul(totalFees).div(1000);

            amount = amount.sub(fees);

            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);
    }

    function claimStuckTokens(address _token) external onlyOwner {
        require(_token != address(this), "No rug pulls");

        if (_token == address(0x0)) {
            payable(owner()).transfer(address(this).balance);
            return;
        }
        IERC20 token = IERC20(_token);
        uint256 balance = token.balanceOf(address(this));
        token.transfer(owner(), balance);
    }

    function swapAndSendToFee(uint256 tokens) private {
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(tokens);
        uint256 newBalance = address(this).balance.sub(initialBalance);

        _marketingWallet.transfer(newBalance);
    }

    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens.div(2);
        uint256 otherHalf = tokens.sub(half);

        uint256 initialBalance = address(this).balance;


        swapTokensForETH(half); 
        uint256 newBalance = address(this).balance.sub(initialBalance);
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = sushiswapRouter.WETH();

        _approve(address(this), address(sushiswapRouter), tokenAmount);

        // make the swap
        sushiswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(sushiswapRouter), tokenAmount);

        // add the liquidity
        sushiswapRouter.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0),
            block.timestamp
        );
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateRouter","type":"event"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"value","type":"uint8"}],"name":"setLiquidityFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"wallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"value","type":"uint8"}],"name":"setmarketingFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sushiswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sushiswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526014600b60006101000a81548160ff021916908360ff1602179055506014600b60016101000a81548160ff021916908360ff160217905550600b60019054906101000a900460ff16600b60009054906101000a900460ff1662000068919062000a6d565b60ff16600b60026101000a81548161ffff021916908361ffff160217905550731a205a01a5f824c43e3bda410a02f20fff1482e0600b60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000e957600080fd5b506040518060400160405280600881526020017f41726254726962650000000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f2454524942450000000000000000000000000000000000000000000000000000815250816003908162000167919062000d23565b50806004908162000179919062000d23565b5050506200019c62000190620004fb60201b60201c565b6200050360201b60201c565b6000731b02da8cb0d097eb8d57a175b88c7d8b47997506905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000203573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000229919062000e74565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000291573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b7919062000e74565b6040518363ffffffff1660e01b8152600401620002d692919062000eb7565b6020604051808303816000875af1158015620002f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031c919062000e74565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b3816001620005c960201b60201c565b620003d5620003c76200066a60201b60201c565b60016200069460201b60201c565b620003e83060016200069460201b60201c565b62000413620003fc6200066a60201b60201c565b69d3c21bcecceda1000000620007e460201b60201c565b6200045760646200044360026200042f6200095c60201b60201c565b6200096660201b6200165e1790919060201c565b6200097e60201b620016741790919060201c565b600981905550620004a26103e86200048e60056200047a6200095c60201b60201c565b6200096660201b6200165e1790919060201c565b6200097e60201b620016741790919060201c565b600a81905550620004ed6103e8620004d96001620004c56200095c60201b60201c565b6200096660201b6200165e1790919060201c565b6200097e60201b620016741790919060201c565b6008819055505050620011dc565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620006a46200099660201b60201c565b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150362000739576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007309062000f6b565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620007d8919062000faa565b60405180910390a25050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000856576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200084d9062001017565b60405180910390fd5b6200086a6000838362000a2760201b60201c565b80600260008282546200087e919062001039565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620008d5919062001039565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200093c919062001085565b60405180910390a3620009586000838362000a2c60201b60201c565b5050565b6000600254905090565b60008183620009769190620010a2565b905092915050565b600081836200098e919062001132565b905092915050565b620009a6620004fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620009cc6200066a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a1c90620011ba565b60405180910390fd5b565b505050565b505050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a7a8262000a31565b915062000a878362000a31565b9250828201905060ff81111562000aa35762000aa262000a3e565b5b92915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000b2b57607f821691505b60208210810362000b415762000b4062000ae3565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000bab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b6c565b62000bb7868362000b6c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000c0462000bfe62000bf88462000bcf565b62000bd9565b62000bcf565b9050919050565b6000819050919050565b62000c208362000be3565b62000c3862000c2f8262000c0b565b84845462000b79565b825550505050565b600090565b62000c4f62000c40565b62000c5c81848462000c15565b505050565b5b8181101562000c845762000c7860008262000c45565b60018101905062000c62565b5050565b601f82111562000cd35762000c9d8162000b47565b62000ca88462000b5c565b8101602085101562000cb8578190505b62000cd062000cc78562000b5c565b83018262000c61565b50505b505050565b600082821c905092915050565b600062000cf86000198460080262000cd8565b1980831691505092915050565b600062000d13838362000ce5565b9150826002028217905092915050565b62000d2e8262000aa9565b67ffffffffffffffff81111562000d4a5762000d4962000ab4565b5b62000d56825462000b12565b62000d6382828562000c88565b600060209050601f83116001811462000d9b576000841562000d86578287015190505b62000d92858262000d05565b86555062000e02565b601f19841662000dab8662000b47565b60005b8281101562000dd55784890151825560018201915060208501945060208101905062000dae565b8683101562000df5578489015162000df1601f89168262000ce5565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000e3c8262000e0f565b9050919050565b62000e4e8162000e2f565b811462000e5a57600080fd5b50565b60008151905062000e6e8162000e43565b92915050565b60006020828403121562000e8d5762000e8c62000e0a565b5b600062000e9d8482850162000e5d565b91505092915050565b62000eb18162000e2f565b82525050565b600060408201905062000ece600083018562000ea6565b62000edd602083018462000ea6565b9392505050565b600082825260208201905092915050565b7f245452494245204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b600062000f5360228362000ee4565b915062000f608262000ef5565b604082019050919050565b6000602082019050818103600083015262000f868162000f44565b9050919050565b60008115159050919050565b62000fa48162000f8d565b82525050565b600060208201905062000fc1600083018462000f99565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000fff601f8362000ee4565b91506200100c8262000fc7565b602082019050919050565b60006020820190508181036000830152620010328162000ff0565b9050919050565b6000620010468262000bcf565b9150620010538362000bcf565b92508282019050808211156200106e576200106d62000a3e565b5b92915050565b6200107f8162000bcf565b82525050565b60006020820190506200109c600083018462001074565b92915050565b6000620010af8262000bcf565b9150620010bc8362000bcf565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620010f857620010f762000a3e565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200113f8262000bcf565b91506200114c8362000bcf565b9250826200115f576200115e62001103565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000620011a260208362000ee4565b9150620011af826200116a565b602082019050919050565b60006020820190508181036000830152620011d58162001193565b9050919050565b613ac380620011ec6000396000f3fe6080604052600436106102085760003560e01c806395d89b4111610118578063c851cc32116100a0578063e9240c2d1161006f578063e9240c2d1461079a578063ec28438a146107c5578063f2fde38b146107ee578063f86ae93914610817578063f9d0831a146108425761020f565b8063c851cc32146106e0578063dd62ed3e14610709578063df04025114610746578063e2f456051461076f5761020f565b8063a457c2d7116100e7578063a457c2d7146105d7578063a9059cbb14610614578063b62496f514610651578063c02466681461068e578063c492f046146106b75761020f565b806395d89b411461052d578063962dfc751461055857806398118cb4146105835780639a7a23d6146105ae5761020f565b80634fbee1931161019b5780636b67c4df1161016a5780636b67c4df1461045857806370a0823114610483578063715018a6146104c05780638c0b5e22146104d75780638da5cb5b146105025761020f565b80634fbee1931461039e5780635d098b38146103db5780636402511e1461040457806366a88d961461042d5761020f565b806327a14fc2116101d757806327a14fc2146102e4578063313ce5671461030d57806339509351146103385780633985cce7146103755761020f565b806306fdde0314610214578063095ea7b31461023f57806318160ddd1461027c57806323b872dd146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961086b565b6040516102369190612769565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190612829565b6108fd565b6040516102739190612884565b60405180910390f35b34801561028857600080fd5b50610291610920565b60405161029e91906128ae565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906128c9565b61092a565b6040516102db9190612884565b60405180910390f35b3480156102f057600080fd5b5061030b6004803603810190610306919061291c565b610959565b005b34801561031957600080fd5b5061032261096b565b60405161032f9190612965565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a9190612829565b610974565b60405161036c9190612884565b60405180910390f35b34801561038157600080fd5b5061039c600480360381019061039791906129ac565b6109ab565b005b3480156103aa57600080fd5b506103c560048036038101906103c091906129d9565b610a1a565b6040516103d29190612884565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612a44565b610a70565b005b34801561041057600080fd5b5061042b6004803603810190610426919061291c565b610abc565b005b34801561043957600080fd5b50610442610ace565b60405161044f91906128ae565b60405180910390f35b34801561046457600080fd5b5061046d610ad4565b60405161047a9190612965565b60405180910390f35b34801561048f57600080fd5b506104aa60048036038101906104a591906129d9565b610ae7565b6040516104b791906128ae565b60405180910390f35b3480156104cc57600080fd5b506104d5610b2f565b005b3480156104e357600080fd5b506104ec610b43565b6040516104f991906128ae565b60405180910390f35b34801561050e57600080fd5b50610517610b49565b6040516105249190612a80565b60405180910390f35b34801561053957600080fd5b50610542610b73565b60405161054f9190612769565b60405180910390f35b34801561056457600080fd5b5061056d610c05565b60405161057a9190612aaa565b60405180910390f35b34801561058f57600080fd5b50610598610c2b565b6040516105a59190612965565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190612af1565b610c3e565b005b3480156105e357600080fd5b506105fe60048036038101906105f99190612829565b610c54565b60405161060b9190612884565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190612829565b610ccb565b6040516106489190612884565b60405180910390f35b34801561065d57600080fd5b50610678600480360381019061067391906129d9565b610cee565b6040516106859190612884565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b09190612af1565b610d0e565b005b3480156106c357600080fd5b506106de60048036038101906106d99190612b96565b610e51565b005b3480156106ec57600080fd5b50610707600480360381019061070291906129d9565b610f39565b005b34801561071557600080fd5b50610730600480360381019061072b9190612bf6565b611275565b60405161073d91906128ae565b60405180910390f35b34801561075257600080fd5b5061076d600480360381019061076891906129ac565b6112fc565b005b34801561077b57600080fd5b5061078461136b565b60405161079191906128ae565b60405180910390f35b3480156107a657600080fd5b506107af611371565b6040516107bc9190612c95565b60405180910390f35b3480156107d157600080fd5b506107ec60048036038101906107e7919061291c565b611397565b005b3480156107fa57600080fd5b50610815600480360381019061081091906129d9565b6113a9565b005b34801561082357600080fd5b5061082c61142c565b6040516108399190612a80565b60405180910390f35b34801561084e57600080fd5b50610869600480360381019061086491906129d9565b611452565b005b60606003805461087a90612cdf565b80601f01602080910402602001604051908101604052809291908181526020018280546108a690612cdf565b80156108f35780601f106108c8576101008083540402835291602001916108f3565b820191906000526020600020905b8154815290600101906020018083116108d657829003601f168201915b5050505050905090565b60008061090861168a565b9050610915818585611692565b600191505092915050565b6000600254905090565b60008061093561168a565b905061094285828561185b565b61094d8585856118e7565b60019150509392505050565b610961611e00565b8060098190555050565b60006012905090565b60008061097f61168a565b90506109a08185856109918589611275565b61099b9190612d3f565b611692565b600191505092915050565b6109b3611e00565b80600b60016101000a81548160ff021916908360ff160217905550600b60019054906101000a900460ff16600b60009054906101000a900460ff166109f89190612d73565b60ff16600b60026101000a81548161ffff021916908361ffff16021790555050565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610a78611e00565b80600b60046101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610ac4611e00565b8060088190555050565b60095481565b600b60019054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b37611e00565b610b416000611e7e565b565b600a5481565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610b8290612cdf565b80601f0160208091040260200160405190810160405280929190818152602001828054610bae90612cdf565b8015610bfb5780601f10610bd057610100808354040283529160200191610bfb565b820191906000526020600020905b815481529060010190602001808311610bde57829003601f168201915b5050505050905090565b600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b610c46611e00565b610c508282611f44565b5050565b600080610c5f61168a565b90506000610c6d8286611275565b905083811015610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990612e1a565b60405180910390fd5b610cbf8286868403611692565b60019250505092915050565b600080610cd661168a565b9050610ce38185856118e7565b600191505092915050565b600d6020528060005260406000206000915054906101000a900460ff1681565b610d16611e00565b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f90612eac565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051610e459190612884565b60405180910390a25050565b610e59611e00565b60005b83839050811015610ef85781600c6000868685818110610e7f57610e7e612ecc565b5b9050602002016020810190610e9491906129d9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ef090612efb565b915050610e5c565b507f7fdaf542373fa84f4ee8d662c642f44e4c2276a217d7d29e548b6eb29a233b35838383604051610f2c93929190613006565b60405180910390a1505050565b610f41611e00565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc8906130aa565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f2c6fb4d5ff9fad6ecf2e09cd64cbc9aad92a8b9d2cc0e5c3ddef9b529b0b5ffd60405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112191906130df565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ce91906130df565b6040518363ffffffff1660e01b81526004016111eb92919061310c565b6020604051808303816000875af115801561120a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122e91906130df565b905080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611304611e00565b80600b60006101000a81548160ff021916908360ff160217905550600b60019054906101000a900460ff16600b60009054906101000a900460ff166113499190612d73565b60ff16600b60026101000a81548161ffff021916908361ffff16021790555050565b60085481565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61139f611e00565b80600a8190555050565b6113b1611e00565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611420576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611417906131a7565b60405180910390fd5b61142981611e7e565b50565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61145a611e00565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90613213565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361154f57611504610b49565b73ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015611549573d6000803e3d6000fd5b5061165b565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161158f9190612a80565b602060405180830381865afa1580156115ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d09190613248565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115f6610b49565b836040518363ffffffff1660e01b8152600401611614929190613275565b6020604051808303816000875af1158015611633573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165791906132b3565b5050505b50565b6000818361166c91906132e0565b905092915050565b600081836116829190613369565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f89061340c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611770576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117679061349e565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161184e91906128ae565b60405180910390a3505050565b60006118678484611275565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146118e157818110156118d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ca9061350a565b60405180910390fd5b6118e08484848403611692565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611956576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194d9061359c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bc9061362e565b60405180910390fd5b600081036119de576119d983836000611fe5565b611dfb565b60006119e930610ae7565b905060006008548210159050808015611a0f5750600760149054906101000a900460ff16155b8015611a655750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611aa45750611a74610b49565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ae35750611ab3610b49565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bd6576001600760146101000a81548160ff02191690831515021790555060085491506000611b55600b60029054906101000a900461ffff1661ffff16611b47600b60019054906101000a900460ff1660ff168661165e90919063ffffffff16565b61167490919063ffffffff16565b9050611b6081612264565b6000611bad600b60029054906101000a900461ffff1661ffff16611b9f600b60009054906101000a900460ff1660ff168761165e90919063ffffffff16565b61167490919063ffffffff16565b9050611bb8816122f7565b6000600760146101000a81548160ff02191690831515021790555050505b6000600760149054906101000a900460ff16159050600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c8c5750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611c9657600090505b8015611dec57600a54841115611ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd89061369a565b60405180910390fd5b600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d8b57600954611d3e86610ae7565b85611d499190612d3f565b1115611d8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8190613706565b60405180910390fd5b5b6000611dc86103e8611dba600b60029054906101000a900461ffff1661ffff168861165e90919063ffffffff16565b61167490919063ffffffff16565b9050611ddd818661239790919063ffffffff16565b9450611dea873083611fe5565b505b611df7868686611fe5565b5050505b505050565b611e0861168a565b73ffffffffffffffffffffffffffffffffffffffff16611e26610b49565b73ffffffffffffffffffffffffffffffffffffffff1614611e7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7390613772565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204b9061359c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ba9061362e565b60405180910390fd5b6120ce8383836123ad565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214b90613804565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121e79190612d3f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161224b91906128ae565b60405180910390a361225e8484846123b2565b50505050565b6000479050612272826123b7565b6000612287824761239790919063ffffffff16565b9050600b60049054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156122f1573d6000803e3d6000fd5b50505050565b600061230d60028361167490919063ffffffff16565b90506000612324828461239790919063ffffffff16565b90506000479050612334836123b7565b6000612349824761239790919063ffffffff16565b905061235583826125fa565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56184828560405161238893929190613824565b60405180910390a15050505050565b600081836123a5919061385b565b905092915050565b505050565b505050565b6000600267ffffffffffffffff8111156123d4576123d361388f565b5b6040519080825280602002602001820160405280156124025781602001602082028036833780820191505090505b509050308160008151811061241a57612419612ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124e591906130df565b816001815181106124f9576124f8612ecc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061256030600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611692565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125c495949392919061397f565b600060405180830381600087803b1580156125de57600080fd5b505af11580156125f2573d6000803e3d6000fd5b505050505050565b61262730600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611692565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230856000806000426040518863ffffffff1660e01b815260040161268f969594939291906139d9565b60606040518083038185885af11580156126ad573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126d29190613a3a565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127135780820151818401526020810190506126f8565b60008484015250505050565b6000601f19601f8301169050919050565b600061273b826126d9565b61274581856126e4565b93506127558185602086016126f5565b61275e8161271f565b840191505092915050565b600060208201905081810360008301526127838184612730565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127c082612795565b9050919050565b6127d0816127b5565b81146127db57600080fd5b50565b6000813590506127ed816127c7565b92915050565b6000819050919050565b612806816127f3565b811461281157600080fd5b50565b600081359050612823816127fd565b92915050565b600080604083850312156128405761283f61278b565b5b600061284e858286016127de565b925050602061285f85828601612814565b9150509250929050565b60008115159050919050565b61287e81612869565b82525050565b60006020820190506128996000830184612875565b92915050565b6128a8816127f3565b82525050565b60006020820190506128c3600083018461289f565b92915050565b6000806000606084860312156128e2576128e161278b565b5b60006128f0868287016127de565b9350506020612901868287016127de565b925050604061291286828701612814565b9150509250925092565b6000602082840312156129325761293161278b565b5b600061294084828501612814565b91505092915050565b600060ff82169050919050565b61295f81612949565b82525050565b600060208201905061297a6000830184612956565b92915050565b61298981612949565b811461299457600080fd5b50565b6000813590506129a681612980565b92915050565b6000602082840312156129c2576129c161278b565b5b60006129d084828501612997565b91505092915050565b6000602082840312156129ef576129ee61278b565b5b60006129fd848285016127de565b91505092915050565b6000612a1182612795565b9050919050565b612a2181612a06565b8114612a2c57600080fd5b50565b600081359050612a3e81612a18565b92915050565b600060208284031215612a5a57612a5961278b565b5b6000612a6884828501612a2f565b91505092915050565b612a7a816127b5565b82525050565b6000602082019050612a956000830184612a71565b92915050565b612aa481612a06565b82525050565b6000602082019050612abf6000830184612a9b565b92915050565b612ace81612869565b8114612ad957600080fd5b50565b600081359050612aeb81612ac5565b92915050565b60008060408385031215612b0857612b0761278b565b5b6000612b16858286016127de565b9250506020612b2785828601612adc565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b5657612b55612b31565b5b8235905067ffffffffffffffff811115612b7357612b72612b36565b5b602083019150836020820283011115612b8f57612b8e612b3b565b5b9250929050565b600080600060408486031215612baf57612bae61278b565b5b600084013567ffffffffffffffff811115612bcd57612bcc612790565b5b612bd986828701612b40565b93509350506020612bec86828701612adc565b9150509250925092565b60008060408385031215612c0d57612c0c61278b565b5b6000612c1b858286016127de565b9250506020612c2c858286016127de565b9150509250929050565b6000819050919050565b6000612c5b612c56612c5184612795565b612c36565b612795565b9050919050565b6000612c6d82612c40565b9050919050565b6000612c7f82612c62565b9050919050565b612c8f81612c74565b82525050565b6000602082019050612caa6000830184612c86565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612cf757607f821691505b602082108103612d0a57612d09612cb0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d4a826127f3565b9150612d55836127f3565b9250828201905080821115612d6d57612d6c612d10565b5b92915050565b6000612d7e82612949565b9150612d8983612949565b9250828201905060ff811115612da257612da1612d10565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612e046025836126e4565b9150612e0f82612da8565b604082019050919050565b60006020820190508181036000830152612e3381612df7565b9050919050565b7f245452494245204163636f756e7420697320616c7265616479206578636c756460008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e966022836126e4565b9150612ea182612e3a565b604082019050919050565b60006020820190508181036000830152612ec581612e89565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612f06826127f3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f3857612f37612d10565b5b600182019050919050565b600082825260208201905092915050565b6000819050919050565b612f67816127b5565b82525050565b6000612f798383612f5e565b60208301905092915050565b6000612f9460208401846127de565b905092915050565b6000602082019050919050565b6000612fb58385612f43565b9350612fc082612f54565b8060005b85811015612ff957612fd68284612f85565b612fe08882612f6d565b9750612feb83612f9c565b925050600181019050612fc4565b5085925050509392505050565b60006040820190508181036000830152613021818587612fa9565b90506130306020830184612875565b949350505050565b7f2454524942452054686520726f7574657220616c72656164792068617320746860008201527f6174206164647265737300000000000000000000000000000000000000000000602082015250565b6000613094602a836126e4565b915061309f82613038565b604082019050919050565b600060208201905081810360008301526130c381613087565b9050919050565b6000815190506130d9816127c7565b92915050565b6000602082840312156130f5576130f461278b565b5b6000613103848285016130ca565b91505092915050565b60006040820190506131216000830185612a71565b61312e6020830184612a71565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006131916026836126e4565b915061319c82613135565b604082019050919050565b600060208201905081810360008301526131c081613184565b9050919050565b7f4e6f207275672070756c6c730000000000000000000000000000000000000000600082015250565b60006131fd600c836126e4565b9150613208826131c7565b602082019050919050565b6000602082019050818103600083015261322c816131f0565b9050919050565b600081519050613242816127fd565b92915050565b60006020828403121561325e5761325d61278b565b5b600061326c84828501613233565b91505092915050565b600060408201905061328a6000830185612a71565b613297602083018461289f565b9392505050565b6000815190506132ad81612ac5565b92915050565b6000602082840312156132c9576132c861278b565b5b60006132d78482850161329e565b91505092915050565b60006132eb826127f3565b91506132f6836127f3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561332f5761332e612d10565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613374826127f3565b915061337f836127f3565b92508261338f5761338e61333a565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133f66024836126e4565b91506134018261339a565b604082019050919050565b60006020820190508181036000830152613425816133e9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006134886022836126e4565b91506134938261342c565b604082019050919050565b600060208201905081810360008301526134b78161347b565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006134f4601d836126e4565b91506134ff826134be565b602082019050919050565b60006020820190508181036000830152613523816134e7565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006135866025836126e4565b91506135918261352a565b604082019050919050565b600060208201905081810360008301526135b581613579565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136186023836126e4565b9150613623826135bc565b604082019050919050565b600060208201905081810360008301526136478161360b565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206c696d6974000000600082015250565b6000613684601d836126e4565b915061368f8261364e565b602082019050919050565b600060208201905081810360008301526136b381613677565b9050919050565b7f57616c6c6574206c696d69742072656163686564000000000000000000000000600082015250565b60006136f06014836126e4565b91506136fb826136ba565b602082019050919050565b6000602082019050818103600083015261371f816136e3565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061375c6020836126e4565b915061376782613726565b602082019050919050565b6000602082019050818103600083015261378b8161374f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006137ee6026836126e4565b91506137f982613792565b604082019050919050565b6000602082019050818103600083015261381d816137e1565b9050919050565b6000606082019050613839600083018661289f565b613846602083018561289f565b613853604083018461289f565b949350505050565b6000613866826127f3565b9150613871836127f3565b925082820390508181111561388957613888612d10565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006138e36138de6138d9846138be565b612c36565b6127f3565b9050919050565b6138f3816138c8565b82525050565b600081519050919050565b6000819050602082019050919050565b6000602082019050919050565b600061392c826138f9565b6139368185612f43565b935061394183613904565b8060005b838110156139725781516139598882612f6d565b975061396483613914565b925050600181019050613945565b5085935050505092915050565b600060a082019050613994600083018861289f565b6139a160208301876138ea565b81810360408301526139b38186613921565b90506139c26060830185612a71565b6139cf608083018461289f565b9695505050505050565b600060c0820190506139ee6000830189612a71565b6139fb602083018861289f565b613a0860408301876138ea565b613a1560608301866138ea565b613a226080830185612a71565b613a2f60a083018461289f565b979650505050505050565b600080600060608486031215613a5357613a5261278b565b5b6000613a6186828701613233565b9350506020613a7286828701613233565b9250506040613a8386828701613233565b915050925092509256fea264697066735822122073fa2c2db79dd31e8a8974b28770159a402aeecb339dbcee2bd988e95035620564736f6c63430008100033

Deployed ByteCode Sourcemap

36867:8442:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22180:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24531:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23300:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25312:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40407:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23142:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26016:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40777:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;41275:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40172:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;40295:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37102:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37210:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23471:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35614:103;;;;;;;;;;;;;:::i;:::-;;37138:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34966:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22399:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37311:102;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37173:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40931:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26757:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23804:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;37481:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39569:282;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39859:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;39051:510;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24060:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40622:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;37062:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36945:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40518:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;35872:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36993:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43157:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22180:100;22234:13;22267:5;22260:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22180:100;:::o;24531:201::-;24614:4;24631:13;24647:12;:10;:12::i;:::-;24631:28;;24670:32;24679:5;24686:7;24695:6;24670:8;:32::i;:::-;24720:4;24713:11;;;24531:201;;;;:::o;23300:108::-;23361:7;23388:12;;23381:19;;23300:108;:::o;25312:295::-;25443:4;25460:15;25478:12;:10;:12::i;:::-;25460:30;;25501:38;25517:4;25523:7;25532:6;25501:15;:38::i;:::-;25550:27;25560:4;25566:2;25570:6;25550:9;:27::i;:::-;25595:4;25588:11;;;25312:295;;;;;:::o;40407:103::-;34852:13;:11;:13::i;:::-;40497:5:::1;40480:14;:22;;;;40407:103:::0;:::o;23142:93::-;23200:5;23225:2;23218:9;;23142:93;:::o;26016:238::-;26104:4;26121:13;26137:12;:10;:12::i;:::-;26121:28;;26160:64;26169:5;26176:7;26213:10;26185:25;26195:5;26202:7;26185:9;:25::i;:::-;:38;;;;:::i;:::-;26160:8;:64::i;:::-;26242:4;26235:11;;;26016:238;;;;:::o;40777:146::-;34852:13;:11;:13::i;:::-;40860:5:::1;40845:12;;:20;;;;;;;;;;;;;;;;;;40903:12;;;;;;;;;;;40888;;;;;;;;;;;:27;;;;:::i;:::-;40876:39;;:9;;:39;;;;;;;;;;;;;;;;;;40777:146:::0;:::o;41275:126::-;41341:4;41365:19;:28;41385:7;41365:28;;;;;;;;;;;;;;;;;;;;;;;;;41358:35;;41275:126;;;:::o;40172:115::-;34852:13;:11;:13::i;:::-;40273:6:::1;40254:16;;:25;;;;;;;;;;;;;;;;;;40172:115:::0;:::o;40295:104::-;34852:13;:11;:13::i;:::-;40386:5:::1;40365:18;:26;;;;40295:104:::0;:::o;37102:29::-;;;;:::o;37210:30::-;;;;;;;;;;;;;:::o;23471:127::-;23545:7;23572:9;:18;23582:7;23572:18;;;;;;;;;;;;;;;;23565:25;;23471:127;;;:::o;35614:103::-;34852:13;:11;:13::i;:::-;35679:30:::1;35706:1;35679:18;:30::i;:::-;35614:103::o:0;37138:26::-;;;;:::o;34966:87::-;35012:7;35039:6;;;;;;;;;;;35032:13;;34966:87;:::o;22399:104::-;22455:13;22488:7;22481:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22399:104;:::o;37311:102::-;;;;;;;;;;;;;:::o;37173:30::-;;;;;;;;;;;;;:::o;40931:140::-;34852:13;:11;:13::i;:::-;41022:41:::1;41051:4;41057:5;41022:28;:41::i;:::-;40931:140:::0;;:::o;26757:436::-;26850:4;26867:13;26883:12;:10;:12::i;:::-;26867:28;;26906:24;26933:25;26943:5;26950:7;26933:9;:25::i;:::-;26906:52;;26997:15;26977:16;:35;;26969:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;27090:60;27099:5;27106:7;27134:15;27115:16;:34;27090:8;:60::i;:::-;27181:4;27174:11;;;;26757:436;;;;:::o;23804:193::-;23883:4;23900:13;23916:12;:10;:12::i;:::-;23900:28;;23939;23949:5;23956:2;23960:6;23939:9;:28::i;:::-;23985:4;23978:11;;;23804:193;;;;:::o;37481:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;39569:282::-;34852:13;:11;:13::i;:::-;39694:8:::1;39662:40;;:19;:28;39682:7;39662:28;;;;;;;;;;;;;;;;;;;;;;;;;:40;;::::0;39654:87:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;39783:8;39752:19;:28;39772:7;39752:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;39825:7;39809:34;;;39834:8;39809:34;;;;;;:::i;:::-;;;;;;;;39569:282:::0;;:::o;39859:305::-;34852:13;:11;:13::i;:::-;39977:9:::1;39972:116;39996:8;;:15;;39992:1;:19;39972:116;;;40068:8;40033:19;:32;40053:8;;40062:1;40053:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;40033:32;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;40013:3;;;;;:::i;:::-;;;;39972:116;;;;40105:51;40137:8;;40147;40105:51;;;;;;;;:::i;:::-;;;;;;;;39859:305:::0;;;:::o;39051:510::-;34852:13;:11;:13::i;:::-;39151:15:::1;;;;;;;;;;;39129:38;;:10;:38;;::::0;39121:93:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;39263:15;;;;;;;;;;;39230:50;;39243:10;39230:50;;;;;;;;;;;;39328:10;39291:15;;:48;;;;;;;;;;;;;;;;;;39350:24;39395:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39377:55;;;39455:4;39475:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39377:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39350:158;;39537:16;39519:15;;:34;;;;;;;;;;;;;;;;;;39110:451;39051:510:::0;:::o;24060:151::-;24149:7;24176:11;:18;24188:5;24176:18;;;;;;;;;;;;;;;:27;24195:7;24176:27;;;;;;;;;;;;;;;;24169:34;;24060:151;;;;:::o;40622:147::-;34852:13;:11;:13::i;:::-;40705:5:::1;40690:12;;:20;;;;;;;;;;;;;;;;;;40749:12;;;;;;;;;;;40733;;;;;;;;;;;:28;;;;:::i;:::-;40721:40;;:9;;:40;;;;;;;;;;;;;;;;;;40622:147:::0;:::o;37062:33::-;;;;:::o;36945:41::-;;;;;;;;;;;;;:::o;40518:96::-;34852:13;:11;:13::i;:::-;40601:5:::1;40587:11;:19;;;;40518:96:::0;:::o;35872:201::-;34852:13;:11;:13::i;:::-;35981:1:::1;35961:22;;:8;:22;;::::0;35953:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;36037:28;36056:8;36037:18;:28::i;:::-;35872:201:::0;:::o;36993:30::-;;;;;;;;;;;;;:::o;43157:406::-;34852:13;:11;:13::i;:::-;43255:4:::1;43237:23;;:6;:23;;::::0;43229:48:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;43312:3;43294:22;;:6;:22;;::::0;43290:124:::1;;43341:7;:5;:7::i;:::-;43333:25;;:48;43359:21;43333:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;43396:7;;43290:124;43424:12;43446:6;43424:29;;43464:15;43482:5;:15;;;43506:4;43482:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43464:48;;43523:5;:14;;;43538:7;:5;:7::i;:::-;43547;43523:32;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;43218:345;;34876:1;43157:406:::0;:::o;16473:98::-;16531:7;16562:1;16558;:5;;;;:::i;:::-;16551:12;;16473:98;;;;:::o;16872:::-;16930:7;16961:1;16957;:5;;;;:::i;:::-;16950:12;;16872:98;;;;:::o;10497:::-;10550:7;10577:10;10570:17;;10497:98;:::o;30382:380::-;30535:1;30518:19;;:5;:19;;;30510:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30616:1;30597:21;;:7;:21;;;30589:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30700:6;30670:11;:18;30682:5;30670:18;;;;;;;;;;;;;;;:27;30689:7;30670:27;;;;;;;;;;;;;;;:36;;;;30738:7;30722:32;;30731:5;30722:32;;;30747:6;30722:32;;;;;;:::i;:::-;;;;;;;;30382:380;;;:::o;31053:453::-;31188:24;31215:25;31225:5;31232:7;31215:9;:25::i;:::-;31188:52;;31275:17;31255:16;:37;31251:248;;31337:6;31317:16;:26;;31309:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31421:51;31430:5;31437:7;31465:6;31446:16;:25;31421:8;:51::i;:::-;31251:248;31177:329;31053:453;;;:::o;41409:1740::-;41557:1;41541:18;;:4;:18;;;41533:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;41634:1;41620:16;;:2;:16;;;41612:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;41703:1;41693:6;:11;41689:93;;41721:28;41737:4;41743:2;41747:1;41721:15;:28::i;:::-;41764:7;;41689:93;41794:28;41825:24;41843:4;41825:9;:24::i;:::-;41794:55;;41862:12;41901:18;;41877:20;:42;;41862:57;;41936:7;:20;;;;;41948:8;;;;;;;;;;;41947:9;41936:20;:56;;;;;41961:25;:31;41987:4;41961:31;;;;;;;;;;;;;;;;;;;;;;;;;41960:32;41936:56;:75;;;;;42004:7;:5;:7::i;:::-;41996:15;;:4;:15;;;;41936:75;:92;;;;;42021:7;:5;:7::i;:::-;42015:13;;:2;:13;;;;41936:92;41932:495;;;42056:4;42045:8;;:15;;;;;;;;;;;;;;;;;;42100:18;;42077:41;;42135:17;42155:53;42198:9;;;;;;;;;;;42155:53;;:38;42180:12;;;;;;;;;;;42155:38;;:20;:24;;:38;;;;:::i;:::-;:42;;:53;;;;:::i;:::-;42135:73;;42223:27;42240:9;42223:16;:27::i;:::-;42267:18;42288:53;42331:9;;;;;;;;;;;42288:53;;:38;42313:12;;;;;;;;;;;42288:38;;:20;:24;;:38;;;;:::i;:::-;:42;;:53;;;;:::i;:::-;42267:74;;42356:26;42371:10;42356:14;:26::i;:::-;42410:5;42399:8;;:16;;;;;;;;;;;;;;;;;;42030:397;;41932:495;42439:12;42455:8;;;;;;;;;;;42454:9;42439:24;;42565:19;:25;42585:4;42565:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;42594:19;:23;42614:2;42594:23;;;;;;;;;;;;;;;;;;;;;;;;;42565:52;42561:100;;;42644:5;42634:15;;42561:100;42677:7;42673:423;;;42719:11;;42709:6;:21;;42701:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;42784:25;:29;42810:2;42784:29;;;;;;;;;;;;;;;;;;;;;;;;;42779:144;;42868:14;;42851:13;42861:2;42851:9;:13::i;:::-;42842:6;:22;;;;:::i;:::-;:40;;42834:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;42779:144;42937:12;42952:31;42978:4;42952:21;42963:9;;;;;;;;;;;42952:21;;:6;:10;;:21;;;;:::i;:::-;:25;;:31;;;;:::i;:::-;42937:46;;43009:16;43020:4;43009:6;:10;;:16;;;;:::i;:::-;43000:25;;43042:42;43058:4;43072;43079;43042:15;:42::i;:::-;42686:410;42673:423;43108:33;43124:4;43130:2;43134:6;43108:15;:33::i;:::-;41522:1627;;;41409:1740;;;;:::o;35131:132::-;35206:12;:10;:12::i;:::-;35195:23;;:7;:5;:7::i;:::-;:23;;;35187:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35131:132::o;36233:191::-;36307:16;36326:6;;;;;;;;;;;36307:25;;36352:8;36343:6;;:17;;;;;;;;;;;;;;;;;;36407:8;36376:40;;36397:8;36376:40;;;;;;;;;;;;36296:128;36233:191;:::o;41079:188::-;41196:5;41162:25;:31;41188:4;41162:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;41253:5;41219:40;;41247:4;41219:40;;;;;;;;;;;;41079:188;;:::o;27663:671::-;27810:1;27794:18;;:4;:18;;;27786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;27887:1;27873:16;;:2;:16;;;27865:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;27942:38;27963:4;27969:2;27973:6;27942:20;:38::i;:::-;27993:19;28015:9;:15;28025:4;28015:15;;;;;;;;;;;;;;;;27993:37;;28064:6;28049:11;:21;;28041:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;28181:6;28167:11;:20;28149:9;:15;28159:4;28149:15;;;;;;;;;;;;;;;:38;;;;28226:6;28209:9;:13;28219:2;28209:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;28265:2;28250:26;;28259:4;28250:26;;;28269:6;28250:26;;;;;;:::i;:::-;;;;;;;;28289:37;28309:4;28315:2;28319:6;28289:19;:37::i;:::-;27775:559;27663:671;;;:::o;43571:273::-;43632:22;43657:21;43632:46;;43689:24;43706:6;43689:16;:24::i;:::-;43724:18;43745:41;43771:14;43745:21;:25;;:41;;;;:::i;:::-;43724:62;;43799:16;;;;;;;;;;;:25;;:37;43825:10;43799:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43621:223;;43571:273;:::o;43852:419::-;43911:12;43926:13;43937:1;43926:6;:10;;:13;;;;:::i;:::-;43911:28;;43950:17;43970:16;43981:4;43970:6;:10;;:16;;;;:::i;:::-;43950:36;;43999:22;44024:21;43999:46;;44060:22;44077:4;44060:16;:22::i;:::-;44094:18;44115:41;44141:14;44115:21;:25;;:41;;;;:::i;:::-;44094:62;;44167:35;44180:9;44191:10;44167:12;:35::i;:::-;44220:43;44235:4;44241:10;44253:9;44220:43;;;;;;;;:::i;:::-;;;;;;;;43900:371;;;;43852:419;:::o;16116:98::-;16174:7;16205:1;16201;:5;;;;:::i;:::-;16194:12;;16116:98;;;;:::o;32106:125::-;;;;:::o;32835:124::-;;;;:::o;44279:501::-;44345:21;44383:1;44369:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44345:40;;44414:4;44396;44401:1;44396:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;44440:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;44430:4;44435:1;44430:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;44475:62;44492:4;44507:15;;;;;;;;;;;44525:11;44475:8;:62::i;:::-;44576:15;;;;;;;;;;;:66;;;44657:11;44683:1;44699:4;44726;44746:15;44576:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44334:446;44279:501;:::o;44788:518::-;44936:62;44953:4;44968:15;;;;;;;;;;;44986:11;44936:8;:62::i;:::-;45041:15;;;;;;;;;;;:31;;;45081:9;45115:4;45135:11;45161:1;45204;45255;45272:15;45041:257;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;44788:518;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5259:22;5275:5;5259:22;:::i;:::-;5252:5;5249:33;5239:61;;5296:1;5293;5286:12;5239:61;5188:118;:::o;5312:135::-;5356:5;5394:6;5381:20;5372:29;;5410:31;5435:5;5410:31;:::i;:::-;5312:135;;;;:::o;5453:325::-;5510:6;5559:2;5547:9;5538:7;5534:23;5530:32;5527:119;;;5565:79;;:::i;:::-;5527:119;5685:1;5710:51;5753:7;5744:6;5733:9;5729:22;5710:51;:::i;:::-;5700:61;;5656:115;5453:325;;;;:::o;5784:329::-;5843:6;5892:2;5880:9;5871:7;5867:23;5863:32;5860:119;;;5898:79;;:::i;:::-;5860:119;6018:1;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5989:117;5784:329;;;;:::o;6119:104::-;6164:7;6193:24;6211:5;6193:24;:::i;:::-;6182:35;;6119:104;;;:::o;6229:138::-;6310:32;6336:5;6310:32;:::i;:::-;6303:5;6300:43;6290:71;;6357:1;6354;6347:12;6290:71;6229:138;:::o;6373:155::-;6427:5;6465:6;6452:20;6443:29;;6481:41;6516:5;6481:41;:::i;:::-;6373:155;;;;:::o;6534:345::-;6601:6;6650:2;6638:9;6629:7;6625:23;6621:32;6618:119;;;6656:79;;:::i;:::-;6618:119;6776:1;6801:61;6854:7;6845:6;6834:9;6830:22;6801:61;:::i;:::-;6791:71;;6747:125;6534:345;;;;:::o;6885:118::-;6972:24;6990:5;6972:24;:::i;:::-;6967:3;6960:37;6885:118;;:::o;7009:222::-;7102:4;7140:2;7129:9;7125:18;7117:26;;7153:71;7221:1;7210:9;7206:17;7197:6;7153:71;:::i;:::-;7009:222;;;;:::o;7237:142::-;7340:32;7366:5;7340:32;:::i;:::-;7335:3;7328:45;7237:142;;:::o;7385:254::-;7494:4;7532:2;7521:9;7517:18;7509:26;;7545:87;7629:1;7618:9;7614:17;7605:6;7545:87;:::i;:::-;7385:254;;;;:::o;7645:116::-;7715:21;7730:5;7715:21;:::i;:::-;7708:5;7705:32;7695:60;;7751:1;7748;7741:12;7695:60;7645:116;:::o;7767:133::-;7810:5;7848:6;7835:20;7826:29;;7864:30;7888:5;7864:30;:::i;:::-;7767:133;;;;:::o;7906:468::-;7971:6;7979;8028:2;8016:9;8007:7;8003:23;7999:32;7996:119;;;8034:79;;:::i;:::-;7996:119;8154:1;8179:53;8224:7;8215:6;8204:9;8200:22;8179:53;:::i;:::-;8169:63;;8125:117;8281:2;8307:50;8349:7;8340:6;8329:9;8325:22;8307:50;:::i;:::-;8297:60;;8252:115;7906:468;;;;;:::o;8380:117::-;8489:1;8486;8479:12;8503:117;8612:1;8609;8602:12;8626:117;8735:1;8732;8725:12;8766:568;8839:8;8849:6;8899:3;8892:4;8884:6;8880:17;8876:27;8866:122;;8907:79;;:::i;:::-;8866:122;9020:6;9007:20;8997:30;;9050:18;9042:6;9039:30;9036:117;;;9072:79;;:::i;:::-;9036:117;9186:4;9178:6;9174:17;9162:29;;9240:3;9232:4;9224:6;9220:17;9210:8;9206:32;9203:41;9200:128;;;9247:79;;:::i;:::-;9200:128;8766:568;;;;;:::o;9340:698::-;9432:6;9440;9448;9497:2;9485:9;9476:7;9472:23;9468:32;9465:119;;;9503:79;;:::i;:::-;9465:119;9651:1;9640:9;9636:17;9623:31;9681:18;9673:6;9670:30;9667:117;;;9703:79;;:::i;:::-;9667:117;9816:80;9888:7;9879:6;9868:9;9864:22;9816:80;:::i;:::-;9798:98;;;;9594:312;9945:2;9971:50;10013:7;10004:6;9993:9;9989:22;9971:50;:::i;:::-;9961:60;;9916:115;9340:698;;;;;:::o;10044:474::-;10112:6;10120;10169:2;10157:9;10148:7;10144:23;10140:32;10137:119;;;10175:79;;:::i;:::-;10137:119;10295:1;10320:53;10365:7;10356:6;10345:9;10341:22;10320:53;:::i;:::-;10310:63;;10266:117;10422:2;10448:53;10493:7;10484:6;10473:9;10469:22;10448:53;:::i;:::-;10438:63;;10393:118;10044:474;;;;;:::o;10524:60::-;10552:3;10573:5;10566:12;;10524:60;;;:::o;10590:142::-;10640:9;10673:53;10691:34;10700:24;10718:5;10700:24;:::i;:::-;10691:34;:::i;:::-;10673:53;:::i;:::-;10660:66;;10590:142;;;:::o;10738:126::-;10788:9;10821:37;10852:5;10821:37;:::i;:::-;10808:50;;10738:126;;;:::o;10870:152::-;10946:9;10979:37;11010:5;10979:37;:::i;:::-;10966:50;;10870:152;;;:::o;11028:183::-;11141:63;11198:5;11141:63;:::i;:::-;11136:3;11129:76;11028:183;;:::o;11217:274::-;11336:4;11374:2;11363:9;11359:18;11351:26;;11387:97;11481:1;11470:9;11466:17;11457:6;11387:97;:::i;:::-;11217:274;;;;:::o;11497:180::-;11545:77;11542:1;11535:88;11642:4;11639:1;11632:15;11666:4;11663:1;11656:15;11683:320;11727:6;11764:1;11758:4;11754:12;11744:22;;11811:1;11805:4;11801:12;11832:18;11822:81;;11888:4;11880:6;11876:17;11866:27;;11822:81;11950:2;11942:6;11939:14;11919:18;11916:38;11913:84;;11969:18;;:::i;:::-;11913:84;11734:269;11683:320;;;:::o;12009:180::-;12057:77;12054:1;12047:88;12154:4;12151:1;12144:15;12178:4;12175:1;12168:15;12195:191;12235:3;12254:20;12272:1;12254:20;:::i;:::-;12249:25;;12288:20;12306:1;12288:20;:::i;:::-;12283:25;;12331:1;12328;12324:9;12317:16;;12352:3;12349:1;12346:10;12343:36;;;12359:18;;:::i;:::-;12343:36;12195:191;;;;:::o;12392:188::-;12430:3;12449:18;12465:1;12449:18;:::i;:::-;12444:23;;12481:18;12497:1;12481:18;:::i;:::-;12476:23;;12522:1;12519;12515:9;12508:16;;12545:4;12540:3;12537:13;12534:39;;;12553:18;;:::i;:::-;12534:39;12392:188;;;;:::o;12586:224::-;12726:34;12722:1;12714:6;12710:14;12703:58;12795:7;12790:2;12782:6;12778:15;12771:32;12586:224;:::o;12816:366::-;12958:3;12979:67;13043:2;13038:3;12979:67;:::i;:::-;12972:74;;13055:93;13144:3;13055:93;:::i;:::-;13173:2;13168:3;13164:12;13157:19;;12816:366;;;:::o;13188:419::-;13354:4;13392:2;13381:9;13377:18;13369:26;;13441:9;13435:4;13431:20;13427:1;13416:9;13412:17;13405:47;13469:131;13595:4;13469:131;:::i;:::-;13461:139;;13188:419;;;:::o;13613:221::-;13753:34;13749:1;13741:6;13737:14;13730:58;13822:4;13817:2;13809:6;13805:15;13798:29;13613:221;:::o;13840:366::-;13982:3;14003:67;14067:2;14062:3;14003:67;:::i;:::-;13996:74;;14079:93;14168:3;14079:93;:::i;:::-;14197:2;14192:3;14188:12;14181:19;;13840:366;;;:::o;14212:419::-;14378:4;14416:2;14405:9;14401:18;14393:26;;14465:9;14459:4;14455:20;14451:1;14440:9;14436:17;14429:47;14493:131;14619:4;14493:131;:::i;:::-;14485:139;;14212:419;;;:::o;14637:180::-;14685:77;14682:1;14675:88;14782:4;14779:1;14772:15;14806:4;14803:1;14796:15;14823:233;14862:3;14885:24;14903:5;14885:24;:::i;:::-;14876:33;;14931:66;14924:5;14921:77;14918:103;;15001:18;;:::i;:::-;14918:103;15048:1;15041:5;15037:13;15030:20;;14823:233;;;:::o;15062:184::-;15161:11;15195:6;15190:3;15183:19;15235:4;15230:3;15226:14;15211:29;;15062:184;;;;:::o;15252:102::-;15321:4;15344:3;15336:11;;15252:102;;;:::o;15360:108::-;15437:24;15455:5;15437:24;:::i;:::-;15432:3;15425:37;15360:108;;:::o;15474:179::-;15543:10;15564:46;15606:3;15598:6;15564:46;:::i;:::-;15642:4;15637:3;15633:14;15619:28;;15474:179;;;;:::o;15659:122::-;15711:5;15736:39;15771:2;15766:3;15762:12;15757:3;15736:39;:::i;:::-;15727:48;;15659:122;;;;:::o;15787:115::-;15859:4;15891;15886:3;15882:14;15874:22;;15787:115;;;:::o;15938:699::-;16067:3;16090:86;16169:6;16164:3;16090:86;:::i;:::-;16083:93;;16200:58;16252:5;16200:58;:::i;:::-;16281:7;16312:1;16297:315;16322:6;16319:1;16316:13;16297:315;;;16392:42;16427:6;16418:7;16392:42;:::i;:::-;16454:63;16513:3;16498:13;16454:63;:::i;:::-;16447:70;;16540:62;16595:6;16540:62;:::i;:::-;16530:72;;16357:255;16344:1;16341;16337:9;16332:14;;16297:315;;;16301:14;16628:3;16621:10;;16072:565;;15938:699;;;;;:::o;16643:491::-;16818:4;16856:2;16845:9;16841:18;16833:26;;16905:9;16899:4;16895:20;16891:1;16880:9;16876:17;16869:47;16933:118;17046:4;17037:6;17029;16933:118;:::i;:::-;16925:126;;17061:66;17123:2;17112:9;17108:18;17099:6;17061:66;:::i;:::-;16643:491;;;;;;:::o;17140:229::-;17280:34;17276:1;17268:6;17264:14;17257:58;17349:12;17344:2;17336:6;17332:15;17325:37;17140:229;:::o;17375:366::-;17517:3;17538:67;17602:2;17597:3;17538:67;:::i;:::-;17531:74;;17614:93;17703:3;17614:93;:::i;:::-;17732:2;17727:3;17723:12;17716:19;;17375:366;;;:::o;17747:419::-;17913:4;17951:2;17940:9;17936:18;17928:26;;18000:9;17994:4;17990:20;17986:1;17975:9;17971:17;17964:47;18028:131;18154:4;18028:131;:::i;:::-;18020:139;;17747:419;;;:::o;18172:143::-;18229:5;18260:6;18254:13;18245:22;;18276:33;18303:5;18276:33;:::i;:::-;18172:143;;;;:::o;18321:351::-;18391:6;18440:2;18428:9;18419:7;18415:23;18411:32;18408:119;;;18446:79;;:::i;:::-;18408:119;18566:1;18591:64;18647:7;18638:6;18627:9;18623:22;18591:64;:::i;:::-;18581:74;;18537:128;18321:351;;;;:::o;18678:332::-;18799:4;18837:2;18826:9;18822:18;18814:26;;18850:71;18918:1;18907:9;18903:17;18894:6;18850:71;:::i;:::-;18931:72;18999:2;18988:9;18984:18;18975:6;18931:72;:::i;:::-;18678:332;;;;;:::o;19016:225::-;19156:34;19152:1;19144:6;19140:14;19133:58;19225:8;19220:2;19212:6;19208:15;19201:33;19016:225;:::o;19247:366::-;19389:3;19410:67;19474:2;19469:3;19410:67;:::i;:::-;19403:74;;19486:93;19575:3;19486:93;:::i;:::-;19604:2;19599:3;19595:12;19588:19;;19247:366;;;:::o;19619:419::-;19785:4;19823:2;19812:9;19808:18;19800:26;;19872:9;19866:4;19862:20;19858:1;19847:9;19843:17;19836:47;19900:131;20026:4;19900:131;:::i;:::-;19892:139;;19619:419;;;:::o;20044:162::-;20184:14;20180:1;20172:6;20168:14;20161:38;20044:162;:::o;20212:366::-;20354:3;20375:67;20439:2;20434:3;20375:67;:::i;:::-;20368:74;;20451:93;20540:3;20451:93;:::i;:::-;20569:2;20564:3;20560:12;20553:19;;20212:366;;;:::o;20584:419::-;20750:4;20788:2;20777:9;20773:18;20765:26;;20837:9;20831:4;20827:20;20823:1;20812:9;20808:17;20801:47;20865:131;20991:4;20865:131;:::i;:::-;20857:139;;20584:419;;;:::o;21009:143::-;21066:5;21097:6;21091:13;21082:22;;21113:33;21140:5;21113:33;:::i;:::-;21009:143;;;;:::o;21158:351::-;21228:6;21277:2;21265:9;21256:7;21252:23;21248:32;21245:119;;;21283:79;;:::i;:::-;21245:119;21403:1;21428:64;21484:7;21475:6;21464:9;21460:22;21428:64;:::i;:::-;21418:74;;21374:128;21158:351;;;;:::o;21515:332::-;21636:4;21674:2;21663:9;21659:18;21651:26;;21687:71;21755:1;21744:9;21740:17;21731:6;21687:71;:::i;:::-;21768:72;21836:2;21825:9;21821:18;21812:6;21768:72;:::i;:::-;21515:332;;;;;:::o;21853:137::-;21907:5;21938:6;21932:13;21923:22;;21954:30;21978:5;21954:30;:::i;:::-;21853:137;;;;:::o;21996:345::-;22063:6;22112:2;22100:9;22091:7;22087:23;22083:32;22080:119;;;22118:79;;:::i;:::-;22080:119;22238:1;22263:61;22316:7;22307:6;22296:9;22292:22;22263:61;:::i;:::-;22253:71;;22209:125;21996:345;;;;:::o;22347:348::-;22387:7;22410:20;22428:1;22410:20;:::i;:::-;22405:25;;22444:20;22462:1;22444:20;:::i;:::-;22439:25;;22632:1;22564:66;22560:74;22557:1;22554:81;22549:1;22542:9;22535:17;22531:105;22528:131;;;22639:18;;:::i;:::-;22528:131;22687:1;22684;22680:9;22669:20;;22347:348;;;;:::o;22701:180::-;22749:77;22746:1;22739:88;22846:4;22843:1;22836:15;22870:4;22867:1;22860:15;22887:185;22927:1;22944:20;22962:1;22944:20;:::i;:::-;22939:25;;22978:20;22996:1;22978:20;:::i;:::-;22973:25;;23017:1;23007:35;;23022:18;;:::i;:::-;23007:35;23064:1;23061;23057:9;23052:14;;22887:185;;;;:::o;23078:223::-;23218:34;23214:1;23206:6;23202:14;23195:58;23287:6;23282:2;23274:6;23270:15;23263:31;23078:223;:::o;23307:366::-;23449:3;23470:67;23534:2;23529:3;23470:67;:::i;:::-;23463:74;;23546:93;23635:3;23546:93;:::i;:::-;23664:2;23659:3;23655:12;23648:19;;23307:366;;;:::o;23679:419::-;23845:4;23883:2;23872:9;23868:18;23860:26;;23932:9;23926:4;23922:20;23918:1;23907:9;23903:17;23896:47;23960:131;24086:4;23960:131;:::i;:::-;23952:139;;23679:419;;;:::o;24104:221::-;24244:34;24240:1;24232:6;24228:14;24221:58;24313:4;24308:2;24300:6;24296:15;24289:29;24104:221;:::o;24331:366::-;24473:3;24494:67;24558:2;24553:3;24494:67;:::i;:::-;24487:74;;24570:93;24659:3;24570:93;:::i;:::-;24688:2;24683:3;24679:12;24672:19;;24331:366;;;:::o;24703:419::-;24869:4;24907:2;24896:9;24892:18;24884:26;;24956:9;24950:4;24946:20;24942:1;24931:9;24927:17;24920:47;24984:131;25110:4;24984:131;:::i;:::-;24976:139;;24703:419;;;:::o;25128:179::-;25268:31;25264:1;25256:6;25252:14;25245:55;25128:179;:::o;25313:366::-;25455:3;25476:67;25540:2;25535:3;25476:67;:::i;:::-;25469:74;;25552:93;25641:3;25552:93;:::i;:::-;25670:2;25665:3;25661:12;25654:19;;25313:366;;;:::o;25685:419::-;25851:4;25889:2;25878:9;25874:18;25866:26;;25938:9;25932:4;25928:20;25924:1;25913:9;25909:17;25902:47;25966:131;26092:4;25966:131;:::i;:::-;25958:139;;25685:419;;;:::o;26110:224::-;26250:34;26246:1;26238:6;26234:14;26227:58;26319:7;26314:2;26306:6;26302:15;26295:32;26110:224;:::o;26340:366::-;26482:3;26503:67;26567:2;26562:3;26503:67;:::i;:::-;26496:74;;26579:93;26668:3;26579:93;:::i;:::-;26697:2;26692:3;26688:12;26681:19;;26340:366;;;:::o;26712:419::-;26878:4;26916:2;26905:9;26901:18;26893:26;;26965:9;26959:4;26955:20;26951:1;26940:9;26936:17;26929:47;26993:131;27119:4;26993:131;:::i;:::-;26985:139;;26712:419;;;:::o;27137:222::-;27277:34;27273:1;27265:6;27261:14;27254:58;27346:5;27341:2;27333:6;27329:15;27322:30;27137:222;:::o;27365:366::-;27507:3;27528:67;27592:2;27587:3;27528:67;:::i;:::-;27521:74;;27604:93;27693:3;27604:93;:::i;:::-;27722:2;27717:3;27713:12;27706:19;;27365:366;;;:::o;27737:419::-;27903:4;27941:2;27930:9;27926:18;27918:26;;27990:9;27984:4;27980:20;27976:1;27965:9;27961:17;27954:47;28018:131;28144:4;28018:131;:::i;:::-;28010:139;;27737:419;;;:::o;28162:179::-;28302:31;28298:1;28290:6;28286:14;28279:55;28162:179;:::o;28347:366::-;28489:3;28510:67;28574:2;28569:3;28510:67;:::i;:::-;28503:74;;28586:93;28675:3;28586:93;:::i;:::-;28704:2;28699:3;28695:12;28688:19;;28347:366;;;:::o;28719:419::-;28885:4;28923:2;28912:9;28908:18;28900:26;;28972:9;28966:4;28962:20;28958:1;28947:9;28943:17;28936:47;29000:131;29126:4;29000:131;:::i;:::-;28992:139;;28719:419;;;:::o;29144:170::-;29284:22;29280:1;29272:6;29268:14;29261:46;29144:170;:::o;29320:366::-;29462:3;29483:67;29547:2;29542:3;29483:67;:::i;:::-;29476:74;;29559:93;29648:3;29559:93;:::i;:::-;29677:2;29672:3;29668:12;29661:19;;29320:366;;;:::o;29692:419::-;29858:4;29896:2;29885:9;29881:18;29873:26;;29945:9;29939:4;29935:20;29931:1;29920:9;29916:17;29909:47;29973:131;30099:4;29973:131;:::i;:::-;29965:139;;29692:419;;;:::o;30117:182::-;30257:34;30253:1;30245:6;30241:14;30234:58;30117:182;:::o;30305:366::-;30447:3;30468:67;30532:2;30527:3;30468:67;:::i;:::-;30461:74;;30544:93;30633:3;30544:93;:::i;:::-;30662:2;30657:3;30653:12;30646:19;;30305:366;;;:::o;30677:419::-;30843:4;30881:2;30870:9;30866:18;30858:26;;30930:9;30924:4;30920:20;30916:1;30905:9;30901:17;30894:47;30958:131;31084:4;30958:131;:::i;:::-;30950:139;;30677:419;;;:::o;31102:225::-;31242:34;31238:1;31230:6;31226:14;31219:58;31311:8;31306:2;31298:6;31294:15;31287:33;31102:225;:::o;31333:366::-;31475:3;31496:67;31560:2;31555:3;31496:67;:::i;:::-;31489:74;;31572:93;31661:3;31572:93;:::i;:::-;31690:2;31685:3;31681:12;31674:19;;31333:366;;;:::o;31705:419::-;31871:4;31909:2;31898:9;31894:18;31886:26;;31958:9;31952:4;31948:20;31944:1;31933:9;31929:17;31922:47;31986:131;32112:4;31986:131;:::i;:::-;31978:139;;31705:419;;;:::o;32130:442::-;32279:4;32317:2;32306:9;32302:18;32294:26;;32330:71;32398:1;32387:9;32383:17;32374:6;32330:71;:::i;:::-;32411:72;32479:2;32468:9;32464:18;32455:6;32411:72;:::i;:::-;32493;32561:2;32550:9;32546:18;32537:6;32493:72;:::i;:::-;32130:442;;;;;;:::o;32578:194::-;32618:4;32638:20;32656:1;32638:20;:::i;:::-;32633:25;;32672:20;32690:1;32672:20;:::i;:::-;32667:25;;32716:1;32713;32709:9;32701:17;;32740:1;32734:4;32731:11;32728:37;;;32745:18;;:::i;:::-;32728:37;32578:194;;;;:::o;32778:180::-;32826:77;32823:1;32816:88;32923:4;32920:1;32913:15;32947:4;32944:1;32937:15;32964:85;33009:7;33038:5;33027:16;;32964:85;;;:::o;33055:158::-;33113:9;33146:61;33164:42;33173:32;33199:5;33173:32;:::i;:::-;33164:42;:::i;:::-;33146:61;:::i;:::-;33133:74;;33055:158;;;:::o;33219:147::-;33314:45;33353:5;33314:45;:::i;:::-;33309:3;33302:58;33219:147;;:::o;33372:114::-;33439:6;33473:5;33467:12;33457:22;;33372:114;;;:::o;33492:132::-;33559:4;33582:3;33574:11;;33612:4;33607:3;33603:14;33595:22;;33492:132;;;:::o;33630:113::-;33700:4;33732;33727:3;33723:14;33715:22;;33630:113;;;:::o;33779:732::-;33898:3;33927:54;33975:5;33927:54;:::i;:::-;33997:86;34076:6;34071:3;33997:86;:::i;:::-;33990:93;;34107:56;34157:5;34107:56;:::i;:::-;34186:7;34217:1;34202:284;34227:6;34224:1;34221:13;34202:284;;;34303:6;34297:13;34330:63;34389:3;34374:13;34330:63;:::i;:::-;34323:70;;34416:60;34469:6;34416:60;:::i;:::-;34406:70;;34262:224;34249:1;34246;34242:9;34237:14;;34202:284;;;34206:14;34502:3;34495:10;;33903:608;;;33779:732;;;;:::o;34517:831::-;34780:4;34818:3;34807:9;34803:19;34795:27;;34832:71;34900:1;34889:9;34885:17;34876:6;34832:71;:::i;:::-;34913:80;34989:2;34978:9;34974:18;34965:6;34913:80;:::i;:::-;35040:9;35034:4;35030:20;35025:2;35014:9;35010:18;35003:48;35068:108;35171:4;35162:6;35068:108;:::i;:::-;35060:116;;35186:72;35254:2;35243:9;35239:18;35230:6;35186:72;:::i;:::-;35268:73;35336:3;35325:9;35321:19;35312:6;35268:73;:::i;:::-;34517:831;;;;;;;;:::o;35354:807::-;35603:4;35641:3;35630:9;35626:19;35618:27;;35655:71;35723:1;35712:9;35708:17;35699:6;35655:71;:::i;:::-;35736:72;35804:2;35793:9;35789:18;35780:6;35736:72;:::i;:::-;35818:80;35894:2;35883:9;35879:18;35870:6;35818:80;:::i;:::-;35908;35984:2;35973:9;35969:18;35960:6;35908:80;:::i;:::-;35998:73;36066:3;36055:9;36051:19;36042:6;35998:73;:::i;:::-;36081;36149:3;36138:9;36134:19;36125:6;36081:73;:::i;:::-;35354:807;;;;;;;;;:::o;36167:663::-;36255:6;36263;36271;36320:2;36308:9;36299:7;36295:23;36291:32;36288:119;;;36326:79;;:::i;:::-;36288:119;36446:1;36471:64;36527:7;36518:6;36507:9;36503:22;36471:64;:::i;:::-;36461:74;;36417:128;36584:2;36610:64;36666:7;36657:6;36646:9;36642:22;36610:64;:::i;:::-;36600:74;;36555:129;36723:2;36749:64;36805:7;36796:6;36785:9;36781:22;36749:64;:::i;:::-;36739:74;;36694:129;36167:663;;;;;:::o

Metadata Hash

ipfs://73fa2c2db79dd31e8a8974b28770159a402aeecb339dbcee2bd988e950356205
Loading