ETH Price: $2,373.72 (+2.19%)

Token

Jigga Token (JIGGA)
 

Overview

Max Total Supply

1,000,000,000,000 JIGGA

Holders

59

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
JiggaToken

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-26
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity 0.7.5;

interface IERC20 {

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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



/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}


/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @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.
 */
contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function getAmountsOut(uint amountIn, address[] memory path) external returns (uint[] memory amounts);

}

contract JiggaToken is Context, IERC20, Ownable {

    using SafeMath for uint256;
    using Address for address payable;

    mapping (address => uint256) private _balances;
    mapping (address => uint256) private _whitelist;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    address payable public marketing;
    address payable public dev;
    address payable public rewards;
    address payable public reflections;

    uint256 private _tTotal = 1 * 10**12 * 10**9;

    string private _name = "Jigga Token";
    string private _symbol = "JIGGA";
    uint8 private _decimals = 9;

    uint256 public _rewardsFee = 9;
    uint256 public _liquidityFee = 5;
    uint256 public _marketingFee = 16;
    uint256 public _devFee = 10;
    uint256 public _reflectionsFee = 40;

    uint256 constant public _WLTierPeriodLength = 20 minutes;

    uint256 public _wlTier1Cutoff;
    uint256 public _wlTier2Cutoff;
    uint256 public _wlTier3Cutoff;

    uint256 public _pendingDevelopmentFees;
    uint256 public _pendingMarketingFees;
    uint256 public _pendingLiquidityFees;
    uint256 public _pendingRewardsFees;

    uint256 private launchTime;

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public maxWalletHolding = 1 * 10**10 * 10**9;
    uint256 private numTokensSellToAddToLiquidity = 1 * 10**6 * 10**9;

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor (address payable _devWallet, address payable _marketingWallet, address payable _rewardsWallet, address payable _reflectionsWallet) public {
      reflections = _reflectionsWallet;
      marketing = _marketingWallet;
      dev = _devWallet;
      rewards = _rewardsWallet;
      IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
      uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
      uniswapV2Router = _uniswapV2Router;
      _isExcludedFromFee[owner()] = true;
      _isExcludedFromFee[address(this)] = true;
      _isExcludedFromFee[_reflectionsWallet] = true;
      _isExcludedFromFee[_marketingWallet] = true;
      _isExcludedFromFee[_devWallet] = true;
      _isExcludedFromFee[_rewardsWallet] = true;

      _balances[_msgSender()] = _tTotal;

      emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setSwapAndLiquifyEnabled(bool _enabled, uint256 _numTokensMin, uint256 _maxWalletHolding) public onlyOwner() {
        swapAndLiquifyEnabled = _enabled;
        numTokensSellToAddToLiquidity = _numTokensMin;
        maxWalletHolding = _maxWalletHolding;
    }

    function manualSwapAndLiquify() public onlyOwner() {
        uint256 contractTokenBalance = balanceOf(address(this));
        swapAndLiquify(contractTokenBalance);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function airdrop(address payable [] memory holders, uint256 [] memory balances) public onlyOwner() {
      require(holders.length == balances.length, "Incorrect input");
      uint256 deployer_balance = _balances[_msgSender()];

      for (uint8 i = 0; i < holders.length; i++) {
        uint256 balance = balances[i] * 10 ** 9;
        _balances[holders[i]] = _balances[holders[i]].add(balance);
        emit Transfer(_msgSender(), holders[i], balance);
        deployer_balance = deployer_balance.sub(balance);
      }
      _balances[_msgSender()] = deployer_balance;
    }

    function whitelistAddresses(address[] memory addresses, uint256 [] memory tiers) public onlyOwner() {
      require(addresses.length == tiers.length, "Incorrect input");

      for (uint8 i = 0; i < addresses.length; i++) {
        _whitelist[addresses[i]] = tiers[i];
      }
    }

    function setTaxes(uint256[] memory _taxTypes, uint256[] memory _taxSizes) external onlyOwner() {
      require(_taxTypes.length == _taxSizes.length, "Incorrect input");
      for (uint i = 0; i < _taxTypes.length; i++) {

        uint256 _taxType = _taxTypes[i];
        uint256 _taxSize = _taxSizes[i];

        if (_taxType == 1) {
          _devFee = _taxSize;
        }
        else if (_taxType == 2) {
          _rewardsFee = _taxSize;
        }
        else if (_taxType == 3) {
          _reflectionsFee = _taxSize;
        }
        else if (_taxType == 4) {
          _marketingFee = _taxSize;
        }
        else if (_taxType == 5) {
          _liquidityFee = _taxSize;
        }
      }
    }

    function enableTrading() public onlyOwner() {
        require(launchTime == 0, "Already enabled");
        launchTime = block.timestamp;
        _wlTier1Cutoff = launchTime.add(_WLTierPeriodLength);
        _wlTier2Cutoff = _wlTier1Cutoff.add(_WLTierPeriodLength);
        _wlTier3Cutoff = _wlTier2Cutoff.add(_WLTierPeriodLength);
    }

    receive() external payable {}

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function whitelistTier(address account) public view returns(uint256) {
        return _whitelist[account];
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            from != uniswapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            swapAndLiquify(contractTokenBalance);
        }

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
        else {
          require(launchTime > 0, "Trading not enabled yet");
        }

        bool isTransferBuy = from == uniswapV2Pair;
        bool isTransferSell = to == uniswapV2Pair;

        if (!isTransferBuy && !isTransferSell) {
          takeFee = false;
        }

        if (block.timestamp <= _wlTier3Cutoff) {
            require(!isTransferSell, "Sells are prohibited before the WL period ends");   
            if (block.timestamp > _wlTier2Cutoff) {
                require(whitelistTier(to) > 0, "The wallet is not allowed to participate in WL Tier 3");
            }
            else if (block.timestamp > _wlTier1Cutoff) {
                require(whitelistTier(to) > 0 && whitelistTier(to) < 3, "The wallet is not allowed to participate in WL Tier 2");   
            }
            else {
                require(whitelistTier(to) == 1, "The wallet is not allowed to participate in WL Tier 1");      
            }
        }

        _transferStandard(from,to,amount,takeFee);

        if (!_isExcludedFromFee[to] && (to != uniswapV2Pair)) require(balanceOf(to) < maxWalletHolding, "Max Wallet holding limit exceeded");
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 liquidityPart = 0;
        if (_pendingLiquidityFees < contractTokenBalance) liquidityPart = _pendingLiquidityFees;

        uint256 distributionPart = contractTokenBalance.sub(liquidityPart);
        uint256 liquidityHalfPart = liquidityPart.div(2);
        uint256 liquidityHalfTokenPart = liquidityPart.sub(liquidityHalfPart);

        //now swapping half of the liquidity part + all of the distribution part into ETH
        uint256 totalETHSwap = liquidityHalfPart.add(distributionPart);

        swapTokensForEth(totalETHSwap);

        uint256 newBalance = address(this).balance;
        uint256 devBalance = _pendingDevelopmentFees.mul(newBalance).div(totalETHSwap);
        uint256 marketingBalance = _pendingMarketingFees.mul(newBalance).div(totalETHSwap);
        uint256 rewardsBalance = _pendingRewardsFees.mul(newBalance).div(totalETHSwap);
        uint256 liquidityBalance = liquidityHalfPart.mul(newBalance).div(totalETHSwap);

        if (liquidityHalfTokenPart > 0 && liquidityBalance > 0) addLiquidity(liquidityHalfTokenPart, liquidityBalance);

        if (devBalance > 0 && devBalance < address(this).balance) dev.call{ value: devBalance }("");
        if (marketingBalance > 0 && marketingBalance < address(this).balance) marketing.call{ value: marketingBalance }("");
        if (rewardsBalance > 0 && rewardsBalance < address(this).balance) rewards.call{ value: rewardsBalance }("");
        if (address(this).balance > 0) reflections.call{ value: address(this).balance }("");

        _pendingDevelopmentFees = 0;
        _pendingMarketingFees = 0;
        _pendingRewardsFees = 0;
        _pendingLiquidityFees = 0;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

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

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

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

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            marketing,
            block.timestamp
        );
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount, bool takeFee) private {
        uint256 tTransferAmount = tAmount;
        if (takeFee) {
          uint256 devTax = tAmount.mul(_devFee).div(1000).div(2);
          uint256 marketingTax = tAmount.mul(_marketingFee).div(1000).div(2);
          uint256 liquidityTax = tAmount.mul(_liquidityFee).div(1000).div(2);
          uint256 rewardsFee = tAmount.mul(_rewardsFee).div(1000).div(2);
          uint256 reflectionsFee = tAmount.mul(_reflectionsFee).div(1000).div(2);
          tTransferAmount = tTransferAmount.sub(devTax).sub(marketingTax).sub(liquidityTax);
          tTransferAmount = tTransferAmount.sub(rewardsFee).sub(reflectionsFee);

          _pendingDevelopmentFees = _pendingDevelopmentFees.add(devTax);
          _pendingMarketingFees = _pendingMarketingFees.add(marketingTax);
          _pendingLiquidityFees = _pendingLiquidityFees.add(liquidityTax);
          _pendingRewardsFees = _pendingRewardsFees.add(rewardsFee);
        }
        _balances[sender] = _balances[sender].sub(tAmount);
        _balances[recipient] = _balances[recipient].add(tTransferAmount);
        _balances[address(this)] = _balances[address(this)].add(tAmount.sub(tTransferAmount));
        emit Transfer(sender, recipient, tTransferAmount);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_devWallet","type":"address"},{"internalType":"address payable","name":"_marketingWallet","type":"address"},{"internalType":"address payable","name":"_rewardsWallet","type":"address"},{"internalType":"address payable","name":"_reflectionsWallet","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_WLTierPeriodLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingDevelopmentFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingLiquidityFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingMarketingFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pendingRewardsFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wlTier1Cutoff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wlTier2Cutoff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_wlTier3Cutoff","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable[]","name":"holders","type":"address[]"},{"internalType":"uint256[]","name":"balances","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dev","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletHolding","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":"reflections","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewards","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_numTokensMin","type":"uint256"},{"internalType":"uint256","name":"_maxWalletHolding","type":"uint256"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_taxTypes","type":"uint256[]"},{"internalType":"uint256[]","name":"_taxSizes","type":"uint256[]"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tiers","type":"uint256[]"}],"name":"whitelistAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"whitelistTier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052683635c9adc5dea000006009556040518060400160405280600b81526020017f4a6967676120546f6b656e000000000000000000000000000000000000000000815250600a90805190602001906200005e929190620008a2565b506040518060400160405280600581526020017f4a49474741000000000000000000000000000000000000000000000000000000815250600b9080519060200190620000ac929190620008a2565b506009600c60006101000a81548160ff021916908360ff1602179055506009600d556005600e556010600f55600a60105560286011556001601a60016101000a81548160ff021916908315150217905550678ac7230489e80000601b5566038d7ea4c68000601c553480156200012157600080fd5b5060405162004d4538038062004d45833981810160405260808110156200014757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050506000620001886200087160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038a57600080fd5b505afa1580156200039f573d6000803e3d6000fd5b505050506040513d6020811015620003b657600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200042a57600080fd5b505afa1580156200043f573d6000803e3d6000fd5b505050506040513d60208110156200045657600080fd5b81019080805190602001909291905050506040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004d157600080fd5b505af1158015620004e6573d6000803e3d6000fd5b505050506040513d6020811015620004fd57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050600160046000620005916200087960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060095460016000620007b16200087160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620007ff6200087160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040518082815260200191505060405180910390a3505050505062000958565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620008da576000855562000926565b82601f10620008f557805160ff191683800117855562000926565b8280016001018555821562000926579182015b828111156200092557825182559160200191906001019062000908565b5b50905062000935919062000939565b5090565b5b80821115620009545760008160009055506001016200093a565b5090565b60805160601c60a05160601c614396620009af6000398061171a5280612c5f5280612e075280612e5a52806130da5250806112aa5280613c7a5280613d665280613d8d5280613f1e5280613f4552506143966000f3fe6080604052600436106102765760003560e01c806370f58c971161014f5780639ddb1b80116100c1578063c97f617a1161007a578063c97f617a1461102a578063d1571e4714611055578063dd62ed3e14611096578063ea2f0b371461111b578063f2fde38b1461116c578063fc8c8752146111bd5761027d565b80639ddb1b8014610e865780639ec5a89414610eb1578063a457c2d714610ef2578063a61b83e314610f63578063a9059cbb14610f8e578063aa45026b14610fff5761027d565b8063866435c511610113578063866435c514610bd95780638a8c523c14610c045780638da5cb5b14610c1b57806391cca3db14610c5c57806395d89b4114610c9d5780639c8d35e114610d2d5761027d565b806370f58c97146109fc578063715018a614610b55578063733b864f14610b6c5780637781e34f14610b83578063830f0c6e14610bae5761027d565b80633176dae2116101e85780634a74bb02116101ac5780634a74bb02146107545780635342acb41461078157806367243482146107e857806369240b86146109415780636bc87c3a1461096c57806370a08231146109975761027d565b80633176dae2146105fb5780633950935114610626578063437823ec1461069757806348d79155146106e857806349bd5a5e146107135761027d565b806322976e0d1161023a57806322976e0d1461045457806323b872dd1461047f57806323d9f8e7146105105780632a7744241461053b5780632d3e474a1461058c578063313ce567146105cd5761027d565b806306fdde0314610282578063095ea7b3146103125780631694505e1461038357806318160ddd146103c45780631c60094b146103ef5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102976111e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031e57600080fd5b5061036b6004803603604081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128a565b60405180821515815260200191505060405180910390f35b34801561038f57600080fd5b506103986112a8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103d057600080fd5b506103d96112cc565b6040518082815260200191505060405180910390f35b3480156103fb57600080fd5b5061043e6004803603602081101561041257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d6565b6040518082815260200191505060405180910390f35b34801561046057600080fd5b5061046961131f565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b506104f8600480360360608110156104a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611325565b60405180821515815260200191505060405180910390f35b34801561051c57600080fd5b506105256113fe565b6040518082815260200191505060405180910390f35b34801561054757600080fd5b5061058a6004803603606081101561055e57600080fd5b810190808035151590602001909291908035906020019092919080359060200190929190505050611404565b005b34801561059857600080fd5b506105a16114f9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105d957600080fd5b506105e261151f565b604051808260ff16815260200191505060405180910390f35b34801561060757600080fd5b50610610611536565b6040518082815260200191505060405180910390f35b34801561063257600080fd5b5061067f6004803603604081101561064957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061153c565b60405180821515815260200191505060405180910390f35b3480156106a357600080fd5b506106e6600480360360208110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ef565b005b3480156106f457600080fd5b506106fd611712565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610728611718565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076057600080fd5b5061076961173c565b60405180821515815260200191505060405180910390f35b34801561078d57600080fd5b506107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174f565b60405180821515815260200191505060405180910390f35b3480156107f457600080fd5b5061093f6004803603604081101561080b57600080fd5b810190808035906020019064010000000081111561082857600080fd5b82018360208201111561083a57600080fd5b8035906020019184602083028401116401000000008311171561085c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108bc57600080fd5b8201836020820111156108ce57600080fd5b803590602001918460208302840111640100000000831117156108f057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506117a5565b005b34801561094d57600080fd5b50610956611b16565b6040518082815260200191505060405180910390f35b34801561097857600080fd5b50610981611b1c565b6040518082815260200191505060405180910390f35b3480156109a357600080fd5b506109e6600480360360208110156109ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b22565b6040518082815260200191505060405180910390f35b348015610a0857600080fd5b50610b5360048036036040811015610a1f57600080fd5b8101908080359060200190640100000000811115610a3c57600080fd5b820183602082011115610a4e57600080fd5b80359060200191846020830284011164010000000083111715610a7057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610ad057600080fd5b820183602082011115610ae257600080fd5b80359060200191846020830284011164010000000083111715610b0457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611b6b565b005b348015610b6157600080fd5b50610b6a611d3b565b005b348015610b7857600080fd5b50610b81611ec1565b005b348015610b8f57600080fd5b50610b98611fa2565b6040518082815260200191505060405180910390f35b348015610bba57600080fd5b50610bc3611fa8565b6040518082815260200191505060405180910390f35b348015610be557600080fd5b50610bee611fae565b6040518082815260200191505060405180910390f35b348015610c1057600080fd5b50610c19611fb4565b005b348015610c2757600080fd5b50610c30612154565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6857600080fd5b50610c7161217d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cb26121a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cf2578082015181840152602081019050610cd7565b50505050905090810190601f168015610d1f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d3957600080fd5b50610e8460048036036040811015610d5057600080fd5b8101908080359060200190640100000000811115610d6d57600080fd5b820183602082011115610d7f57600080fd5b80359060200191846020830284011164010000000083111715610da157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e0157600080fd5b820183602082011115610e1357600080fd5b80359060200191846020830284011164010000000083111715610e3557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612245565b005b348015610e9257600080fd5b50610e9b61243d565b6040518082815260200191505060405180910390f35b348015610ebd57600080fd5b50610ec6612443565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610efe57600080fd5b50610f4b60048036036040811015610f1557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612469565b60405180821515815260200191505060405180910390f35b348015610f6f57600080fd5b50610f78612536565b6040518082815260200191505060405180910390f35b348015610f9a57600080fd5b50610fe760048036036040811015610fb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061253c565b60405180821515815260200191505060405180910390f35b34801561100b57600080fd5b5061101461255a565b6040518082815260200191505060405180910390f35b34801561103657600080fd5b5061103f612560565b6040518082815260200191505060405180910390f35b34801561106157600080fd5b5061106a612566565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110a257600080fd5b50611105600480360360408110156110b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061258c565b6040518082815260200191505060405180910390f35b34801561112757600080fd5b5061116a6004803603602081101561113e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612613565b005b34801561117857600080fd5b506111bb6004803603602081101561118f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612736565b005b3480156111c957600080fd5b506111d2612941565b6040518082815260200191505060405180910390f35b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112805780601f1061125557610100808354040283529160200191611280565b820191906000526020600020905b81548152906001019060200180831161126357829003601f168201915b5050505050905090565b600061129e611297612947565b848461294f565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b6000611332848484612b46565b6113f38461133e612947565b6113ee8560405180606001604052806028815260200161424c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113a4612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319b9092919063ffffffff16565b61294f565b600190509392505050565b60135481565b61140c612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b82601a60016101000a81548160ff02191690831515021790555081601c8190555080601b81905550505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60009054906101000a900460ff16905090565b60155481565b60006115e5611549612947565b846115e0856003600061155a612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b61294f565b6001905092915050565b6115f7612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b601a60019054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117ad612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80518251146118e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160006118f2612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b83518160ff161015611ac5576000633b9aca00848360ff168151811061195457fe5b60200260200101510290506119c78160016000888660ff168151811061197657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b60016000878560ff16815181106119da57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550848260ff1681518110611a2f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611a55612947565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3611ab581846132e390919063ffffffff16565b9250508080600101915050611932565b508060016000611ad3612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60165481565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b73612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114611caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b60005b82518160ff161015611d3657818160ff1681518110611cc857fe5b602002602001015160026000858460ff1681518110611ce357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611cad565b505050565b611d43612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ec9612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611f9430611b22565b9050611f9f8161332d565b50565b60145481565b6104b081565b60175481565b611fbc612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601954146120f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f416c726561647920656e61626c6564000000000000000000000000000000000081525060200191505060405180910390fd5b426019819055506121126104b060195461325b90919063ffffffff16565b60128190555061212f6104b060125461325b90919063ffffffff16565b60138190555061214c6104b060135461325b90919063ffffffff16565b601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561223b5780601f106122105761010080835404028352916020019161223b565b820191906000526020600020905b81548152906001019060200180831161221e57829003601f168201915b5050505050905090565b61224d612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461230d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b60005b825181101561243857600083828151811061239e57fe5b6020026020010151905060008383815181106123b657fe5b6020026020010151905060018214156123d55780601081905550612429565b60028214156123ea5780600d81905550612428565b60038214156123ff5780601181905550612427565b60048214156124145780600f81905550612426565b60058214156124255780600e819055505b5b5b5b5b50508080600101915050612387565b505050565b60125481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061252c612476612947565b84612527856040518060600160405280602581526020016142e660259139600360006124a0612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319b9092919063ffffffff16565b61294f565b6001905092915050565b600d5481565b6000612550612549612947565b8484612b46565b6001905092915050565b60105481565b60115481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61261b612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61273e612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612884576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141796026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806142c26024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061419f6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061429d6025913960400191505060405180910390fd5b60008111612c25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806142746029913960400191505060405180910390fd5b6000612c3030611b22565b90506000601c548210159050808015612c565750601a60009054906101000a900460ff16155b8015612cae57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc65750601a60019054906101000a900460ff165b15612cd557612cd48261332d565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7c5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8a5760009050612e03565b600060195411612e02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f54726164696e67206e6f7420656e61626c65642079657400000000000000000081525060200191505060405180910390fd5b5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614905081158015612eb5575080155b15612ebf57600092505b6014544211613077578015612f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061414b602e913960400191505060405180910390fd5b601354421115612f8f576000612f34886112d6565b11612f8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806141c16035913960400191505060405180910390fd5b613076565b601254421115613013576000612fa4886112d6565b118015612fb957506003612fb7886112d6565b105b61300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061432c6035913960400191505060405180910390fd5b613075565b600161301e886112d6565b14613074576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806142176035913960400191505060405180910390fd5b5b5b5b61308388888886613740565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561312957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561319157601b5461313a88611b22565b10613190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061430b6021913960400191505060405180910390fd5b5b5050505050505050565b6000838311158290613248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561320d5780820151818401526020810190506131f2565b50505050905090810190601f16801561323a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156132d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061332583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061319b565b905092915050565b6001601a60006101000a81548160ff021916908315150217905550600081601754101561335a5760175490505b600061336f82846132e390919063ffffffff16565b90506000613387600284613b9a90919063ffffffff16565b9050600061339e82856132e390919063ffffffff16565b905060006133b5848461325b90919063ffffffff16565b90506133c081613be4565b600047905060006133ee836133e084601554613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060006134198461340b85601654613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060006134448561343686601854613e9290919063ffffffff16565b613b9a90919063ffffffff16565b9050600061346d8661345f878b613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060008711801561347f5750600081115b1561348f5761348e8782613f18565b5b60008411801561349e57504784105b1561352c57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405180600001905060006040518083038185875af1925050503d8060008114613523576040519150601f19603f3d011682016040523d82523d6000602084013e613528565b606091505b5050505b60008311801561353b57504783105b156135c957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405180600001905060006040518083038185875af1925050503d80600081146135c0576040519150601f19603f3d011682016040523d82523d6000602084013e6135c5565b606091505b5050505b6000821180156135d857504782105b1561366657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b5050505b60004711156136f857600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405180600001905060006040518083038185875af1925050503d80600081146136ef576040519150601f19603f3d011682016040523d82523d6000602084013e6136f4565b606091505b5050505b6000601581905550600060168190555060006018819055506000601781905550505050505050505050506000601a60006101000a81548160ff02191690831515021790555050565b6000829050811561395d576000613789600261377b6103e861376d60105489613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b905060006137c960026137bb6103e86137ad600f548a613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b9050600061380960026137fb6103e86137ed600e548b613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506000613849600261383b6103e861382d600d548c613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506000613889600261387b6103e861386d6011548d613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506138c2836138b4866138a6898b6132e390919063ffffffff16565b6132e390919063ffffffff16565b6132e390919063ffffffff16565b95506138e9816138db84896132e390919063ffffffff16565b6132e390919063ffffffff16565b95506139008560155461325b90919063ffffffff16565b60158190555061391b8460165461325b90919063ffffffff16565b6016819055506139368360175461325b90919063ffffffff16565b6017819055506139518260185461325b90919063ffffffff16565b60188190555050505050505b6139af83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e390919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4481600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613aeb613a9d82856132e390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b6000613bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614084565b905092915050565b6060600267ffffffffffffffff81118015613bfe57600080fd5b50604051908082528060200260200182016040528015613c2d5781602001602082028036833780820191505090505b5090503081600081518110613c3e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cde57600080fd5b505afa158015613cf2573d6000803e3d6000fd5b505050506040513d6020811015613d0857600080fd5b810190808051906020019092919050505081600181518110613d2657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8b307f00000000000000000000000000000000000000000000000000000000000000008461294f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e4d578082015181840152602081019050613e32565b505050509050019650505050505050600060405180830381600087803b158015613e7657600080fd5b505af1158015613e8a573d6000803e3d6000fd5b505050505050565b600080831415613ea55760009050613f12565b6000828402905082848281613eb657fe5b0414613f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141f66021913960400191505060405180910390fd5b809150505b92915050565b613f43307f00000000000000000000000000000000000000000000000000000000000000008461294f565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561402d57600080fd5b505af1158015614041573d6000803e3d6000fd5b50505050506040513d606081101561405857600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60008083118290614130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140f55780820151818401526020810190506140da565b50505050905090810190601f1680156141225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161413c57fe5b04905080915050939250505056fe53656c6c73206172652070726f68696269746564206265666f72652074686520574c20706572696f6420656e64734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c20546965722033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c2054696572203145524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4d61782057616c6c657420686f6c64696e67206c696d69742065786365656465645468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c20546965722032a2646970667358221220c9ad01fbbe78508335dd9082735fe7f83b5618a5866289f80ffe28ec9f699f6664736f6c634300070500330000000000000000000000004192186827ea273f41604190659e0b5d0bde119700000000000000000000000087d072953dfa7543ef413ba7e63cb6110520446a000000000000000000000000cd34e78fa1484810276ecdbbcdf09c07a26c78140000000000000000000000003c7705e431d4e2a01109fef289b183c47fe55005

Deployed Bytecode

0x6080604052600436106102765760003560e01c806370f58c971161014f5780639ddb1b80116100c1578063c97f617a1161007a578063c97f617a1461102a578063d1571e4714611055578063dd62ed3e14611096578063ea2f0b371461111b578063f2fde38b1461116c578063fc8c8752146111bd5761027d565b80639ddb1b8014610e865780639ec5a89414610eb1578063a457c2d714610ef2578063a61b83e314610f63578063a9059cbb14610f8e578063aa45026b14610fff5761027d565b8063866435c511610113578063866435c514610bd95780638a8c523c14610c045780638da5cb5b14610c1b57806391cca3db14610c5c57806395d89b4114610c9d5780639c8d35e114610d2d5761027d565b806370f58c97146109fc578063715018a614610b55578063733b864f14610b6c5780637781e34f14610b83578063830f0c6e14610bae5761027d565b80633176dae2116101e85780634a74bb02116101ac5780634a74bb02146107545780635342acb41461078157806367243482146107e857806369240b86146109415780636bc87c3a1461096c57806370a08231146109975761027d565b80633176dae2146105fb5780633950935114610626578063437823ec1461069757806348d79155146106e857806349bd5a5e146107135761027d565b806322976e0d1161023a57806322976e0d1461045457806323b872dd1461047f57806323d9f8e7146105105780632a7744241461053b5780632d3e474a1461058c578063313ce567146105cd5761027d565b806306fdde0314610282578063095ea7b3146103125780631694505e1461038357806318160ddd146103c45780631c60094b146103ef5761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b506102976111e8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d75780820151818401526020810190506102bc565b50505050905090810190601f1680156103045780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031e57600080fd5b5061036b6004803603604081101561033557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061128a565b60405180821515815260200191505060405180910390f35b34801561038f57600080fd5b506103986112a8565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103d057600080fd5b506103d96112cc565b6040518082815260200191505060405180910390f35b3480156103fb57600080fd5b5061043e6004803603602081101561041257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112d6565b6040518082815260200191505060405180910390f35b34801561046057600080fd5b5061046961131f565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b506104f8600480360360608110156104a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611325565b60405180821515815260200191505060405180910390f35b34801561051c57600080fd5b506105256113fe565b6040518082815260200191505060405180910390f35b34801561054757600080fd5b5061058a6004803603606081101561055e57600080fd5b810190808035151590602001909291908035906020019092919080359060200190929190505050611404565b005b34801561059857600080fd5b506105a16114f9565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105d957600080fd5b506105e261151f565b604051808260ff16815260200191505060405180910390f35b34801561060757600080fd5b50610610611536565b6040518082815260200191505060405180910390f35b34801561063257600080fd5b5061067f6004803603604081101561064957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061153c565b60405180821515815260200191505060405180910390f35b3480156106a357600080fd5b506106e6600480360360208110156106ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115ef565b005b3480156106f457600080fd5b506106fd611712565b6040518082815260200191505060405180910390f35b34801561071f57600080fd5b50610728611718565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561076057600080fd5b5061076961173c565b60405180821515815260200191505060405180910390f35b34801561078d57600080fd5b506107d0600480360360208110156107a457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061174f565b60405180821515815260200191505060405180910390f35b3480156107f457600080fd5b5061093f6004803603604081101561080b57600080fd5b810190808035906020019064010000000081111561082857600080fd5b82018360208201111561083a57600080fd5b8035906020019184602083028401116401000000008311171561085c57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290803590602001906401000000008111156108bc57600080fd5b8201836020820111156108ce57600080fd5b803590602001918460208302840111640100000000831117156108f057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505091929192905050506117a5565b005b34801561094d57600080fd5b50610956611b16565b6040518082815260200191505060405180910390f35b34801561097857600080fd5b50610981611b1c565b6040518082815260200191505060405180910390f35b3480156109a357600080fd5b506109e6600480360360208110156109ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611b22565b6040518082815260200191505060405180910390f35b348015610a0857600080fd5b50610b5360048036036040811015610a1f57600080fd5b8101908080359060200190640100000000811115610a3c57600080fd5b820183602082011115610a4e57600080fd5b80359060200191846020830284011164010000000083111715610a7057600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610ad057600080fd5b820183602082011115610ae257600080fd5b80359060200191846020830284011164010000000083111715610b0457600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050611b6b565b005b348015610b6157600080fd5b50610b6a611d3b565b005b348015610b7857600080fd5b50610b81611ec1565b005b348015610b8f57600080fd5b50610b98611fa2565b6040518082815260200191505060405180910390f35b348015610bba57600080fd5b50610bc3611fa8565b6040518082815260200191505060405180910390f35b348015610be557600080fd5b50610bee611fae565b6040518082815260200191505060405180910390f35b348015610c1057600080fd5b50610c19611fb4565b005b348015610c2757600080fd5b50610c30612154565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610c6857600080fd5b50610c7161217d565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ca957600080fd5b50610cb26121a3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610cf2578082015181840152602081019050610cd7565b50505050905090810190601f168015610d1f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610d3957600080fd5b50610e8460048036036040811015610d5057600080fd5b8101908080359060200190640100000000811115610d6d57600080fd5b820183602082011115610d7f57600080fd5b80359060200191846020830284011164010000000083111715610da157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f82011690508083019250505050505050919291929080359060200190640100000000811115610e0157600080fd5b820183602082011115610e1357600080fd5b80359060200191846020830284011164010000000083111715610e3557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f820116905080830192505050505050509192919290505050612245565b005b348015610e9257600080fd5b50610e9b61243d565b6040518082815260200191505060405180910390f35b348015610ebd57600080fd5b50610ec6612443565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610efe57600080fd5b50610f4b60048036036040811015610f1557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612469565b60405180821515815260200191505060405180910390f35b348015610f6f57600080fd5b50610f78612536565b6040518082815260200191505060405180910390f35b348015610f9a57600080fd5b50610fe760048036036040811015610fb157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061253c565b60405180821515815260200191505060405180910390f35b34801561100b57600080fd5b5061101461255a565b6040518082815260200191505060405180910390f35b34801561103657600080fd5b5061103f612560565b6040518082815260200191505060405180910390f35b34801561106157600080fd5b5061106a612566565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156110a257600080fd5b50611105600480360360408110156110b957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061258c565b6040518082815260200191505060405180910390f35b34801561112757600080fd5b5061116a6004803603602081101561113e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612613565b005b34801561117857600080fd5b506111bb6004803603602081101561118f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612736565b005b3480156111c957600080fd5b506111d2612941565b6040518082815260200191505060405180910390f35b6060600a8054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156112805780601f1061125557610100808354040283529160200191611280565b820191906000526020600020905b81548152906001019060200180831161126357829003601f168201915b5050505050905090565b600061129e611297612947565b848461294f565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b6000611332848484612b46565b6113f38461133e612947565b6113ee8560405180606001604052806028815260200161424c60289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113a4612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319b9092919063ffffffff16565b61294f565b600190509392505050565b60135481565b61140c612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b82601a60016101000a81548160ff02191690831515021790555081601c8190555080601b81905550505050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600c60009054906101000a900460ff16905090565b60155481565b60006115e5611549612947565b846115e0856003600061155a612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b61294f565b6001905092915050565b6115f7612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601b5481565b7f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb81565b601a60019054906101000a900460ff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117ad612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80518251146118e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b6000600160006118f2612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060005b83518160ff161015611ac5576000633b9aca00848360ff168151811061195457fe5b60200260200101510290506119c78160016000888660ff168151811061197657fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b60016000878560ff16815181106119da57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550848260ff1681518110611a2f57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff16611a55612947565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3611ab581846132e390919063ffffffff16565b9250508080600101915050611932565b508060016000611ad3612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b60165481565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611b73612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114611caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b60005b82518160ff161015611d3657818160ff1681518110611cc857fe5b602002602001015160026000858460ff1681518110611ce357fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080600101915050611cad565b505050565b611d43612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e03576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611ec9612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f89576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000611f9430611b22565b9050611f9f8161332d565b50565b60145481565b6104b081565b60175481565b611fbc612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000601954146120f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f416c726561647920656e61626c6564000000000000000000000000000000000081525060200191505060405180910390fd5b426019819055506121126104b060195461325b90919063ffffffff16565b60128190555061212f6104b060125461325b90919063ffffffff16565b60138190555061214c6104b060135461325b90919063ffffffff16565b601481905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600b8054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561223b5780601f106122105761010080835404028352916020019161223b565b820191906000526020600020905b81548152906001019060200180831161221e57829003601f168201915b5050505050905090565b61224d612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461230d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b8051825114612384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e636f727265637420696e707574000000000000000000000000000000000081525060200191505060405180910390fd5b60005b825181101561243857600083828151811061239e57fe5b6020026020010151905060008383815181106123b657fe5b6020026020010151905060018214156123d55780601081905550612429565b60028214156123ea5780600d81905550612428565b60038214156123ff5780601181905550612427565b60048214156124145780600f81905550612426565b60058214156124255780600e819055505b5b5b5b5b50508080600101915050612387565b505050565b60125481565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061252c612476612947565b84612527856040518060600160405280602581526020016142e660259139600360006124a0612947565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461319b9092919063ffffffff16565b61294f565b6001905092915050565b600d5481565b6000612550612549612947565b8484612b46565b6001905092915050565b60105481565b60115481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61261b612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61273e612947565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146127fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612884576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806141796026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60185481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156129d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806142c26024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061419f6022913960400191505060405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612bcc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602581526020018061429d6025913960400191505060405180910390fd5b60008111612c25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806142746029913960400191505060405180910390fd5b6000612c3030611b22565b90506000601c548210159050808015612c565750601a60009054906101000a900460ff16155b8015612cae57507f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612cc65750601a60019054906101000a900460ff165b15612cd557612cd48261332d565b5b600060019050600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d7c5750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d8a5760009050612e03565b600060195411612e02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f54726164696e67206e6f7420656e61626c65642079657400000000000000000081525060200191505060405180910390fd5b5b60007f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614905081158015612eb5575080155b15612ebf57600092505b6014544211613077578015612f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061414b602e913960400191505060405180910390fd5b601354421115612f8f576000612f34886112d6565b11612f8a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806141c16035913960400191505060405180910390fd5b613076565b601254421115613013576000612fa4886112d6565b118015612fb957506003612fb7886112d6565b105b61300e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603581526020018061432c6035913960400191505060405180910390fd5b613075565b600161301e886112d6565b14613074576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001806142176035913960400191505060405180910390fd5b5b5b5b61308388888886613740565b600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561312957507f000000000000000000000000ae73e9fdccbee9aca27e68e6c55d81326ae68ccb73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561319157601b5461313a88611b22565b10613190576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061430b6021913960400191505060405180910390fd5b5b5050505050505050565b6000838311158290613248576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561320d5780820151818401526020810190506131f2565b50505050905090810190601f16801561323a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156132d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600061332583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061319b565b905092915050565b6001601a60006101000a81548160ff021916908315150217905550600081601754101561335a5760175490505b600061336f82846132e390919063ffffffff16565b90506000613387600284613b9a90919063ffffffff16565b9050600061339e82856132e390919063ffffffff16565b905060006133b5848461325b90919063ffffffff16565b90506133c081613be4565b600047905060006133ee836133e084601554613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060006134198461340b85601654613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060006134448561343686601854613e9290919063ffffffff16565b613b9a90919063ffffffff16565b9050600061346d8661345f878b613e9290919063ffffffff16565b613b9a90919063ffffffff16565b905060008711801561347f5750600081115b1561348f5761348e8782613f18565b5b60008411801561349e57504784105b1561352c57600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405180600001905060006040518083038185875af1925050503d8060008114613523576040519150601f19603f3d011682016040523d82523d6000602084013e613528565b606091505b5050505b60008311801561353b57504783105b156135c957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405180600001905060006040518083038185875af1925050503d80600081146135c0576040519150601f19603f3d011682016040523d82523d6000602084013e6135c5565b606091505b5050505b6000821180156135d857504782105b1561366657600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405180600001905060006040518083038185875af1925050503d806000811461365d576040519150601f19603f3d011682016040523d82523d6000602084013e613662565b606091505b5050505b60004711156136f857600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405180600001905060006040518083038185875af1925050503d80600081146136ef576040519150601f19603f3d011682016040523d82523d6000602084013e6136f4565b606091505b5050505b6000601581905550600060168190555060006018819055506000601781905550505050505050505050506000601a60006101000a81548160ff02191690831515021790555050565b6000829050811561395d576000613789600261377b6103e861376d60105489613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b905060006137c960026137bb6103e86137ad600f548a613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b9050600061380960026137fb6103e86137ed600e548b613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506000613849600261383b6103e861382d600d548c613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506000613889600261387b6103e861386d6011548d613e9290919063ffffffff16565b613b9a90919063ffffffff16565b613b9a90919063ffffffff16565b90506138c2836138b4866138a6898b6132e390919063ffffffff16565b6132e390919063ffffffff16565b6132e390919063ffffffff16565b95506138e9816138db84896132e390919063ffffffff16565b6132e390919063ffffffff16565b95506139008560155461325b90919063ffffffff16565b60158190555061391b8460165461325b90919063ffffffff16565b6016819055506139368360175461325b90919063ffffffff16565b6017819055506139518260185461325b90919063ffffffff16565b60188190555050505050505b6139af83600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132e390919063ffffffff16565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a4481600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613aeb613a9d82856132e390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461325b90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050505050565b6000613bdc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614084565b905092915050565b6060600267ffffffffffffffff81118015613bfe57600080fd5b50604051908082528060200260200182016040528015613c2d5781602001602082028036833780820191505090505b5090503081600081518110613c3e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015613cde57600080fd5b505afa158015613cf2573d6000803e3d6000fd5b505050506040513d6020811015613d0857600080fd5b810190808051906020019092919050505081600181518110613d2657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613d8b307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461294f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613e4d578082015181840152602081019050613e32565b505050509050019650505050505050600060405180830381600087803b158015613e7657600080fd5b505af1158015613e8a573d6000803e3d6000fd5b505050505050565b600080831415613ea55760009050613f12565b6000828402905082848281613eb657fe5b0414613f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806141f66021913960400191505060405180910390fd5b809150505b92915050565b613f43307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461294f565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561402d57600080fd5b505af1158015614041573d6000803e3d6000fd5b50505050506040513d606081101561405857600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60008083118290614130576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156140f55780820151818401526020810190506140da565b50505050905090810190601f1680156141225780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161413c57fe5b04905080915050939250505056fe53656c6c73206172652070726f68696269746564206265666f72652074686520574c20706572696f6420656e64734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c20546965722033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c2054696572203145524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f4d61782057616c6c657420686f6c64696e67206c696d69742065786365656465645468652077616c6c6574206973206e6f7420616c6c6f77656420746f20706172746963697061746520696e20574c20546965722032a2646970667358221220c9ad01fbbe78508335dd9082735fe7f83b5618a5866289f80ffe28ec9f699f6664736f6c63430007050033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000004192186827ea273f41604190659e0b5d0bde119700000000000000000000000087d072953dfa7543ef413ba7e63cb6110520446a000000000000000000000000cd34e78fa1484810276ecdbbcdf09c07a26c78140000000000000000000000003c7705e431d4e2a01109fef289b183c47fe55005

-----Decoded View---------------
Arg [0] : _devWallet (address): 0x4192186827Ea273F41604190659E0B5D0BDE1197
Arg [1] : _marketingWallet (address): 0x87d072953dFa7543Ef413ba7E63CB6110520446A
Arg [2] : _rewardsWallet (address): 0xcD34e78fa1484810276ECdBbcdF09C07A26c7814
Arg [3] : _reflectionsWallet (address): 0x3C7705e431d4e2a01109feF289b183c47Fe55005

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000004192186827ea273f41604190659e0b5d0bde1197
Arg [1] : 00000000000000000000000087d072953dfa7543ef413ba7e63cb6110520446a
Arg [2] : 000000000000000000000000cd34e78fa1484810276ecdbbcdf09c07a26c7814
Arg [3] : 0000000000000000000000003c7705e431d4e2a01109fef289b183c47fe55005


Deployed Bytecode Sourcemap

17557:14096:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20239:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21072:161;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18834:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20516:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24909:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18332:33;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21241:313;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18551:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22065:272;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17933:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20425:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18625:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;21562:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22525:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19016:52;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18892:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18967:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;24778:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;22762:587;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18670:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18293:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20619:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;23357:288;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16129:148;;;;;;;;;;;;;:::i;:::-;;22345:172;;;;;;;;;;;;;:::i;:::-;;18587:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18450:56;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18713:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24391:342;;;;;;;;;;;;;:::i;:::-;;15486:79;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;17972:26;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20330:87;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23653:730;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18515:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18005:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;21788:269;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18256:30;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20746:167;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;18372:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18406:35;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18042:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;20921:143;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;22644:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16432:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18756:34;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20239:83;20276:13;20309:5;20302:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20239:83;:::o;21072:161::-;21147:4;21164:39;21173:12;:10;:12::i;:::-;21187:7;21196:6;21164:8;:39::i;:::-;21221:4;21214:11;;21072:161;;;;:::o;18834:51::-;;;:::o;20516:95::-;20569:7;20596;;20589:14;;20516:95;:::o;24909:114::-;24969:7;24996:10;:19;25007:7;24996:19;;;;;;;;;;;;;;;;24989:26;;24909:114;;;:::o;18332:33::-;;;;:::o;21241:313::-;21339:4;21356:36;21366:6;21374:9;21385:6;21356:9;:36::i;:::-;21403:121;21412:6;21420:12;:10;:12::i;:::-;21434:89;21472:6;21434:89;;;;;;;;;;;;;;;;;:11;:19;21446:6;21434:19;;;;;;;;;;;;;;;:33;21454:12;:10;:12::i;:::-;21434:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21403:8;:121::i;:::-;21542:4;21535:11;;21241:313;;;;;:::o;18551:29::-;;;;:::o;22065:272::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22218:8:::1;22194:21;;:32;;;;;;;;;;;;;;;;;;22269:13;22237:29;:45;;;;22312:17;22293:16;:36;;;;22065:272:::0;;;:::o;17933:32::-;;;;;;;;;;;;;:::o;20425:83::-;20466:5;20491:9;;;;;;;;;;;20484:16;;20425:83;:::o;18625:38::-;;;;:::o;21562:218::-;21650:4;21667:83;21676:12;:10;:12::i;:::-;21690:7;21699:50;21738:10;21699:11;:25;21711:12;:10;:12::i;:::-;21699:25;;;;;;;;;;;;;;;:34;21725:7;21699:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;21667:8;:83::i;:::-;21768:4;21761:11;;21562:218;;;;:::o;22525:111::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22624:4:::1;22594:18;:27;22613:7;22594:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;22525:111:::0;:::o;19016:52::-;;;;:::o;18892:38::-;;;:::o;18967:40::-;;;;;;;;;;;;;:::o;24778:123::-;24842:4;24866:18;:27;24885:7;24866:27;;;;;;;;;;;;;;;;;;;;;;;;;24859:34;;24778:123;;;:::o;22762:587::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22896:8:::1;:15;22878:7;:14;:33;22870:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;22940:24;22967:9;:23;22977:12;:10;:12::i;:::-;22967:23;;;;;;;;;;;;;;;;22940:50;;23006:7;23001:290;23023:7;:14;23019:1;:18;;;23001:290;;;23055:15;23087:7;23073:8;23082:1;23073:11;;;;;;;;;;;;;;;;:21;23055:39;;23129:34;23155:7;23129:9;:21;23139:7;23147:1;23139:10;;;;;;;;;;;;;;;;23129:21;;;;;;;;;;;;;;;;:25;;:34;;;;:::i;:::-;23105:9;:21;23115:7;23123:1;23115:10;;;;;;;;;;;;;;;;23105:21;;;;;;;;;;;;;;;:58;;;;23202:7;23210:1;23202:10;;;;;;;;;;;;;;;;23179:43;;23188:12;:10;:12::i;:::-;23179:43;;;23214:7;23179:43;;;;;;;;;;;;;;;;;;23252:29;23273:7;23252:16;:20;;:29;;;;:::i;:::-;23233:48;;23001:290;23039:3;;;;;;;23001:290;;;;23325:16;23299:9;:23;23309:12;:10;:12::i;:::-;23299:23;;;;;;;;;;;;;;;:42;;;;15768:1;22762:587:::0;;:::o;18670:36::-;;;;:::o;18293:32::-;;;;:::o;20619:119::-;20685:7;20712:9;:18;20722:7;20712:18;;;;;;;;;;;;;;;;20705:25;;20619:119;;;:::o;23357:288::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23494:5:::1;:12;23474:9;:16;:32;23466:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23542:7;23537:101;23559:9;:16;23555:1;:20;;;23537:101;;;23620:5;23626:1;23620:8;;;;;;;;;;;;;;;;23593:10;:24;23604:9;23614:1;23604:12;;;;;;;;;;;;;;;;23593:24;;;;;;;;;;;;;;;:35;;;;23577:3;;;;;;;23537:101;;;;23357:288:::0;;:::o;16129:148::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16236:1:::1;16199:40;;16220:6;::::0;::::1;;;;;;;;16199:40;;;;;;;;;;;;16267:1;16250:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16129:148::o:0;22345:172::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22407:28:::1;22438:24;22456:4;22438:9;:24::i;:::-;22407:55;;22473:36;22488:20;22473:14;:36::i;:::-;15768:1;22345:172::o:0;18587:29::-;;;;:::o;18450:56::-;18496:10;18450:56;:::o;18713:36::-;;;;:::o;24391:342::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24468:1:::1;24454:10;;:15;24446:43;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;24513:15;24500:10;:28;;;;24556:35;18496:10;24556;;:14;;:35;;;;:::i;:::-;24539:14;:52;;;;24619:39;18496:10;24619:14;;:18;;:39;;;;:::i;:::-;24602:14;:56;;;;24686:39;18496:10;24686:14;;:18;;:39;;;;:::i;:::-;24669:14;:56;;;;24391:342::o:0;15486:79::-;15524:7;15551:6;;;;;;;;;;;15544:13;;15486:79;:::o;17972:26::-;;;;;;;;;;;;;:::o;20330:87::-;20369:13;20402:7;20395:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20330:87;:::o;23653:730::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23785:9:::1;:16;23765:9;:16;:36;23757:64;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;23835:6;23830:546;23851:9;:16;23847:1;:20;23830:546;;;23887:16;23906:9;23916:1;23906:12;;;;;;;;;;;;;;23887:31;;23929:16;23948:9;23958:1;23948:12;;;;;;;;;;;;;;23929:31;;23989:1;23977:8;:13;23973:394;;;24015:8;24005:7;:18;;;;23973:394;;;24066:1;24054:8;:13;24050:317;;;24096:8;24082:11;:22;;;;24050:317;;;24147:1;24135:8;:13;24131:236;;;24181:8;24163:15;:26;;;;24131:236;;;24232:1;24220:8;:13;24216:151;;;24264:8;24248:13;:24;;;;24216:151;;;24315:1;24303:8;:13;24299:68;;;24347:8;24331:13;:24;;;;24299:68;24216:151;24131:236;24050:317;23973:394;23830:546;;23869:3;;;;;;;23830:546;;;;23653:730:::0;;:::o;18515:29::-;;;;:::o;18005:30::-;;;;;;;;;;;;;:::o;21788:269::-;21881:4;21898:129;21907:12;:10;:12::i;:::-;21921:7;21930:96;21969:15;21930:96;;;;;;;;;;;;;;;;;:11;:25;21942:12;:10;:12::i;:::-;21930:25;;;;;;;;;;;;;;;:34;21956:7;21930:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;21898:8;:129::i;:::-;22045:4;22038:11;;21788:269;;;;:::o;18256:30::-;;;;:::o;20746:167::-;20824:4;20841:42;20851:12;:10;:12::i;:::-;20865:9;20876:6;20841:9;:42::i;:::-;20901:4;20894:11;;20746:167;;;;:::o;18372:27::-;;;;:::o;18406:35::-;;;;:::o;18042:34::-;;;;;;;;;;;;;:::o;20921:143::-;21002:7;21029:11;:18;21041:5;21029:18;;;;;;;;;;;;;;;:27;21048:7;21029:27;;;;;;;;;;;;;;;;21022:34;;20921:143;;;;:::o;22644:110::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22741:5:::1;22711:18;:27;22730:7;22711:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;22644:110:::0;:::o;16432:244::-;15708:12;:10;:12::i;:::-;15698:22;;:6;;;;;;;;;;:22;;;15690:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16541:1:::1;16521:22;;:8;:22;;;;16513:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16631:8;16602:38;;16623:6;::::0;::::1;;;;;;;;16602:38;;;;;;;;;;;;16660:8;16651:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16432:244:::0;:::o;18756:34::-;;;;:::o;7972:106::-;8025:15;8060:10;8053:17;;7972:106;:::o;25031:337::-;25141:1;25124:19;;:5;:19;;;;25116:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25222:1;25203:21;;:7;:21;;;;25195:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25306:6;25276:11;:18;25288:5;25276:18;;;;;;;;;;;;;;;:27;25295:7;25276:27;;;;;;;;;;;;;;;:36;;;;25344:7;25328:32;;25337:5;25328:32;;;25353:6;25328:32;;;;;;;;;;;;;;;;;;25031:337;;;:::o;25376:2112::-;25514:1;25498:18;;:4;:18;;;;25490:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25586:1;25577:6;:10;25569:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25644:28;25675:24;25693:4;25675:9;:24::i;:::-;25644:55;;25712:24;25763:29;;25739:20;:53;;25712:80;;25821:19;:53;;;;;25858:16;;;;;;;;;;;25857:17;25821:53;:91;;;;;25899:13;25891:21;;:4;:21;;;;25821:91;:129;;;;;25929:21;;;;;;;;;;;25821:129;25803:222;;;25977:36;25992:20;25977:14;:36::i;:::-;25803:222;26098:12;26113:4;26098:19;;26217:18;:24;26236:4;26217:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;26245:18;:22;26264:2;26245:22;;;;;;;;;;;;;;;;;;;;;;;;;26217:50;26214:186;;;26293:5;26283:15;;26214:186;;;26359:1;26346:10;;:14;26338:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26214:186;26412:18;26441:13;26433:21;;:4;:21;;;26412:42;;26465:19;26493:13;26487:19;;:2;:19;;;26465:41;;26524:13;26523:14;:33;;;;;26542:14;26541:15;26523:33;26519:79;;;26581:5;26571:15;;26519:79;26633:14;;26614:15;:33;26610:672;;26673:14;26672:15;26664:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26778:14;;26760:15;:32;26756:515;;;26841:1;26821:17;26835:2;26821:13;:17::i;:::-;:21;26813:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26756:515;;;26957:14;;26939:15;:32;26935:336;;;27020:1;27000:17;27014:2;27000:13;:17::i;:::-;:21;:46;;;;;27045:1;27025:17;27039:2;27025:13;:17::i;:::-;:21;27000:46;26992:112;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26935:336;;;27190:1;27169:17;27183:2;27169:13;:17::i;:::-;:22;27161:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26935:336;26756:515;26610:672;27294:41;27312:4;27317:2;27320:6;27327:7;27294:17;:41::i;:::-;27353:18;:22;27372:2;27353:22;;;;;;;;;;;;;;;;;;;;;;;;;27352:23;:48;;;;;27386:13;27380:19;;:2;:19;;;;27352:48;27348:132;;;27426:16;;27410:13;27420:2;27410:9;:13::i;:::-;:32;27402:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27348:132;25376:2112;;;;;;;;:::o;4382:192::-;4468:7;4501:1;4496;:6;;4504:12;4488:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4528:9;4544:1;4540;:5;4528:17;;4565:1;4558:8;;;4382:192;;;;;:::o;3479:181::-;3537:7;3557:9;3573:1;3569;:5;3557:17;;3598:1;3593;:6;;3585:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3651:1;3644:8;;;3479:181;;;;:::o;3943:136::-;4001:7;4028:43;4032:1;4035;4028:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4021:50;;3943:136;;;;:::o;27496:1769::-;19200:4;19181:16;;:23;;;;;;;;;;;;;;;;;;27581:21:::1;27645:20;27621:21;;:44;27617:87;;;27683:21;;27667:37;;27617:87;27717:24;27744:39;27769:13;27744:20;:24;;:39;;;;:::i;:::-;27717:66;;27794:25;27822:20;27840:1;27822:13;:17;;:20;;;;:::i;:::-;27794:48;;27853:30;27886:36;27904:17;27886:13;:17;;:36;;;;:::i;:::-;27853:69;;28026:20;28049:39;28071:16;28049:17;:21;;:39;;;;:::i;:::-;28026:62;;28101:30;28118:12;28101:16;:30::i;:::-;28144:18;28165:21;28144:42;;28197:18;28218:57;28262:12;28218:39;28246:10;28218:23;;:27;;:39;;;;:::i;:::-;:43;;:57;;;;:::i;:::-;28197:78;;28286:24;28313:55;28355:12;28313:37;28339:10;28313:21;;:25;;:37;;;;:::i;:::-;:41;;:55;;;;:::i;:::-;28286:82;;28379:22;28404:53;28444:12;28404:35;28428:10;28404:19;;:23;;:35;;;;:::i;:::-;:39;;:53;;;;:::i;:::-;28379:78;;28468:24;28495:51;28533:12;28495:33;28517:10;28495:17;:21;;:33;;;;:::i;:::-;:37;;:51;;;;:::i;:::-;28468:78;;28588:1;28563:22;:26;:50;;;;;28612:1;28593:16;:20;28563:50;28559:110;;;28615:54;28628:22;28652:16;28615:12;:54::i;:::-;28559:110;28699:1;28686:10;:14;:52;;;;;28717:21;28704:10;:34;28686:52;28682:91;;;28740:3;;;;;;;;;;;:8;;28757:10;28740:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28682:91;28807:1;28788:16;:20;:64;;;;;28831:21;28812:16;:40;28788:64;28784:115;;;28854:9;;;;;;;;;;;:14;;28877:16;28854:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28784:115;28931:1;28914:14;:18;:60;;;;;28953:21;28936:14;:38;28914:60;28910:107;;;28976:7;;;;;;;;;;;:12;;28997:14;28976:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28910:107;29056:1;29032:21;:25;29028:83;;;29059:11;;;;;;;;;;;:16;;29084:21;29059:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29028:83;29150:1;29124:23;:27;;;;29186:1;29162:21;:25;;;;29220:1;29198:19;:23;;;;29256:1;29232:21;:25;;;;19215:1;;;;;;;;;;19246:5:::0;19227:16;;:24;;;;;;;;;;;;;;;;;;27496:1769;:::o;30311:1337::-;30423:23;30449:7;30423:33;;30471:7;30467:882;;;30493:14;30510:37;30545:1;30510:30;30535:4;30510:20;30522:7;;30510;:11;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;:34;;:37;;;;:::i;:::-;30493:54;;30560:20;30583:43;30624:1;30583:36;30614:4;30583:26;30595:13;;30583:7;:11;;:26;;;;:::i;:::-;:30;;:36;;;;:::i;:::-;:40;;:43;;;;:::i;:::-;30560:66;;30639:20;30662:43;30703:1;30662:36;30693:4;30662:26;30674:13;;30662:7;:11;;:26;;;;:::i;:::-;:30;;:36;;;;:::i;:::-;:40;;:43;;;;:::i;:::-;30639:66;;30718:18;30739:41;30778:1;30739:34;30768:4;30739:24;30751:11;;30739:7;:11;;:24;;;;:::i;:::-;:28;;:34;;;;:::i;:::-;:38;;:41;;;;:::i;:::-;30718:62;;30793:22;30818:45;30861:1;30818:38;30851:4;30818:28;30830:15;;30818:7;:11;;:28;;;;:::i;:::-;:32;;:38;;;;:::i;:::-;:42;;:45;;;;:::i;:::-;30793:70;;30894:63;30944:12;30894:45;30926:12;30894:27;30914:6;30894:15;:19;;:27;;;;:::i;:::-;:31;;:45;;;;:::i;:::-;:49;;:63;;;;:::i;:::-;30876:81;;30988:51;31024:14;30988:31;31008:10;30988:15;:19;;:31;;;;:::i;:::-;:35;;:51;;;;:::i;:::-;30970:69;;31080:35;31108:6;31080:23;;:27;;:35;;;;:::i;:::-;31054:23;:61;;;;31152:39;31178:12;31152:21;;:25;;:39;;;;:::i;:::-;31128:21;:63;;;;31228:39;31254:12;31228:21;;:25;;:39;;;;:::i;:::-;31204:21;:63;;;;31302:35;31326:10;31302:19;;:23;;:35;;;;:::i;:::-;31280:19;:57;;;;30467:882;;;;;;31379:30;31401:7;31379:9;:17;31389:6;31379:17;;;;;;;;;;;;;;;;:21;;:30;;;;:::i;:::-;31359:9;:17;31369:6;31359:17;;;;;;;;;;;;;;;:50;;;;31443:41;31468:15;31443:9;:20;31453:9;31443:20;;;;;;;;;;;;;;;;:24;;:41;;;;:::i;:::-;31420:9;:20;31430:9;31420:20;;;;;;;;;;;;;;;:64;;;;31522:58;31551:28;31563:15;31551:7;:11;;:28;;;;:::i;:::-;31522:9;:24;31540:4;31522:24;;;;;;;;;;;;;;;;:28;;:58;;;;:::i;:::-;31495:9;:24;31513:4;31495:24;;;;;;;;;;;;;;;:85;;;;31613:9;31596:44;;31605:6;31596:44;;;31624:15;31596:44;;;;;;;;;;;;;;;;;;30311:1337;;;;;:::o;5780:132::-;5838:7;5865:39;5869:1;5872;5865:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5858:46;;5780:132;;;;:::o;29273:561::-;29399:21;29437:1;29423:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29399:40;;29468:4;29450;29455:1;29450:7;;;;;;;;;;;;;:23;;;;;;;;;;;29494:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29484:4;29489:1;29484:7;;;;;;;;;;;;;:32;;;;;;;;;;;29529:62;29546:4;29561:15;29579:11;29529:8;:62::i;:::-;29630:15;:66;;;29711:11;29737:1;29753:4;29780;29800:15;29630:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29273:561;;:::o;4833:471::-;4891:7;5141:1;5136;:6;5132:47;;;5166:1;5159:8;;;;5132:47;5191:9;5207:1;5203;:5;5191:17;;5236:1;5231;5227;:5;;;;;;:10;5219:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5295:1;5288:8;;;4833:471;;;;;:::o;29842:461::-;29990:62;30007:4;30022:15;30040:11;29990:8;:62::i;:::-;30095:15;:31;;;30134:9;30167:4;30187:11;30213:1;30229;30245:9;;;;;;;;;;;30269:15;30095:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29842:461;;:::o;6408:278::-;6494:7;6526:1;6522;:5;6529:12;6514:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6553:9;6569:1;6565;:5;;;;;;6553:17;;6677:1;6670:8;;;6408:278;;;;;:::o

Swarm Source

ipfs://c9ad01fbbe78508335dd9082735fe7f83b5618a5866289f80ffe28ec9f699f66
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.