ETH Price: $3,362.95 (+0.24%)
Gas: 7 Gwei

Token

Pokadex (POKA)
 

Overview

Max Total Supply

1,000,000,000,000,000 POKA

Holders

508

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
565,920,695,534.31469837 POKA

Value
$0.00
0x3568cb689c9077e5946c71c3685be44a96f18cd6
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:
POKA

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-06-18
*/

/**
 *Submitted for verification at Etherscan.io on 2021-06-15
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.0;

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

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

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

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

        // 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");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        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 factory() external pure returns (address);
    function WETH() 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);
}

contract POKA is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => uint) private cooldown;

    address[] private _excluded;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1e15 * 1e9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    string private constant _name = "Pokadex";
    string private constant _symbol = 'POKA';
    uint8 private constant _decimals = 9;
    uint256 private _taxFee = 2;
    uint256 private _teamFee = 8;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private _previousteamFee = _teamFee;
    address payable private _marketingWalletAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private cooldownEnabled = false;
    uint256 private _maxTxAmount = _tTotal;

    event MaxTxAmountUpdated(uint _maxTxAmount);

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

    constructor ()  {
        _marketingWalletAddress = payable(0xaAADE0E8458734a37Eb262902c9F94Fde92db431);
        _rOwned[_msgSender()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketingWalletAddress] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

    function setCooldownEnabled(bool onoff) external onlyOwner() {
        cooldownEnabled = onoff;
    }

    function tokenFromReflection(uint256 rAmount) private view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if(_taxFee == 0 && _teamFee == 0) return;
        _previousTaxFee = _taxFee;
        _previousteamFee = _teamFee;
        _taxFee = 0;
        _teamFee = 0;
    }
    
    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _teamFee = _previousteamFee;
    }

    function _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(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        
        if (from != owner() && to != owner()) {
            if (cooldownEnabled) {
                if (from != address(this) && to != address(this) && from != address(uniswapV2Router) && to != address(uniswapV2Router)) {
                    require(_msgSender() == address(uniswapV2Router) || _msgSender() == uniswapV2Pair,"ERR: Uniswap only");
                }
            }
            require(amount <= _maxTxAmount);

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && cooldownEnabled) {
                require(cooldown[to] < block.timestamp);
                cooldown[to] = block.timestamp + (30 seconds);
            }
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
        bool takeFee = true;

        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }
		
        _tokenTransfer(from,to,amount,takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
        
    function sendETHToFee(uint256 amount) private {
        _marketingWalletAddress.transfer(amount.div(2));
    }
    
    function manualswap() external {
        require(_msgSender() == _marketingWalletAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }
    
    function manualsend() external {
        require(_msgSender() == _marketingWalletAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
        
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapEnabled = true;
        cooldownEnabled = true;
        _maxTxAmount = 5e12 * 1e9;
        tradingOpen = true;
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
    }
        
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if(!takeFee)
            removeAllFee();
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if(!takeFee)
            restoreAllFee();
    }

    function _transferStandard(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam); 
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);    
        _takeTeam(tTeam);           
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); 
        _takeTeam(tTeam);   
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 tAmount) private {
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);   
        _takeTeam(tTeam);         
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate =  _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount) private view returns (uint256, uint256, uint256, uint256, uint256, uint256) {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) = _getTValues(tAmount, _taxFee, _teamFee);
        uint256 currentRate =  _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(uint256 tAmount, uint256 taxFee, uint256 TeamFee) private pure returns (uint256, uint256, uint256) {
        uint256 tFee = tAmount.mul(taxFee).div(100);
        uint256 tTeam = tAmount.mul(TeamFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(uint256 tAmount, uint256 tFee, uint256 tTeam, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }
        
    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        require(maxTxPercent > 0, "Amount must be greater than 0");
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
        emit MaxTxAmountUpdated(_maxTxAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":[{"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":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onoff","type":"bool"}],"name":"setCooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000006000196200001e919062000471565b6000196200002d91906200042c565b6008556002600a556008600b55600a54600c55600b54600d556000601060156101000a81548160ff0219169083151502179055506000601060166101000a81548160ff0219169083151502179055506000601060176101000a81548160ff02191690831515021790555069d3c21bcecceda1000000601155348015620000b257600080fd5b506000620000c5620003cd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073aaade0e8458734a37eb262902c9f94fde92db431600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460016000620001cf620003cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016004600062000223620003d560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000356620003cd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69d3c21bcecceda1000000604051620003bf91906200040f565b60405180910390a362000507565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004098162000467565b82525050565b6000602082019050620004266000830184620003fe565b92915050565b6000620004398262000467565b9150620004468362000467565b9250828210156200045c576200045b620004a9565b5b828203905092915050565b6000819050919050565b60006200047e8262000467565b91506200048b8362000467565b9250826200049e576200049d620004d8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b61404280620005176000396000f3fe6080604052600436106101025760003560e01c8063715018a611610095578063c3c8cd8011610064578063c3c8cd8014610330578063c9567bf914610347578063d543dbeb1461035e578063dd62ed3e14610387578063f2fde38b146103c457610109565b8063715018a6146102865780638da5cb5b1461029d57806395d89b41146102c8578063a9059cbb146102f357610109565b8063313ce567116100d1578063313ce567146101de5780635932ead1146102095780636fc3eaec1461023257806370a082311461024957610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd1461017657806323b872dd146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b506101236103ed565b6040516101309190613ad1565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b919061340f565b61042a565b60405161016d9190613ab6565b60405180910390f35b34801561018257600080fd5b5061018b610448565b6040516101989190613c53565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906133c0565b61045a565b6040516101d59190613ab6565b60405180910390f35b3480156101ea57600080fd5b506101f3610533565b6040516102009190613cc8565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b919061344b565b61053c565b005b34801561023e57600080fd5b506102476105d5565b005b34801561025557600080fd5b50610270600480360381019061026b9190613332565b610647565b60405161027d9190613c53565b60405180910390f35b34801561029257600080fd5b5061029b610732565b005b3480156102a957600080fd5b506102b261086c565b6040516102bf91906139e8565b60405180910390f35b3480156102d457600080fd5b506102dd610895565b6040516102ea9190613ad1565b60405180910390f35b3480156102ff57600080fd5b5061031a6004803603810190610315919061340f565b6108d2565b6040516103279190613ab6565b60405180910390f35b34801561033c57600080fd5b506103456108f0565b005b34801561035357600080fd5b5061035c61096a565b005b34801561036a57600080fd5b506103856004803603810190610380919061349d565b610eb0565b005b34801561039357600080fd5b506103ae60048036038101906103a99190613384565b610fe1565b6040516103bb9190613c53565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e69190613332565b611068565b005b60606040518060400160405280600781526020017f506f6b6164657800000000000000000000000000000000000000000000000000815250905090565b600061043e610437611211565b8484611219565b6001905092915050565b600069d3c21bcecceda1000000905090565b60006104678484846113e4565b61052884610473611211565b61052385604051806060016040528060288152602001613fe560289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d9611211565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611af69092919063ffffffff16565b611219565b600190509392505050565b60006009905090565b610544611211565b73ffffffffffffffffffffffffffffffffffffffff1661056261086c565b73ffffffffffffffffffffffffffffffffffffffff16146105b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105af90613b93565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610616611211565b73ffffffffffffffffffffffffffffffffffffffff161461063657600080fd5b600047905061064481611b4b565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156106e257600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061072d565b61072a600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bca565b90505b919050565b61073a611211565b73ffffffffffffffffffffffffffffffffffffffff1661075861086c565b73ffffffffffffffffffffffffffffffffffffffff16146107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a590613b93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f504f4b4100000000000000000000000000000000000000000000000000000000815250905090565b60006108e66108df611211565b84846113e4565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610931611211565b73ffffffffffffffffffffffffffffffffffffffff161461095157600080fd5b600061095c30610647565b905061096781611c38565b50565b610972611211565b73ffffffffffffffffffffffffffffffffffffffff1661099061086c565b73ffffffffffffffffffffffffffffffffffffffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90613b93565b60405180910390fd5b601060149054906101000a900460ff1615610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90613c13565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ac730600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000611219565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b45919061335b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba757600080fd5b505afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf919061335b565b6040518363ffffffff1660e01b8152600401610bfc929190613a03565b602060405180830381600087803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061335b565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610cd730610647565b600080610ce261086c565b426040518863ffffffff1660e01b8152600401610d0496959493929190613a55565b6060604051808303818588803b158015610d1d57600080fd5b505af1158015610d31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d5691906134c6565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff02191690831515021790555069010f0cf064dd592000006011819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e5a929190613a2c565b602060405180830381600087803b158015610e7457600080fd5b505af1158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190613474565b5050565b610eb8611211565b73ffffffffffffffffffffffffffffffffffffffff16610ed661086c565b73ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390613b93565b60405180910390fd5b60008111610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6690613b73565b60405180910390fd5b610f9f6064610f918369d3c21bcecceda1000000611f3290919063ffffffff16565b611f4890919063ffffffff16565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601154604051610fd69190613c53565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611070611211565b73ffffffffffffffffffffffffffffffffffffffff1661108e61086c565b73ffffffffffffffffffffffffffffffffffffffff16146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90613b93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b90613b33565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128090613bf3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f090613b53565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d79190613c53565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b90613bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613af3565b60405180910390fd5b60008111611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90613bb3565b60405180910390fd5b61150f61086c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561157d575061154d61086c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a3357601060179054906101000a900460ff16156117b0573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115ff57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116595750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116b35750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117af57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116f9611211565b73ffffffffffffffffffffffffffffffffffffffff16148061176f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611757611211565b73ffffffffffffffffffffffffffffffffffffffff16145b6117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a590613c33565b60405180910390fd5b5b5b6011548111156117bf57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561186a5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118c05750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118d85750601060179054906101000a900460ff165b156119795742600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061192857600080fd5b601e426119359190613d38565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600061198430610647565b9050601060159054906101000a900460ff161580156119f15750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a095750601060169054906101000a900460ff165b15611a3157611a1781611c38565b60004790506000811115611a2f57611a2e47611b4b565b5b505b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ada5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ae457600090505b611af084848484611f5e565b50505050565b6000838311158290611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b359190613ad1565b60405180910390fd5b5082840390509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611b9b600284611f4890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611bc6573d6000803e3d6000fd5b5050565b6000600854821115611c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0890613b13565b60405180910390fd5b6000611c1b6121b5565b9050611c308184611f4890919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611cc45781602001602082028036833780820191505090505b5090503081600081518110611d02577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611da457600080fd5b505afa158015611db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddc919061335b565b81600181518110611e16577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e7d30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611219565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ee1959493929190613c6e565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b60008183611f409190613dbf565b905092915050565b60008183611f569190613d8e565b905092915050565b80611f6c57611f6b6121e0565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561200f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120245761201f848484612223565b6121a1565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120c75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120dc576120d7848484612483565b6121a0565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561217e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121935761218e8484846126e3565b61219f565b61219e8484846129d8565b5b5b5b806121af576121ae612ba3565b5b50505050565b60008060006121c2612bb7565b915091506121d98183611f4890919063ffffffff16565b9250505090565b6000600a541480156121f457506000600b54145b156121fe57612221565b600a54600c81905550600b54600d819055506000600a819055506000600b819055505b565b60008060008060008061223587612f22565b95509550955095509550955061229387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123bd85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061240981612fb6565b612413848361315b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124709190613c53565b60405180910390a3505050505050505050565b60008060008060008061249587612f22565b9550955095509550955095506124f386600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258883600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061261d85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266981612fb6565b612673848361315b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126d09190613c53565b60405180910390a3505050505050505050565b6000806000806000806126f587612f22565b95509550955095509550955061275387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287d83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061291285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061295e81612fb6565b612968848361315b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129c59190613c53565b60405180910390a3505050505050505050565b6000806000806000806129ea87612f22565b955095509550955095509550612a4886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612add85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b2981612fb6565b612b33848361315b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b909190613c53565b60405180910390a3505050505050505050565b600c54600a81905550600d54600b81905550565b60008060006008549050600069d3c21bcecceda1000000905060005b600780549050811015612ed557826001600060078481548110612c1f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612d335750816002600060078481548110612ccb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612d525760085469d3c21bcecceda100000094509450505050612f1e565b612e086001600060078481548110612d93577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612f8a90919063ffffffff16565b9250612ec06002600060078481548110612e4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612f8a90919063ffffffff16565b91508080612ecd90613ee7565b915050612bd3565b50612ef569d3c21bcecceda1000000600854611f4890919063ffffffff16565b821015612f155760085469d3c21bcecceda1000000935093505050612f1e565b81819350935050505b9091565b6000806000806000806000806000612f3f8a600a54600b54613195565b9250925092506000612f4f6121b5565b90506000806000612f628e87878761322b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60008183612f989190613e19565b905092915050565b60008183612fae9190613d38565b905092915050565b6000612fc06121b5565b90506000612fd78284611f3290919063ffffffff16565b905061302b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131565761311283600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61317082600854612f8a90919063ffffffff16565b60088190555061318b81600954612fa090919063ffffffff16565b6009819055505050565b6000806000806131c160646131b3888a611f3290919063ffffffff16565b611f4890919063ffffffff16565b905060006131eb60646131dd888b611f3290919063ffffffff16565b611f4890919063ffffffff16565b9050600061321482613206858c612f8a90919063ffffffff16565b612f8a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132448589611f3290919063ffffffff16565b9050600061325b8689611f3290919063ffffffff16565b905060006132728789611f3290919063ffffffff16565b9050600061329b8261328d8587612f8a90919063ffffffff16565b612f8a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000813590506132c381613f9f565b92915050565b6000815190506132d881613f9f565b92915050565b6000813590506132ed81613fb6565b92915050565b60008151905061330281613fb6565b92915050565b60008135905061331781613fcd565b92915050565b60008151905061332c81613fcd565b92915050565b60006020828403121561334457600080fd5b6000613352848285016132b4565b91505092915050565b60006020828403121561336d57600080fd5b600061337b848285016132c9565b91505092915050565b6000806040838503121561339757600080fd5b60006133a5858286016132b4565b92505060206133b6858286016132b4565b9150509250929050565b6000806000606084860312156133d557600080fd5b60006133e3868287016132b4565b93505060206133f4868287016132b4565b925050604061340586828701613308565b9150509250925092565b6000806040838503121561342257600080fd5b6000613430858286016132b4565b925050602061344185828601613308565b9150509250929050565b60006020828403121561345d57600080fd5b600061346b848285016132de565b91505092915050565b60006020828403121561348657600080fd5b6000613494848285016132f3565b91505092915050565b6000602082840312156134af57600080fd5b60006134bd84828501613308565b91505092915050565b6000806000606084860312156134db57600080fd5b60006134e98682870161331d565b93505060206134fa8682870161331d565b925050604061350b8682870161331d565b9150509250925092565b6000613521838361352d565b60208301905092915050565b61353681613e4d565b82525050565b61354581613e4d565b82525050565b600061355682613cf3565b6135608185613d16565b935061356b83613ce3565b8060005b8381101561359c5781516135838882613515565b975061358e83613d09565b92505060018101905061356f565b5085935050505092915050565b6135b281613e5f565b82525050565b6135c181613ea2565b82525050565b60006135d282613cfe565b6135dc8185613d27565b93506135ec818560208601613eb4565b6135f581613f8e565b840191505092915050565b600061360d602383613d27565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613673602a83613d27565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006136d9602683613d27565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061373f602283613d27565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006137a5601d83613d27565b91507f416d6f756e74206d7573742062652067726561746572207468616e20300000006000830152602082019050919050565b60006137e5602083613d27565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613825602983613d27565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600061388b602583613d27565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006138f1602483613d27565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613957601783613d27565b91507f74726164696e6720697320616c7265616479206f70656e0000000000000000006000830152602082019050919050565b6000613997601183613d27565b91507f4552523a20556e6973776170206f6e6c790000000000000000000000000000006000830152602082019050919050565b6139d381613e8b565b82525050565b6139e281613e95565b82525050565b60006020820190506139fd600083018461353c565b92915050565b6000604082019050613a18600083018561353c565b613a25602083018461353c565b9392505050565b6000604082019050613a41600083018561353c565b613a4e60208301846139ca565b9392505050565b600060c082019050613a6a600083018961353c565b613a7760208301886139ca565b613a8460408301876135b8565b613a9160608301866135b8565b613a9e608083018561353c565b613aab60a08301846139ca565b979650505050505050565b6000602082019050613acb60008301846135a9565b92915050565b60006020820190508181036000830152613aeb81846135c7565b905092915050565b60006020820190508181036000830152613b0c81613600565b9050919050565b60006020820190508181036000830152613b2c81613666565b9050919050565b60006020820190508181036000830152613b4c816136cc565b9050919050565b60006020820190508181036000830152613b6c81613732565b9050919050565b60006020820190508181036000830152613b8c81613798565b9050919050565b60006020820190508181036000830152613bac816137d8565b9050919050565b60006020820190508181036000830152613bcc81613818565b9050919050565b60006020820190508181036000830152613bec8161387e565b9050919050565b60006020820190508181036000830152613c0c816138e4565b9050919050565b60006020820190508181036000830152613c2c8161394a565b9050919050565b60006020820190508181036000830152613c4c8161398a565b9050919050565b6000602082019050613c6860008301846139ca565b92915050565b600060a082019050613c8360008301886139ca565b613c9060208301876135b8565b8181036040830152613ca2818661354b565b9050613cb1606083018561353c565b613cbe60808301846139ca565b9695505050505050565b6000602082019050613cdd60008301846139d9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613d4382613e8b565b9150613d4e83613e8b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d8357613d82613f30565b5b828201905092915050565b6000613d9982613e8b565b9150613da483613e8b565b925082613db457613db3613f5f565b5b828204905092915050565b6000613dca82613e8b565b9150613dd583613e8b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e0e57613e0d613f30565b5b828202905092915050565b6000613e2482613e8b565b9150613e2f83613e8b565b925082821015613e4257613e41613f30565b5b828203905092915050565b6000613e5882613e6b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613ead82613e8b565b9050919050565b60005b83811015613ed2578082015181840152602081019050613eb7565b83811115613ee1576000848401525b50505050565b6000613ef282613e8b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f2557613f24613f30565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b613fa881613e4d565b8114613fb357600080fd5b50565b613fbf81613e5f565b8114613fca57600080fd5b50565b613fd681613e8b565b8114613fe157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b86d21cc17abe6d8bee61d87380e6d9f691ae88dc629258eeee1ff84da610e3464736f6c63430008000033

Deployed Bytecode

0x6080604052600436106101025760003560e01c8063715018a611610095578063c3c8cd8011610064578063c3c8cd8014610330578063c9567bf914610347578063d543dbeb1461035e578063dd62ed3e14610387578063f2fde38b146103c457610109565b8063715018a6146102865780638da5cb5b1461029d57806395d89b41146102c8578063a9059cbb146102f357610109565b8063313ce567116100d1578063313ce567146101de5780635932ead1146102095780636fc3eaec1461023257806370a082311461024957610109565b806306fdde031461010e578063095ea7b31461013957806318160ddd1461017657806323b872dd146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b506101236103ed565b6040516101309190613ad1565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b919061340f565b61042a565b60405161016d9190613ab6565b60405180910390f35b34801561018257600080fd5b5061018b610448565b6040516101989190613c53565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c391906133c0565b61045a565b6040516101d59190613ab6565b60405180910390f35b3480156101ea57600080fd5b506101f3610533565b6040516102009190613cc8565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b919061344b565b61053c565b005b34801561023e57600080fd5b506102476105d5565b005b34801561025557600080fd5b50610270600480360381019061026b9190613332565b610647565b60405161027d9190613c53565b60405180910390f35b34801561029257600080fd5b5061029b610732565b005b3480156102a957600080fd5b506102b261086c565b6040516102bf91906139e8565b60405180910390f35b3480156102d457600080fd5b506102dd610895565b6040516102ea9190613ad1565b60405180910390f35b3480156102ff57600080fd5b5061031a6004803603810190610315919061340f565b6108d2565b6040516103279190613ab6565b60405180910390f35b34801561033c57600080fd5b506103456108f0565b005b34801561035357600080fd5b5061035c61096a565b005b34801561036a57600080fd5b506103856004803603810190610380919061349d565b610eb0565b005b34801561039357600080fd5b506103ae60048036038101906103a99190613384565b610fe1565b6040516103bb9190613c53565b60405180910390f35b3480156103d057600080fd5b506103eb60048036038101906103e69190613332565b611068565b005b60606040518060400160405280600781526020017f506f6b6164657800000000000000000000000000000000000000000000000000815250905090565b600061043e610437611211565b8484611219565b6001905092915050565b600069d3c21bcecceda1000000905090565b60006104678484846113e4565b61052884610473611211565b61052385604051806060016040528060288152602001613fe560289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006104d9611211565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611af69092919063ffffffff16565b611219565b600190509392505050565b60006009905090565b610544611211565b73ffffffffffffffffffffffffffffffffffffffff1661056261086c565b73ffffffffffffffffffffffffffffffffffffffff16146105b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105af90613b93565b60405180910390fd5b80601060176101000a81548160ff02191690831515021790555050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610616611211565b73ffffffffffffffffffffffffffffffffffffffff161461063657600080fd5b600047905061064481611b4b565b50565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156106e257600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061072d565b61072a600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611bca565b90505b919050565b61073a611211565b73ffffffffffffffffffffffffffffffffffffffff1661075861086c565b73ffffffffffffffffffffffffffffffffffffffff16146107ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a590613b93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f504f4b4100000000000000000000000000000000000000000000000000000000815250905090565b60006108e66108df611211565b84846113e4565b6001905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610931611211565b73ffffffffffffffffffffffffffffffffffffffff161461095157600080fd5b600061095c30610647565b905061096781611c38565b50565b610972611211565b73ffffffffffffffffffffffffffffffffffffffff1661099061086c565b73ffffffffffffffffffffffffffffffffffffffff16146109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90613b93565b60405180910390fd5b601060149054906101000a900460ff1615610a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2d90613c13565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ac730600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669d3c21bcecceda1000000611219565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0d57600080fd5b505afa158015610b21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b45919061335b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba757600080fd5b505afa158015610bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bdf919061335b565b6040518363ffffffff1660e01b8152600401610bfc929190613a03565b602060405180830381600087803b158015610c1657600080fd5b505af1158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061335b565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610cd730610647565b600080610ce261086c565b426040518863ffffffff1660e01b8152600401610d0496959493929190613a55565b6060604051808303818588803b158015610d1d57600080fd5b505af1158015610d31573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610d5691906134c6565b5050506001601060166101000a81548160ff0219169083151502179055506001601060176101000a81548160ff02191690831515021790555069010f0cf064dd592000006011819055506001601060146101000a81548160ff021916908315150217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e5a929190613a2c565b602060405180830381600087803b158015610e7457600080fd5b505af1158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190613474565b5050565b610eb8611211565b73ffffffffffffffffffffffffffffffffffffffff16610ed661086c565b73ffffffffffffffffffffffffffffffffffffffff1614610f2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2390613b93565b60405180910390fd5b60008111610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6690613b73565b60405180910390fd5b610f9f6064610f918369d3c21bcecceda1000000611f3290919063ffffffff16565b611f4890919063ffffffff16565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf601154604051610fd69190613c53565b60405180910390a150565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611070611211565b73ffffffffffffffffffffffffffffffffffffffff1661108e61086c565b73ffffffffffffffffffffffffffffffffffffffff16146110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90613b93565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114b90613b33565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611289576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128090613bf3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156112f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f090613b53565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d79190613c53565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144b90613bd3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bb90613af3565b60405180910390fd5b60008111611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90613bb3565b60405180910390fd5b61150f61086c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561157d575061154d61086c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611a3357601060179054906101000a900460ff16156117b0573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115ff57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116595750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116b35750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156117af57600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116f9611211565b73ffffffffffffffffffffffffffffffffffffffff16148061176f5750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611757611211565b73ffffffffffffffffffffffffffffffffffffffff16145b6117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a590613c33565b60405180910390fd5b5b5b6011548111156117bf57600080fd5b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561186a5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118c05750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118d85750601060179054906101000a900460ff165b156119795742600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541061192857600080fd5b601e426119359190613d38565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600061198430610647565b9050601060159054906101000a900460ff161580156119f15750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611a095750601060169054906101000a900460ff165b15611a3157611a1781611c38565b60004790506000811115611a2f57611a2e47611b4b565b5b505b505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ada5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ae457600090505b611af084848484611f5e565b50505050565b6000838311158290611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b359190613ad1565b60405180910390fd5b5082840390509392505050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611b9b600284611f4890919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611bc6573d6000803e3d6000fd5b5050565b6000600854821115611c11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0890613b13565b60405180910390fd5b6000611c1b6121b5565b9050611c308184611f4890919063ffffffff16565b915050919050565b6001601060156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c96577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015611cc45781602001602082028036833780820191505090505b5090503081600081518110611d02577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611da457600080fd5b505afa158015611db8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddc919061335b565b81600181518110611e16577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e7d30600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611219565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611ee1959493929190613c6e565b600060405180830381600087803b158015611efb57600080fd5b505af1158015611f0f573d6000803e3d6000fd5b50505050506000601060156101000a81548160ff02191690831515021790555050565b60008183611f409190613dbf565b905092915050565b60008183611f569190613d8e565b905092915050565b80611f6c57611f6b6121e0565b5b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561200f5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120245761201f848484612223565b6121a1565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156120c75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120dc576120d7848484612483565b6121a0565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561217e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156121935761218e8484846126e3565b61219f565b61219e8484846129d8565b5b5b5b806121af576121ae612ba3565b5b50505050565b60008060006121c2612bb7565b915091506121d98183611f4890919063ffffffff16565b9250505090565b6000600a541480156121f457506000600b54145b156121fe57612221565b600a54600c81905550600b54600d819055506000600a819055506000600b819055505b565b60008060008060008061223587612f22565b95509550955095509550955061229387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061232886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123bd85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061240981612fb6565b612413848361315b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124709190613c53565b60405180910390a3505050505050505050565b60008060008060008061249587612f22565b9550955095509550955095506124f386600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061258883600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061261d85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061266981612fb6565b612673848361315b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126d09190613c53565b60405180910390a3505050505050505050565b6000806000806000806126f587612f22565b95509550955095509550955061275387600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127e886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061287d83600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061291285600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061295e81612fb6565b612968848361315b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516129c59190613c53565b60405180910390a3505050505050505050565b6000806000806000806129ea87612f22565b955095509550955095509550612a4886600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f8a90919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612add85600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b2981612fb6565b612b33848361315b565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612b909190613c53565b60405180910390a3505050505050505050565b600c54600a81905550600d54600b81905550565b60008060006008549050600069d3c21bcecceda1000000905060005b600780549050811015612ed557826001600060078481548110612c1f577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180612d335750816002600060078481548110612ccb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15612d525760085469d3c21bcecceda100000094509450505050612f1e565b612e086001600060078481548110612d93577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612f8a90919063ffffffff16565b9250612ec06002600060078481548110612e4b577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612f8a90919063ffffffff16565b91508080612ecd90613ee7565b915050612bd3565b50612ef569d3c21bcecceda1000000600854611f4890919063ffffffff16565b821015612f155760085469d3c21bcecceda1000000935093505050612f1e565b81819350935050505b9091565b6000806000806000806000806000612f3f8a600a54600b54613195565b9250925092506000612f4f6121b5565b90506000806000612f628e87878761322b565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60008183612f989190613e19565b905092915050565b60008183612fae9190613d38565b905092915050565b6000612fc06121b5565b90506000612fd78284611f3290919063ffffffff16565b905061302b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156131565761311283600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612fa090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b61317082600854612f8a90919063ffffffff16565b60088190555061318b81600954612fa090919063ffffffff16565b6009819055505050565b6000806000806131c160646131b3888a611f3290919063ffffffff16565b611f4890919063ffffffff16565b905060006131eb60646131dd888b611f3290919063ffffffff16565b611f4890919063ffffffff16565b9050600061321482613206858c612f8a90919063ffffffff16565b612f8a90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806132448589611f3290919063ffffffff16565b9050600061325b8689611f3290919063ffffffff16565b905060006132728789611f3290919063ffffffff16565b9050600061329b8261328d8587612f8a90919063ffffffff16565b612f8a90919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000813590506132c381613f9f565b92915050565b6000815190506132d881613f9f565b92915050565b6000813590506132ed81613fb6565b92915050565b60008151905061330281613fb6565b92915050565b60008135905061331781613fcd565b92915050565b60008151905061332c81613fcd565b92915050565b60006020828403121561334457600080fd5b6000613352848285016132b4565b91505092915050565b60006020828403121561336d57600080fd5b600061337b848285016132c9565b91505092915050565b6000806040838503121561339757600080fd5b60006133a5858286016132b4565b92505060206133b6858286016132b4565b9150509250929050565b6000806000606084860312156133d557600080fd5b60006133e3868287016132b4565b93505060206133f4868287016132b4565b925050604061340586828701613308565b9150509250925092565b6000806040838503121561342257600080fd5b6000613430858286016132b4565b925050602061344185828601613308565b9150509250929050565b60006020828403121561345d57600080fd5b600061346b848285016132de565b91505092915050565b60006020828403121561348657600080fd5b6000613494848285016132f3565b91505092915050565b6000602082840312156134af57600080fd5b60006134bd84828501613308565b91505092915050565b6000806000606084860312156134db57600080fd5b60006134e98682870161331d565b93505060206134fa8682870161331d565b925050604061350b8682870161331d565b9150509250925092565b6000613521838361352d565b60208301905092915050565b61353681613e4d565b82525050565b61354581613e4d565b82525050565b600061355682613cf3565b6135608185613d16565b935061356b83613ce3565b8060005b8381101561359c5781516135838882613515565b975061358e83613d09565b92505060018101905061356f565b5085935050505092915050565b6135b281613e5f565b82525050565b6135c181613ea2565b82525050565b60006135d282613cfe565b6135dc8185613d27565b93506135ec818560208601613eb4565b6135f581613f8e565b840191505092915050565b600061360d602383613d27565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613673602a83613d27565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006136d9602683613d27565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061373f602283613d27565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006137a5601d83613d27565b91507f416d6f756e74206d7573742062652067726561746572207468616e20300000006000830152602082019050919050565b60006137e5602083613d27565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000613825602983613d27565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600061388b602583613d27565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006138f1602483613d27565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613957601783613d27565b91507f74726164696e6720697320616c7265616479206f70656e0000000000000000006000830152602082019050919050565b6000613997601183613d27565b91507f4552523a20556e6973776170206f6e6c790000000000000000000000000000006000830152602082019050919050565b6139d381613e8b565b82525050565b6139e281613e95565b82525050565b60006020820190506139fd600083018461353c565b92915050565b6000604082019050613a18600083018561353c565b613a25602083018461353c565b9392505050565b6000604082019050613a41600083018561353c565b613a4e60208301846139ca565b9392505050565b600060c082019050613a6a600083018961353c565b613a7760208301886139ca565b613a8460408301876135b8565b613a9160608301866135b8565b613a9e608083018561353c565b613aab60a08301846139ca565b979650505050505050565b6000602082019050613acb60008301846135a9565b92915050565b60006020820190508181036000830152613aeb81846135c7565b905092915050565b60006020820190508181036000830152613b0c81613600565b9050919050565b60006020820190508181036000830152613b2c81613666565b9050919050565b60006020820190508181036000830152613b4c816136cc565b9050919050565b60006020820190508181036000830152613b6c81613732565b9050919050565b60006020820190508181036000830152613b8c81613798565b9050919050565b60006020820190508181036000830152613bac816137d8565b9050919050565b60006020820190508181036000830152613bcc81613818565b9050919050565b60006020820190508181036000830152613bec8161387e565b9050919050565b60006020820190508181036000830152613c0c816138e4565b9050919050565b60006020820190508181036000830152613c2c8161394a565b9050919050565b60006020820190508181036000830152613c4c8161398a565b9050919050565b6000602082019050613c6860008301846139ca565b92915050565b600060a082019050613c8360008301886139ca565b613c9060208301876135b8565b8181036040830152613ca2818661354b565b9050613cb1606083018561353c565b613cbe60808301846139ca565b9695505050505050565b6000602082019050613cdd60008301846139d9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613d4382613e8b565b9150613d4e83613e8b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613d8357613d82613f30565b5b828201905092915050565b6000613d9982613e8b565b9150613da483613e8b565b925082613db457613db3613f5f565b5b828204905092915050565b6000613dca82613e8b565b9150613dd583613e8b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e0e57613e0d613f30565b5b828202905092915050565b6000613e2482613e8b565b9150613e2f83613e8b565b925082821015613e4257613e41613f30565b5b828203905092915050565b6000613e5882613e6b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613ead82613e8b565b9050919050565b60005b83811015613ed2578082015181840152602081019050613eb7565b83811115613ee1576000848401525b50505050565b6000613ef282613e8b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613f2557613f24613f30565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b613fa881613e4d565b8114613fb357600080fd5b50565b613fbf81613e5f565b8114613fca57600080fd5b50565b613fd681613e8b565b8114613fe157600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220b86d21cc17abe6d8bee61d87380e6d9f691ae88dc629258eeee1ff84da610e3464736f6c63430008000033

Deployed Bytecode Sourcemap

18176:13562:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20022:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20934:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20299:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21103:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20208:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21424:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24942:202;;;;;;;;;;;;;:::i;:::-;;20402:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16858:148;;;;;;;;;;;;;:::i;:::-;;16207:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20608:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24727:203;;;;;;;;;;;;;:::i;:::-;;25160:807;;;;;;;;;;;;;:::i;:::-;;31480:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20783:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17161:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20022:83;20059:13;20092:5;;;;;;;;;;;;;;;;;20085:12;;20022:83;:::o;20934:161::-;21009:4;21026:39;21035:12;:10;:12::i;:::-;21049:7;21058:6;21026:8;:39::i;:::-;21083:4;21076:11;;20934:161;;;;:::o;20299:95::-;20352:7;18750:10;20372:14;;20299:95;:::o;21103:313::-;21201:4;21218:36;21228:6;21236:9;21247:6;21218:9;:36::i;:::-;21265:121;21274:6;21282:12;:10;:12::i;:::-;21296:89;21334:6;21296:89;;;;;;;;;;;;;;;;;:11;:19;21308:6;21296:19;;;;;;;;;;;;;;;:33;21316:12;:10;:12::i;:::-;21296:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;21265:8;:121::i;:::-;21404:4;21397:11;;21103:313;;;;;:::o;20208:83::-;20249:5;18986:1;20267:16;;20208:83;:::o;21424:103::-;16438:12;:10;:12::i;:::-;16427:23;;:7;:5;:7::i;:::-;:23;;;16419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21514:5:::1;21496:15;;:23;;;;;;;;;;;;;;;;;;21424:103:::0;:::o;24942:202::-;25008:23;;;;;;;;;;;24992:39;;:12;:10;:12::i;:::-;:39;;;24984:48;;;;;;25043:26;25072:21;25043:50;;25104:32;25117:18;25104:12;:32::i;:::-;24942:202;:::o;20402:198::-;20468:7;20492:11;:20;20504:7;20492:20;;;;;;;;;;;;;;;;;;;;;;;;;20488:49;;;20521:7;:16;20529:7;20521:16;;;;;;;;;;;;;;;;20514:23;;;;20488:49;20555:37;20575:7;:16;20583:7;20575:16;;;;;;;;;;;;;;;;20555:19;:37::i;:::-;20548:44;;20402:198;;;;:::o;16858:148::-;16438:12;:10;:12::i;:::-;16427:23;;:7;:5;:7::i;:::-;:23;;;16419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16965:1:::1;16928:40;;16949:6;::::0;::::1;;;;;;;;16928:40;;;;;;;;;;;;16996:1;16979:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16858:148::o:0;16207:87::-;16253:7;16280:6;;;;;;;;;;;16273:13;;16207:87;:::o;20113:::-;20152:13;20185:7;;;;;;;;;;;;;;;;;20178:14;;20113:87;:::o;20608:167::-;20686:4;20703:42;20713:12;:10;:12::i;:::-;20727:9;20738:6;20703:9;:42::i;:::-;20763:4;20756:11;;20608:167;;;;:::o;24727:203::-;24793:23;;;;;;;;;;;24777:39;;:12;:10;:12::i;:::-;:39;;;24769:48;;;;;;24828:23;24854:24;24872:4;24854:9;:24::i;:::-;24828:50;;24889:33;24906:15;24889:16;:33::i;:::-;24727:203;:::o;25160:807::-;16438:12;:10;:12::i;:::-;16427:23;;:7;:5;:7::i;:::-;:23;;;16419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25224:11:::1;;;;;;;;;;;25223:12;25215:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;25273:35;25330:42;25273:100;;25402:16;25384:15;;:34;;;;;;;;;;;;;;;;;;25429:58;25446:4;25461:15;;;;;;;;;;;18750:10;25429:8;:58::i;:::-;25532:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25514:56;;;25579:4;25586:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25514:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25498:13;;:112;;;;;;;;;;;;;;;;;;25621:15;;;;;;;;;;;:31;;;25660:21;25691:4;25697:24;25715:4;25697:9;:24::i;:::-;25722:1;25724::::0;25726:7:::1;:5;:7::i;:::-;25734:15;25621:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;25775:4;25761:11;;:18;;;;;;;;;;;;;;;;;;25808:4;25790:15;;:22;;;;;;;;;;;;;;;;;;25838:10;25823:12;:25;;;;25873:4;25859:11;;:18;;;;;;;;;;;;;;;;;;25895:13;;;;;;;;;;;25888:29;;;25926:15;;;;;;;;;;;25944:14;25888:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16498:1;25160:807::o:0;31480:255::-;16438:12;:10;:12::i;:::-;16427:23;;:7;:5;:7::i;:::-;:23;;;16419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;31582:1:::1;31567:12;:16;31559:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;31643:36;31673:5;31643:25;31655:12;18750:10;31643:11;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;31628:12;:51;;;;31695:32;31714:12;;31695:32;;;;;;:::i;:::-;;;;;;;;31480:255:::0;:::o;20783:143::-;20864:7;20891:11;:18;20903:5;20891:18;;;;;;;;;;;;;;;:27;20910:7;20891:27;;;;;;;;;;;;;;;;20884:34;;20783:143;;;;:::o;17161:244::-;16438:12;:10;:12::i;:::-;16427:23;;:7;:5;:7::i;:::-;:23;;;16419:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17270:1:::1;17250:22;;:8;:22;;;;17242:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17360:8;17331:38;;17352:6;::::0;::::1;;;;;;;;17331:38;;;;;;;;;;;;17389:8;17380:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;17161:244:::0;:::o;171:98::-;224:7;251:10;244:17;;171:98;:::o;22142:335::-;22252:1;22235:19;;:5;:19;;;;22227:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22333:1;22314:21;;:7;:21;;;;22306:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22415:6;22385:11;:18;22397:5;22385:18;;;;;;;;;;;;;;;:27;22404:7;22385:27;;;;;;;;;;;;;;;:36;;;;22453:7;22437:32;;22446:5;22437:32;;;22462:6;22437:32;;;;;;:::i;:::-;;;;;;;;22142:335;;;:::o;22485:1611::-;22589:1;22573:18;;:4;:18;;;;22565:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22666:1;22652:16;;:2;:16;;;;22644:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22736:1;22727:6;:10;22719:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;22816:7;:5;:7::i;:::-;22808:15;;:4;:15;;;;:32;;;;;22833:7;:5;:7::i;:::-;22827:13;;:2;:13;;;;22808:32;22804:1094;;;22861:15;;;;;;;;;;;22857:320;;;22917:4;22901:21;;:4;:21;;;;:44;;;;;22940:4;22926:19;;:2;:19;;;;22901:44;:80;;;;;22965:15;;;;;;;;;;;22949:32;;:4;:32;;;;22901:80;:114;;;;;22999:15;;;;;;;;;;;22985:30;;:2;:30;;;;22901:114;22897:265;;;23072:15;;;;;;;;;;;23048:40;;:12;:10;:12::i;:::-;:40;;;:73;;;;23108:13;;;;;;;;;;;23092:29;;:12;:10;:12::i;:::-;:29;;;23048:73;23040:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;22897:265;22857:320;23209:12;;23199:6;:22;;23191:31;;;;;;23251:13;;;;;;;;;;;23243:21;;:4;:21;;;:55;;;;;23282:15;;;;;;;;;;;23268:30;;:2;:30;;;;23243:55;:83;;;;;23304:18;:22;23323:2;23304:22;;;;;;;;;;;;;;;;;;;;;;;;;23302:24;23243:83;:102;;;;;23330:15;;;;;;;;;;;23243:102;23239:246;;;23389:15;23374:8;:12;23383:2;23374:12;;;;;;;;;;;;;;;;:30;23366:39;;;;;;23458:10;23439:15;:30;;;;:::i;:::-;23424:8;:12;23433:2;23424:12;;;;;;;;;;;;;;;:45;;;;23239:246;23499:28;23530:24;23548:4;23530:9;:24::i;:::-;23499:55;;23574:6;;;;;;;;;;;23573:7;:32;;;;;23592:13;;;;;;;;;;;23584:21;;:4;:21;;;;23573:32;:47;;;;;23609:11;;;;;;;;;;;23573:47;23569:318;;;23641:38;23658:20;23641:16;:38::i;:::-;23698:26;23727:21;23698:50;;23791:1;23770:18;:22;23767:105;;;23817:35;23830:21;23817:12;:35::i;:::-;23767:105;23569:318;;22804:1094;;23908:12;23923:4;23908:19;;23943:18;:24;23962:4;23943:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;23971:18;:22;23990:2;23971:22;;;;;;;;;;;;;;;;;;;;;;;;;23943:50;23940:96;;;24019:5;24009:15;;23940:96;24050:38;24065:4;24070:2;24073:6;24080:7;24050:14;:38::i;:::-;22485:1611;;;;:::o;5826:206::-;5912:7;5970:1;5965;:6;;5973:12;5957:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6012:1;6008;:5;6001:12;;5826:206;;;;;:::o;24603:112::-;24660:23;;;;;;;;;;;:32;;:47;24693:13;24704:1;24693:6;:10;;:13;;;;:::i;:::-;24660:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24603:112;:::o;21535:254::-;21602:7;21641;;21630;:18;;21622:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;21706:19;21729:10;:8;:10::i;:::-;21706:33;;21757:24;21769:11;21757:7;:11;;:24;;;;:::i;:::-;21750:31;;;21535:254;;;:::o;24104:483::-;19587:4;19578:6;;:13;;;;;;;;;;;;;;;;;;24182:21:::1;24220:1;24206:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24182:40;;24251:4;24233;24238:1;24233:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;24277:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24267:4;24272:1;24267:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;24310:62;24327:4;24342:15;;;;;;;;;;;24360:11;24310:8;:62::i;:::-;24383:15;;;;;;;;;;;:66;;;24464:11;24490:1;24506:4;24533;24553:15;24383:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;19602:1;19623:5:::0;19614:6;;:14;;;;;;;;;;;;;;;;;;24104:483;:::o;4285:98::-;4343:7;4374:1;4370;:5;;;;:::i;:::-;4363:12;;4285:98;;;;:::o;4684:::-;4742:7;4773:1;4769;:5;;;;:::i;:::-;4762:12;;4684:98;;;;:::o;25983:685::-;26095:7;26091:40;;26117:14;:12;:14::i;:::-;26091:40;26146:11;:19;26158:6;26146:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;26170:11;:22;26182:9;26170:22;;;;;;;;;;;;;;;;;;;;;;;;;26169:23;26146:46;26142:467;;;26209:48;26231:6;26239:9;26250:6;26209:21;:48::i;:::-;26142:467;;;26280:11;:19;26292:6;26280:19;;;;;;;;;;;;;;;;;;;;;;;;;26279:20;:46;;;;;26303:11;:22;26315:9;26303:22;;;;;;;;;;;;;;;;;;;;;;;;;26279:46;26275:334;;;26342:46;26362:6;26370:9;26381:6;26342:19;:46::i;:::-;26275:334;;;26410:11;:19;26422:6;26410:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;26433:11;:22;26445:9;26433:22;;;;;;;;;;;;;;;;;;;;;;;;;26410:45;26406:203;;;26472:48;26494:6;26502:9;26513:6;26472:21;:48::i;:::-;26406:203;;;26553:44;26571:6;26579:9;26590:6;26553:17;:44::i;:::-;26406:203;26275:334;26142:467;26623:7;26619:41;;26645:15;:13;:15::i;:::-;26619:41;25983:685;;;;:::o;30732:163::-;30773:7;30794:15;30811;30830:19;:17;:19::i;:::-;30793:56;;;;30867:20;30879:7;30867;:11;;:20;;;;:::i;:::-;30860:27;;;;30732:163;:::o;21797:210::-;21854:1;21843:7;;:12;:29;;;;;21871:1;21859:8;;:13;21843:29;21840:41;;;21874:7;;21840:41;21909:7;;21891:15;:25;;;;21946:8;;21927:16;:27;;;;21975:1;21965:7;:11;;;;21998:1;21987:8;:12;;;;21797:210;:::o;27756:552::-;27859:15;27876:23;27901:12;27915:23;27940:12;27954:13;27971:19;27982:7;27971:10;:19::i;:::-;27858:132;;;;;;;;;;;;28019:28;28039:7;28019;:15;28027:6;28019:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28001:7;:15;28009:6;28001:15;;;;;;;;;;;;;;;:46;;;;28076:28;28096:7;28076;:15;28084:6;28076:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28058:7;:15;28066:6;28058:15;;;;;;;;;;;;;;;:46;;;;28136:39;28159:15;28136:7;:18;28144:9;28136:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28115:7;:18;28123:9;28115:18;;;;;;;;;;;;;;;:60;;;;28187:16;28197:5;28187:9;:16::i;:::-;28217:23;28229:4;28235;28217:11;:23::i;:::-;28273:9;28256:44;;28265:6;28256:44;;;28284:15;28256:44;;;;;;:::i;:::-;;;;;;;;27756:552;;;;;;;;;:::o;27173:575::-;27274:15;27291:23;27316:12;27330:23;27355:12;27369:13;27386:19;27397:7;27386:10;:19::i;:::-;27273:132;;;;;;;;;;;;27434:28;27454:7;27434;:15;27442:6;27434:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;27416:7;:15;27424:6;27416:15;;;;;;;;;;;;;;;:46;;;;27494:39;27517:15;27494:7;:18;27502:9;27494:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27473:7;:18;27481:9;27473:18;;;;;;;;;;;;;;;:60;;;;27565:39;27588:15;27565:7;:18;27573:9;27565:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;27544:7;:18;27552:9;27544:18;;;;;;;;;;;;;;;:60;;;;27619:16;27629:5;27619:9;:16::i;:::-;27657:23;27669:4;27675;27657:11;:23::i;:::-;27713:9;27696:44;;27705:6;27696:44;;;27724:15;27696:44;;;;;;:::i;:::-;;;;;;;;27173:575;;;;;;;;;:::o;28316:631::-;28419:15;28436:23;28461:12;28475:23;28500:12;28514:13;28531:19;28542:7;28531:10;:19::i;:::-;28418:132;;;;;;;;;;;;28579:28;28599:7;28579;:15;28587:6;28579:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28561:7;:15;28569:6;28561:15;;;;;;;;;;;;;;;:46;;;;28636:28;28656:7;28636;:15;28644:6;28636:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;28618:7;:15;28626:6;28618:15;;;;;;;;;;;;;;;:46;;;;28696:39;28719:15;28696:7;:18;28704:9;28696:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28675:7;:18;28683:9;28675:18;;;;;;;;;;;;;;;:60;;;;28767:39;28790:15;28767:7;:18;28775:9;28767:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;28746:7;:18;28754:9;28746:18;;;;;;;;;;;;;;;:60;;;;28820:16;28830:5;28820:9;:16::i;:::-;28856:23;28868:4;28874;28856:11;:23::i;:::-;28912:9;28895:44;;28904:6;28895:44;;;28923:15;28895:44;;;;;;:::i;:::-;;;;;;;;28316:631;;;;;;;;;:::o;26676:489::-;26775:15;26792:23;26817:12;26831:23;26856:12;26870:13;26887:19;26898:7;26887:10;:19::i;:::-;26774:132;;;;;;;;;;;;26935:28;26955:7;26935;:15;26943:6;26935:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;26917:7;:15;26925:6;26917:15;;;;;;;;;;;;;;;:46;;;;26995:39;27018:15;26995:7;:18;27003:9;26995:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;26974:7;:18;26982:9;26974:18;;;;;;;;;;;;;;;:60;;;;27046:16;27056:5;27046:9;:16::i;:::-;27074:23;27086:4;27092;27074:11;:23::i;:::-;27130:9;27113:44;;27122:6;27113:44;;;27141:15;27113:44;;;;;;:::i;:::-;;;;;;;;26676:489;;;;;;;;;:::o;22019:115::-;22073:15;;22063:7;:25;;;;22110:16;;22099:8;:27;;;;22019:115::o;30903:561::-;30953:7;30962;30982:15;31000:7;;30982:25;;31018:15;18750:10;31018:25;;31065:9;31060:289;31084:9;:16;;;;31080:1;:20;31060:289;;;31150:7;31126;:21;31134:9;31144:1;31134:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31126:21;;;;;;;;;;;;;;;;:31;:66;;;;31185:7;31161;:21;31169:9;31179:1;31169:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31161:21;;;;;;;;;;;;;;;;:31;31126:66;31122:97;;;31202:7;;18750:10;31194:25;;;;;;;;;31122:97;31244:34;31256:7;:21;31264:9;31274:1;31264:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31256:21;;;;;;;;;;;;;;;;31244:7;:11;;:34;;;;:::i;:::-;31234:44;;31303:34;31315:7;:21;31323:9;31333:1;31323:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31315:21;;;;;;;;;;;;;;;;31303:7;:11;;:34;;;;:::i;:::-;31293:44;;31102:3;;;;;:::i;:::-;;;;31060:289;;;;31373:20;18750:10;31373:7;;:11;;:20;;;;:::i;:::-;31363:7;:30;31359:61;;;31403:7;;18750:10;31395:25;;;;;;;;31359:61;31439:7;31448;31431:25;;;;;;30903:561;;;:::o;29480:468::-;29539:7;29548;29557;29566;29575;29584;29605:23;29630:12;29644:13;29661:39;29673:7;29682;;29691:8;;29661:11;:39::i;:::-;29604:96;;;;;;29711:19;29734:10;:8;:10::i;:::-;29711:33;;29756:15;29773:23;29798:12;29814:46;29826:7;29835:4;29841:5;29848:11;29814;:46::i;:::-;29755:105;;;;;;29879:7;29888:15;29905:4;29911:15;29928:4;29934:5;29871:69;;;;;;;;;;;;;;;;;;;29480:468;;;;;;;:::o;3928:98::-;3986:7;4017:1;4013;:5;;;;:::i;:::-;4006:12;;3928:98;;;;:::o;3547:::-;3605:7;3636:1;3632;:5;;;;:::i;:::-;3625:12;;3547:98;;;;:::o;28955:325::-;29008:19;29031:10;:8;:10::i;:::-;29008:33;;29052:13;29068:22;29078:11;29068:5;:9;;:22;;;;:::i;:::-;29052:38;;29126:33;29153:5;29126:7;:22;29142:4;29126:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;29101:7;:22;29117:4;29101:22;;;;;;;;;;;;;;;:58;;;;29173:11;:26;29193:4;29173:26;;;;;;;;;;;;;;;;;;;;;;;;;29170:102;;;29239:33;29266:5;29239:7;:22;29255:4;29239:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;29214:7;:22;29230:4;29214:22;;;;;;;;;;;;;;;:58;;;;29170:102;28955:325;;;:::o;29288:147::-;29366:17;29378:4;29366:7;;:11;;:17;;;;:::i;:::-;29356:7;:27;;;;29407:20;29422:4;29407:10;;:14;;:20;;;;:::i;:::-;29394:10;:33;;;;29288:147;;:::o;29956:351::-;30049:7;30058;30067;30087:12;30102:28;30126:3;30102:19;30114:6;30102:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;30087:43;;30141:13;30157:29;30182:3;30157:20;30169:7;30157;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;30141:45;;30197:23;30223:28;30245:5;30223:17;30235:4;30223:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;30197:54;;30270:15;30287:4;30293:5;30262:37;;;;;;;;;29956:351;;;;;;;:::o;30315:409::-;30425:7;30434;30443;30463:15;30481:24;30493:11;30481:7;:11;;:24;;;;:::i;:::-;30463:42;;30516:12;30531:21;30540:11;30531:4;:8;;:21;;;;:::i;:::-;30516:36;;30563:13;30579:22;30589:11;30579:5;:9;;:22;;;;:::i;:::-;30563:38;;30612:23;30638:28;30660:5;30638:17;30650:4;30638:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;30612:54;;30685:7;30694:15;30711:4;30677:39;;;;;;;;;;30315:409;;;;;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:133::-;;382:6;369:20;360:29;;398:30;422:5;398:30;:::i;:::-;350:84;;;;:::o;440:137::-;;525:6;519:13;510:22;;541:30;565:5;541:30;:::i;:::-;500:77;;;;:::o;583:139::-;;667:6;654:20;645:29;;683:33;710:5;683:33;:::i;:::-;635:87;;;;:::o;728:143::-;;816:6;810:13;801:22;;832:33;859:5;832:33;:::i;:::-;791:80;;;;:::o;877:262::-;;985:2;973:9;964:7;960:23;956:32;953:2;;;1001:1;998;991:12;953:2;1044:1;1069:53;1114:7;1105:6;1094:9;1090:22;1069:53;:::i;:::-;1059:63;;1015:117;943:196;;;;:::o;1145:284::-;;1264:2;1252:9;1243:7;1239:23;1235:32;1232:2;;;1280:1;1277;1270:12;1232:2;1323:1;1348:64;1404:7;1395:6;1384:9;1380:22;1348:64;:::i;:::-;1338:74;;1294:128;1222:207;;;;:::o;1435:407::-;;;1560:2;1548:9;1539:7;1535:23;1531:32;1528:2;;;1576:1;1573;1566:12;1528:2;1619:1;1644:53;1689:7;1680:6;1669:9;1665:22;1644:53;:::i;:::-;1634:63;;1590:117;1746:2;1772:53;1817:7;1808:6;1797:9;1793:22;1772:53;:::i;:::-;1762:63;;1717:118;1518:324;;;;;:::o;1848:552::-;;;;1990:2;1978:9;1969:7;1965:23;1961:32;1958:2;;;2006:1;2003;1996:12;1958:2;2049:1;2074:53;2119:7;2110:6;2099:9;2095:22;2074:53;:::i;:::-;2064:63;;2020:117;2176:2;2202:53;2247:7;2238:6;2227:9;2223:22;2202:53;:::i;:::-;2192:63;;2147:118;2304:2;2330:53;2375:7;2366:6;2355:9;2351:22;2330:53;:::i;:::-;2320:63;;2275:118;1948:452;;;;;:::o;2406:407::-;;;2531:2;2519:9;2510:7;2506:23;2502:32;2499:2;;;2547:1;2544;2537:12;2499:2;2590:1;2615:53;2660:7;2651:6;2640:9;2636:22;2615:53;:::i;:::-;2605:63;;2561:117;2717:2;2743:53;2788:7;2779:6;2768:9;2764:22;2743:53;:::i;:::-;2733:63;;2688:118;2489:324;;;;;:::o;2819:256::-;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2983:1;3008:50;3050:7;3041:6;3030:9;3026:22;3008:50;:::i;:::-;2998:60;;2954:114;2882:193;;;;:::o;3081:278::-;;3197:2;3185:9;3176:7;3172:23;3168:32;3165:2;;;3213:1;3210;3203:12;3165:2;3256:1;3281:61;3334:7;3325:6;3314:9;3310:22;3281:61;:::i;:::-;3271:71;;3227:125;3155:204;;;;:::o;3365:262::-;;3473:2;3461:9;3452:7;3448:23;3444:32;3441:2;;;3489:1;3486;3479:12;3441:2;3532:1;3557:53;3602:7;3593:6;3582:9;3578:22;3557:53;:::i;:::-;3547:63;;3503:117;3431:196;;;;:::o;3633:596::-;;;;3786:2;3774:9;3765:7;3761:23;3757:32;3754:2;;;3802:1;3799;3792:12;3754:2;3845:1;3870:64;3926:7;3917:6;3906:9;3902:22;3870:64;:::i;:::-;3860:74;;3816:128;3983:2;4009:64;4065:7;4056:6;4045:9;4041:22;4009:64;:::i;:::-;3999:74;;3954:129;4122:2;4148:64;4204:7;4195:6;4184:9;4180:22;4148:64;:::i;:::-;4138:74;;4093:129;3744:485;;;;;:::o;4235:179::-;;4325:46;4367:3;4359:6;4325:46;:::i;:::-;4403:4;4398:3;4394:14;4380:28;;4315:99;;;;:::o;4420:108::-;4497:24;4515:5;4497:24;:::i;:::-;4492:3;4485:37;4475:53;;:::o;4534:118::-;4621:24;4639:5;4621:24;:::i;:::-;4616:3;4609:37;4599:53;;:::o;4688:732::-;;4836:54;4884:5;4836:54;:::i;:::-;4906:86;4985:6;4980:3;4906:86;:::i;:::-;4899:93;;5016:56;5066:5;5016:56;:::i;:::-;5095:7;5126:1;5111:284;5136:6;5133:1;5130:13;5111:284;;;5212:6;5206:13;5239:63;5298:3;5283:13;5239:63;:::i;:::-;5232:70;;5325:60;5378:6;5325:60;:::i;:::-;5315:70;;5171:224;5158:1;5155;5151:9;5146:14;;5111:284;;;5115:14;5411:3;5404:10;;4812:608;;;;;;;:::o;5426:109::-;5507:21;5522:5;5507:21;:::i;:::-;5502:3;5495:34;5485:50;;:::o;5541:147::-;5636:45;5675:5;5636:45;:::i;:::-;5631:3;5624:58;5614:74;;:::o;5694:364::-;;5810:39;5843:5;5810:39;:::i;:::-;5865:71;5929:6;5924:3;5865:71;:::i;:::-;5858:78;;5945:52;5990:6;5985:3;5978:4;5971:5;5967:16;5945:52;:::i;:::-;6022:29;6044:6;6022:29;:::i;:::-;6017:3;6013:39;6006:46;;5786:272;;;;;:::o;6064:367::-;;6227:67;6291:2;6286:3;6227:67;:::i;:::-;6220:74;;6324:34;6320:1;6315:3;6311:11;6304:55;6390:5;6385:2;6380:3;6376:12;6369:27;6422:2;6417:3;6413:12;6406:19;;6210:221;;;:::o;6437:374::-;;6600:67;6664:2;6659:3;6600:67;:::i;:::-;6593:74;;6697:34;6693:1;6688:3;6684:11;6677:55;6763:12;6758:2;6753:3;6749:12;6742:34;6802:2;6797:3;6793:12;6786:19;;6583:228;;;:::o;6817:370::-;;6980:67;7044:2;7039:3;6980:67;:::i;:::-;6973:74;;7077:34;7073:1;7068:3;7064:11;7057:55;7143:8;7138:2;7133:3;7129:12;7122:30;7178:2;7173:3;7169:12;7162:19;;6963:224;;;:::o;7193:366::-;;7356:67;7420:2;7415:3;7356:67;:::i;:::-;7349:74;;7453:34;7449:1;7444:3;7440:11;7433:55;7519:4;7514:2;7509:3;7505:12;7498:26;7550:2;7545:3;7541:12;7534:19;;7339:220;;;:::o;7565:327::-;;7728:67;7792:2;7787:3;7728:67;:::i;:::-;7721:74;;7825:31;7821:1;7816:3;7812:11;7805:52;7883:2;7878:3;7874:12;7867:19;;7711:181;;;:::o;7898:330::-;;8061:67;8125:2;8120:3;8061:67;:::i;:::-;8054:74;;8158:34;8154:1;8149:3;8145:11;8138:55;8219:2;8214:3;8210:12;8203:19;;8044:184;;;:::o;8234:373::-;;8397:67;8461:2;8456:3;8397:67;:::i;:::-;8390:74;;8494:34;8490:1;8485:3;8481:11;8474:55;8560:11;8555:2;8550:3;8546:12;8539:33;8598:2;8593:3;8589:12;8582:19;;8380:227;;;:::o;8613:369::-;;8776:67;8840:2;8835:3;8776:67;:::i;:::-;8769:74;;8873:34;8869:1;8864:3;8860:11;8853:55;8939:7;8934:2;8929:3;8925:12;8918:29;8973:2;8968:3;8964:12;8957:19;;8759:223;;;:::o;8988:368::-;;9151:67;9215:2;9210:3;9151:67;:::i;:::-;9144:74;;9248:34;9244:1;9239:3;9235:11;9228:55;9314:6;9309:2;9304:3;9300:12;9293:28;9347:2;9342:3;9338:12;9331:19;;9134:222;;;:::o;9362:321::-;;9525:67;9589:2;9584:3;9525:67;:::i;:::-;9518:74;;9622:25;9618:1;9613:3;9609:11;9602:46;9674:2;9669:3;9665:12;9658:19;;9508:175;;;:::o;9689:315::-;;9852:67;9916:2;9911:3;9852:67;:::i;:::-;9845:74;;9949:19;9945:1;9940:3;9936:11;9929:40;9995:2;9990:3;9986:12;9979:19;;9835:169;;;:::o;10010:118::-;10097:24;10115:5;10097:24;:::i;:::-;10092:3;10085:37;10075:53;;:::o;10134:112::-;10217:22;10233:5;10217:22;:::i;:::-;10212:3;10205:35;10195:51;;:::o;10252:222::-;;10383:2;10372:9;10368:18;10360:26;;10396:71;10464:1;10453:9;10449:17;10440:6;10396:71;:::i;:::-;10350:124;;;;:::o;10480:332::-;;10639:2;10628:9;10624:18;10616:26;;10652:71;10720:1;10709:9;10705:17;10696:6;10652:71;:::i;:::-;10733:72;10801:2;10790:9;10786:18;10777:6;10733:72;:::i;:::-;10606:206;;;;;:::o;10818:332::-;;10977:2;10966:9;10962:18;10954:26;;10990:71;11058:1;11047:9;11043:17;11034:6;10990:71;:::i;:::-;11071:72;11139:2;11128:9;11124:18;11115:6;11071:72;:::i;:::-;10944:206;;;;;:::o;11156:807::-;;11443:3;11432:9;11428:19;11420:27;;11457:71;11525:1;11514:9;11510:17;11501:6;11457:71;:::i;:::-;11538:72;11606:2;11595:9;11591:18;11582:6;11538:72;:::i;:::-;11620:80;11696:2;11685:9;11681:18;11672:6;11620:80;:::i;:::-;11710;11786:2;11775:9;11771:18;11762:6;11710:80;:::i;:::-;11800:73;11868:3;11857:9;11853:19;11844:6;11800:73;:::i;:::-;11883;11951:3;11940:9;11936:19;11927:6;11883:73;:::i;:::-;11410:553;;;;;;;;;:::o;11969:210::-;;12094:2;12083:9;12079:18;12071:26;;12107:65;12169:1;12158:9;12154:17;12145:6;12107:65;:::i;:::-;12061:118;;;;:::o;12185:313::-;;12336:2;12325:9;12321:18;12313:26;;12385:9;12379:4;12375:20;12371:1;12360:9;12356:17;12349:47;12413:78;12486:4;12477:6;12413:78;:::i;:::-;12405:86;;12303:195;;;;:::o;12504:419::-;;12708:2;12697:9;12693:18;12685:26;;12757:9;12751:4;12747:20;12743:1;12732:9;12728:17;12721:47;12785:131;12911:4;12785:131;:::i;:::-;12777:139;;12675:248;;;:::o;12929:419::-;;13133:2;13122:9;13118:18;13110:26;;13182:9;13176:4;13172:20;13168:1;13157:9;13153:17;13146:47;13210:131;13336:4;13210:131;:::i;:::-;13202:139;;13100:248;;;:::o;13354:419::-;;13558:2;13547:9;13543:18;13535:26;;13607:9;13601:4;13597:20;13593:1;13582:9;13578:17;13571:47;13635:131;13761:4;13635:131;:::i;:::-;13627:139;;13525:248;;;:::o;13779:419::-;;13983:2;13972:9;13968:18;13960:26;;14032:9;14026:4;14022:20;14018:1;14007:9;14003:17;13996:47;14060:131;14186:4;14060:131;:::i;:::-;14052:139;;13950:248;;;:::o;14204:419::-;;14408:2;14397:9;14393:18;14385:26;;14457:9;14451:4;14447:20;14443:1;14432:9;14428:17;14421:47;14485:131;14611:4;14485:131;:::i;:::-;14477:139;;14375:248;;;:::o;14629:419::-;;14833:2;14822:9;14818:18;14810:26;;14882:9;14876:4;14872:20;14868:1;14857:9;14853:17;14846:47;14910:131;15036:4;14910:131;:::i;:::-;14902:139;;14800:248;;;:::o;15054:419::-;;15258:2;15247:9;15243:18;15235:26;;15307:9;15301:4;15297:20;15293:1;15282:9;15278:17;15271:47;15335:131;15461:4;15335:131;:::i;:::-;15327:139;;15225:248;;;:::o;15479:419::-;;15683:2;15672:9;15668:18;15660:26;;15732:9;15726:4;15722:20;15718:1;15707:9;15703:17;15696:47;15760:131;15886:4;15760:131;:::i;:::-;15752:139;;15650:248;;;:::o;15904:419::-;;16108:2;16097:9;16093:18;16085:26;;16157:9;16151:4;16147:20;16143:1;16132:9;16128:17;16121:47;16185:131;16311:4;16185:131;:::i;:::-;16177:139;;16075:248;;;:::o;16329:419::-;;16533:2;16522:9;16518:18;16510:26;;16582:9;16576:4;16572:20;16568:1;16557:9;16553:17;16546:47;16610:131;16736:4;16610:131;:::i;:::-;16602:139;;16500:248;;;:::o;16754:419::-;;16958:2;16947:9;16943:18;16935:26;;17007:9;17001:4;16997:20;16993:1;16982:9;16978:17;16971:47;17035:131;17161:4;17035:131;:::i;:::-;17027:139;;16925:248;;;:::o;17179:222::-;;17310:2;17299:9;17295:18;17287:26;;17323:71;17391:1;17380:9;17376:17;17367:6;17323:71;:::i;:::-;17277:124;;;;:::o;17407:831::-;;17708:3;17697:9;17693:19;17685:27;;17722:71;17790:1;17779:9;17775:17;17766:6;17722:71;:::i;:::-;17803:80;17879:2;17868:9;17864:18;17855:6;17803:80;:::i;:::-;17930:9;17924:4;17920:20;17915:2;17904:9;17900:18;17893:48;17958:108;18061:4;18052:6;17958:108;:::i;:::-;17950:116;;18076:72;18144:2;18133:9;18129:18;18120:6;18076:72;:::i;:::-;18158:73;18226:3;18215:9;18211:19;18202:6;18158:73;:::i;:::-;17675:563;;;;;;;;:::o;18244:214::-;;18371:2;18360:9;18356:18;18348:26;;18384:67;18448:1;18437:9;18433:17;18424:6;18384:67;:::i;:::-;18338:120;;;;:::o;18464:132::-;;18554:3;18546:11;;18584:4;18579:3;18575:14;18567:22;;18536:60;;;:::o;18602:114::-;;18703:5;18697:12;18687:22;;18676:40;;;:::o;18722:99::-;;18808:5;18802:12;18792:22;;18781:40;;;:::o;18827:113::-;;18929:4;18924:3;18920:14;18912:22;;18902:38;;;:::o;18946:184::-;;19079:6;19074:3;19067:19;19119:4;19114:3;19110:14;19095:29;;19057:73;;;;:::o;19136:169::-;;19254:6;19249:3;19242:19;19294:4;19289:3;19285:14;19270:29;;19232:73;;;;:::o;19311:305::-;;19370:20;19388:1;19370:20;:::i;:::-;19365:25;;19404:20;19422:1;19404:20;:::i;:::-;19399:25;;19558:1;19490:66;19486:74;19483:1;19480:81;19477:2;;;19564:18;;:::i;:::-;19477:2;19608:1;19605;19601:9;19594:16;;19355:261;;;;:::o;19622:185::-;;19679:20;19697:1;19679:20;:::i;:::-;19674:25;;19713:20;19731:1;19713:20;:::i;:::-;19708:25;;19752:1;19742:2;;19757:18;;:::i;:::-;19742:2;19799:1;19796;19792:9;19787:14;;19664:143;;;;:::o;19813:348::-;;19876:20;19894:1;19876:20;:::i;:::-;19871:25;;19910:20;19928:1;19910:20;:::i;:::-;19905:25;;20098:1;20030:66;20026:74;20023:1;20020:81;20015:1;20008:9;20001:17;19997:105;19994:2;;;20105:18;;:::i;:::-;19994:2;20153:1;20150;20146:9;20135:20;;19861:300;;;;:::o;20167:191::-;;20227:20;20245:1;20227:20;:::i;:::-;20222:25;;20261:20;20279:1;20261:20;:::i;:::-;20256:25;;20300:1;20297;20294:8;20291:2;;;20305:18;;:::i;:::-;20291:2;20350:1;20347;20343:9;20335:17;;20212:146;;;;:::o;20364:96::-;;20430:24;20448:5;20430:24;:::i;:::-;20419:35;;20409:51;;;:::o;20466:90::-;;20543:5;20536:13;20529:21;20518:32;;20508:48;;;:::o;20562:126::-;;20639:42;20632:5;20628:54;20617:65;;20607:81;;;:::o;20694:77::-;;20760:5;20749:16;;20739:32;;;:::o;20777:86::-;;20852:4;20845:5;20841:16;20830:27;;20820:43;;;:::o;20869:121::-;;20960:24;20978:5;20960:24;:::i;:::-;20947:37;;20937:53;;;:::o;20996:307::-;21064:1;21074:113;21088:6;21085:1;21082:13;21074:113;;;21173:1;21168:3;21164:11;21158:18;21154:1;21149:3;21145:11;21138:39;21110:2;21107:1;21103:10;21098:15;;21074:113;;;21205:6;21202:1;21199:13;21196:2;;;21285:1;21276:6;21271:3;21267:16;21260:27;21196:2;21045:258;;;;:::o;21309:233::-;;21371:24;21389:5;21371:24;:::i;:::-;21362:33;;21417:66;21410:5;21407:77;21404:2;;;21487:18;;:::i;:::-;21404:2;21534:1;21527:5;21523:13;21516:20;;21352:190;;;:::o;21548:180::-;21596:77;21593:1;21586:88;21693:4;21690:1;21683:15;21717:4;21714:1;21707:15;21734:180;21782:77;21779:1;21772:88;21879:4;21876:1;21869:15;21903:4;21900:1;21893:15;21920:102;;22012:2;22008:7;22003:2;21996:5;21992:14;21988:28;21978:38;;21968:54;;;:::o;22028:122::-;22101:24;22119:5;22101:24;:::i;:::-;22094:5;22091:35;22081:2;;22140:1;22137;22130:12;22081:2;22071:79;:::o;22156:116::-;22226:21;22241:5;22226:21;:::i;:::-;22219:5;22216:32;22206:2;;22262:1;22259;22252:12;22206:2;22196:76;:::o;22278:122::-;22351:24;22369:5;22351:24;:::i;:::-;22344:5;22341:35;22331:2;;22390:1;22387;22380:12;22331:2;22321:79;:::o

Swarm Source

ipfs://b86d21cc17abe6d8bee61d87380e6d9f691ae88dc629258eeee1ff84da610e34
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.