ETH Price: $3,130.03 (+1.04%)

Token

MAKO (MAKO)
 

Overview

Max Total Supply

1,000,000,000 MAKO

Holders

169

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,215,132.323415514 MAKO

Value
$0.00
0x40d8633ab6fc04bff101e1ea3cd2edff405c8b73
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:
Mako

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-05
*/

pragma solidity ^0.8.16;
// SPDX-License-Identifier: Unlicensed
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 SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != - 1 || a != MIN_INT256);
        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? - a : a;
    }

    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}

library SafeMathUint {
    function toInt256Safe(uint256 a) internal pure returns (int256) {
        int256 b = int256(a);
        require(b >= 0);
        return b;
    }
}

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

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

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

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

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

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

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

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

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    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 factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function WETH() external pure returns (address);
}

contract Mako is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public uniswapV2PairUSDC = address(0);
    address private _developmentOne = 0xA983F57A4F15DEf00F10eDe1fBbCaAA52800999c;
    address private _developmentTwo = 0x69cec0Db2830a78218B77D76302755Bd9A9F211e;    
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "MAKO";
    string private _symbol = "MAKO";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 1000000000 * 10 ** _decimals;
    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    uint256 public usdcPriceToSwap = 500000000; //500 USDC
    uint256 public _maxWalletAmount = 20000001 * 10 ** _decimals;
    address public usdcAddress = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48; //Mainnet
    
    IERC20 usdcToken = IERC20(usdcAddress);
   
    struct TaxFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    bool private doTakeFees;
    bool private isSellTxn;
    TaxFees public taxFees;
     
    constructor () {
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        taxFees = TaxFees(98, 98); //just at launch to catch any bots
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

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

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

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

    function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner {
        _maxWalletAmount = maxWalletAmount * 10 ** 9;
    }

    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function setWalletAddresses(address developmentOne, address developmentTwo) external onlyOwner {
        _developmentOne = developmentOne;
        _developmentTwo = developmentTwo;
    }

    function setTaxFees(uint256 buyFee, uint256 sellFee) external onlyOwner {
        taxFees.buyFee = buyFee;
        taxFees.sellFee = sellFee;
    }

    function openTrading() external onlyOwner {
        require(uniswapV2PairUSDC == address(0),"UniswapV2Pair has already been set");
        uniswapV2PairUSDC = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), usdcAddress);
    }
    
    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

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

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

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

    function _transfer(address 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");
        require(uniswapV2PairUSDC != address(0),"UniswapV2Pair has not been set");
        bool isSell = false;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        uint256 holderBalance = balanceOf(to).add(amount);
        
        if (from == uniswapV2PairUSDC) {
            require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
        }
        if (from != uniswapV2PairUSDC && to == uniswapV2PairUSDC) {//if sell
            //only tax if tokens are going back to Uniswap
            isSell = true;
            sellTokens();
        }
        if (from != uniswapV2PairUSDC && to != uniswapV2PairUSDC) {
            require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
        }
        _tokenTransfer(from, to, amount, takeFees, isSell);
    }

    function claimTokens() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify && swapAndLiquifyEnabled) {
                swapTokens(contractTokenBalance);
            }
        }
    }

    function sellTokens() private {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            uint256 tokenAmount = getTokenAmountByUSDCPrice();
            if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify && swapAndLiquifyEnabled) {
                swapTokens(tokenAmount);
            }
        }
    }
    function swapTokens(uint256 tokenAmount) private lockTheSwap {
        address[] memory path;
        path = new address[](3);
        path[0] = address(this);
        path[1] = usdcAddress;
        path[2] = uniswapV2Router.WETH();
        // Approve the swap first
        _approve(address(this), address(uniswapV2Router), tokenAmount);
         uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
        
        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(_developmentOne).transfer(halfShare);
        payable(_developmentTwo).transfer(halfShare);  

    }

    function getTokenAmountByUSDCPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = usdcAddress;
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(usdcPriceToSwap, path)[1];
    }

    function setUSDCPriceToSwap(uint256 usdcPriceToSwap_) external onlyOwner {
        usdcPriceToSwap = usdcPriceToSwap_;
    }

    receive() external payable {}

    function sendEthBack() external {
        uint256 ethBalance = address(this).balance;
        payable(_developmentOne).transfer(ethBalance);
    }

    function extractERC20Tokens(address contractAddress) external {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(_developmentOne, balance);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount,
        bool takeFees, bool isSell) private {
        uint256 taxAmount = takeFees ? amount.mul(taxFees.buyFee).div(100) : 0;
        if (takeFees && isSell) {
            taxAmount = amount.mul(taxFees.sellFee).div(100);
        }
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(sender, recipient, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"extractERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenAmountByUSDCPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":[],"name":"sendEthBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"usdcPriceToSwap_","type":"uint256"}],"name":"setUSDCPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"developmentOne","type":"address"},{"internalType":"address","name":"developmentTwo","type":"address"}],"name":"setWalletAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2PairUSDC","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdcAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdcPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a983f57a4f15def00f10ede1fbbcaaa52800999c600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507369cec0db2830a78218b77d76302755bd9a9f211e600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600481526020017f4d414b4f00000000000000000000000000000000000000000000000000000000815250600890816200018b91906200085a565b506040518060400160405280600481526020017f4d414b4f0000000000000000000000000000000000000000000000000000000081525060099081620001d291906200085a565b506009600a60006101000a81548160ff021916908360ff160217905550600a60009054906101000a900460ff16600a6200020d919062000ad1565b633b9aca006200021e919062000b22565b600b556001600c60016101000a81548160ff021916908315150217905550631dcd6500600d55600a60009054906101000a900460ff16600a62000262919062000ad1565b6301312d0162000273919062000b22565b600e5573a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200033b57600080fd5b5060006200034e620005af60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600b546005600062000403620005af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016007600062000457620005b760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060405180604001604052806062815260200160628152506011600082015181600001556020820151816001015590505062000540620005af60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600b54604051620005a1919062000b94565b60405180910390a362000bb1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200066257607f821691505b6020821081036200067857620006776200061a565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006a3565b620006ee8683620006a3565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200073b620007356200072f8462000706565b62000710565b62000706565b9050919050565b6000819050919050565b62000757836200071a565b6200076f620007668262000742565b848454620006b0565b825550505050565b600090565b6200078662000777565b620007938184846200074c565b505050565b5b81811015620007bb57620007af6000826200077c565b60018101905062000799565b5050565b601f8211156200080a57620007d4816200067e565b620007df8462000693565b81016020851015620007ef578190505b62000807620007fe8562000693565b83018262000798565b50505b505050565b600082821c905092915050565b60006200082f600019846008026200080f565b1980831691505092915050565b60006200084a83836200081c565b9150826002028217905092915050565b6200086582620005e0565b67ffffffffffffffff811115620008815762000880620005eb565b5b6200088d825462000649565b6200089a828285620007bf565b600060209050601f831160018114620008d25760008415620008bd578287015190505b620008c985826200083c565b86555062000939565b601f198416620008e2866200067e565b60005b828110156200090c57848901518255600182019150602085019450602081019050620008e5565b868310156200092c578489015162000928601f8916826200081c565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009cf57808604811115620009a757620009a662000941565b5b6001851615620009b75780820291505b8081029050620009c78562000970565b945062000987565b94509492505050565b600082620009ea576001905062000abd565b81620009fa576000905062000abd565b816001811462000a13576002811462000a1e5762000a54565b600191505062000abd565b60ff84111562000a335762000a3262000941565b5b8360020a91508482111562000a4d5762000a4c62000941565b5b5062000abd565b5060208310610133831016604e8410600b841016171562000a8e5782820a90508381111562000a885762000a8762000941565b5b62000abd565b62000a9d84848460016200097d565b9250905081840481111562000ab75762000ab662000941565b5b81810290505b9392505050565b600060ff82169050919050565b600062000ade8262000706565b915062000aeb8362000ac4565b925062000b1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009d8565b905092915050565b600062000b2f8262000706565b915062000b3c8362000706565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000b785762000b7762000941565b5b828202905092915050565b62000b8e8162000706565b82525050565b600060208201905062000bab600083018462000b83565b92915050565b613f208062000bc16000396000f3fe6080604052600436106101f25760003560e01c806363373b871161010d57806395d89b41116100a0578063c9567bf91161006f578063c9567bf9146106fb578063dd62ed3e14610712578063e0fb0f351461074f578063f2fde38b14610766578063fd828d7e1461078f576101f9565b806395d89b411461062d578063a457c2d714610658578063a9059cbb14610695578063c49b9a80146106d2576101f9565b806381230a83116100dc57806381230a831461058557806388847825146105ae5780638da5cb5b146105d757806394dbaaba14610602576101f9565b806363373b87146104dd5780636c0a24eb1461050657806370a0823114610531578063715018a61461056e576101f9565b80632fbabc7511610185578063441d801f11610154578063441d801f1461043557806348c54b9d1461045e5780634a74bb02146104755780635342acb4146104a0576101f9565b80632fbabc7514610379578063313ce567146103a257806339509351146103cd578063433a40491461040a576101f9565b80631694505e116101c15780631694505e146102bd57806318160ddd146102e857806323b872dd1461031357806327a14fc214610350576101f9565b806302d45457146101fe57806306fdde0314610229578063095ea7b3146102545780630ddc097614610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107ba565b6040516102209190612ce5565b60405180910390f35b34801561023557600080fd5b5061023e6107e0565b60405161024b9190612d90565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190612e28565b610872565b6040516102889190612e83565b60405180910390f35b34801561029d57600080fd5b506102a6610890565b6040516102b4929190612ead565b60405180910390f35b3480156102c957600080fd5b506102d26108a2565b6040516102df9190612f35565b60405180910390f35b3480156102f457600080fd5b506102fd6108c8565b60405161030a9190612f50565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190612f6b565b6108d2565b6040516103479190612e83565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612fbe565b6109ab565b005b34801561038557600080fd5b506103a0600480360381019061039b9190612fbe565b610a59565b005b3480156103ae57600080fd5b506103b7610af8565b6040516103c49190613007565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190612e28565b610b0f565b6040516104019190612e83565b60405180910390f35b34801561041657600080fd5b5061041f610bc2565b60405161042c9190612ce5565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906130b3565b610be8565b005b34801561046a57600080fd5b50610473610c8d565b005b34801561048157600080fd5b5061048a610cdf565b6040516104979190612e83565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190613113565b610cf2565b6040516104d49190612e83565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190613113565b610d48565b005b34801561051257600080fd5b5061051b610e71565b6040516105289190612f50565b60405180910390f35b34801561053d57600080fd5b5061055860048036038101906105539190613113565b610e77565b6040516105659190612f50565b60405180910390f35b34801561057a57600080fd5b50610583610ec0565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613140565b611013565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190613180565b6110c0565b005b3480156105e357600080fd5b506105ec6111db565b6040516105f99190612ce5565b60405180910390f35b34801561060e57600080fd5b50610617611204565b6040516106249190612f50565b60405180910390f35b34801561063957600080fd5b5061064261120a565b60405161064f9190612d90565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190612e28565b61129c565b60405161068c9190612e83565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612e28565b611369565b6040516106c99190612e83565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906131c0565b611387565b005b34801561070757600080fd5b50610710611470565b005b34801561071e57600080fd5b5061073960048036038101906107349190613180565b611708565b6040516107469190612f50565b60405180910390f35b34801561075b57600080fd5b5061076461178f565b005b34801561077257600080fd5b5061078d60048036038101906107889190613113565b611800565b005b34801561079b57600080fd5b506107a46119c1565b6040516107b19190612f50565b60405180910390f35b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600880546107ef9061321c565b80601f016020809104026020016040519081016040528092919081815260200182805461081b9061321c565b80156108685780601f1061083d57610100808354040283529160200191610868565b820191906000526020600020905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b600061088661087f611b96565b8484611b9e565b6001905092915050565b60118060000154908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60006108df848484611d67565b6109a0846108eb611b96565b61099b85604051806060016040528060288152602001613e9e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610951611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122c39092919063ffffffff16565b611b9e565b600190509392505050565b6109b3611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3790613299565b60405180910390fd5b633b9aca0081610a5091906132e8565b600e8190555050565b610a61611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae590613299565b60405180910390fd5b80600d8190555050565b6000600a60009054906101000a900460ff16905090565b6000610bb8610b1c611b96565b84610bb38560066000610b2d611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b611b9e565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bf0611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613299565b60405180910390fd5b610c88838383612385565b505050565b6000610c9830610e77565b90506000811115610cdc57600c60009054906101000a900460ff16158015610ccc5750600c60019054906101000a900460ff165b15610cdb57610cda81612430565b5b5b50565b600c60019054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d889190612ce5565b602060405180830381865afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190613357565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e28929190613384565b6020604051808303816000875af1158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b91906133c2565b50505050565b600e5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec8611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61101b611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90613299565b60405180910390fd5b81601160000181905550806011600101819055505050565b6110c8611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c90613299565b60405180910390fd5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b6060600980546112199061321c565b80601f01602080910402602001604051908101604052809291908181526020018280546112459061321c565b80156112925780601f1061126757610100808354040283529160200191611292565b820191906000526020600020905b81548152906001019060200180831161127557829003601f168201915b5050505050905090565b600061135f6112a9611b96565b8461135a85604051806060016040528060258152602001613ec660259139600660006112d3611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122c39092919063ffffffff16565b611b9e565b6001905092915050565b600061137d611376611b96565b8484611d67565b6001905092915050565b61138f611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613299565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516114659190612e83565b60405180910390a150565b611478611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d90613461565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116279190613496565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016116839291906134c3565b6020604051808303816000875af11580156116a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c69190613496565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117fc573d6000803e3d6000fd5b5050565b611808611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb9061355e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600267ffffffffffffffff8111156119df576119de61357e565b5b604051908082528060200260200182016040528015611a0d5781602001602082028036833780820191505090505b509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110611a4757611a466135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611a9657611a956135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401611b2f92919061369a565b600060405180830381865afa158015611b4c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b7591906137d9565b600181518110611b8857611b876135ad565b5b602002602001015191505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490613894565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613926565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d5a9190612f50565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd906139b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3c90613a4a565b60405180910390fd5b60008111611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90613adc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1090613b48565b60405180910390fd5b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fc05750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fff5750611fcf6111db565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561203e575061200e6111db565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050600061205d8461204f87610e77565b61232790919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036120fa57600e548111156120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090613bda565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156121a55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156121b757600192506121b661280b565b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122635750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156122ae57600e548111156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a490613bda565b60405180910390fd5b5b6122bb8686868587612876565b505050505050565b600083831115829061230b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123029190612d90565b60405180910390fd5b506000838561231a9190613bfa565b9050809150509392505050565b60008082846123369190613c2e565b90508381101561237b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237290613cae565b60405180910390fd5b8091505092915050565b60005b8383905081101561242a5760008484838181106123a8576123a76135ad565b5b90506020020160208101906123bd9190613113565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061242290613cce565b915050612388565b50505050565b6001600c60006101000a81548160ff0219169083151502179055506060600367ffffffffffffffff8111156124685761246761357e565b5b6040519080825280602002602001820160405280156124965781602001602082028036833780820191505090505b50905030816000815181106124ae576124ad6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061251f5761251e6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ea9190613496565b816002815181106125fe576125fd6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b9e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126c9959493929190613d51565b600060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b5050505060004790506000612716600283612b3390919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612780573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156127e9573d6000803e3d6000fd5b505050506000600c60006101000a81548160ff02191690831515021790555050565b600061281630610e77565b9050600081111561287357600061282b6119c1565b905080821015801561284a5750600c60009054906101000a900460ff16155b80156128625750600c60019054906101000a900460ff165b156128715761287081612430565b5b505b50565b6000826128845760006128b0565b6128af60646128a160116000015487612b7d90919063ffffffff16565b612b3390919063ffffffff16565b5b90508280156128bc5750815b156128ef576128ec60646128de60116001015487612b7d90919063ffffffff16565b612b3390919063ffffffff16565b90505b60006129048286612bf790919063ffffffff16565b905061295885600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bf790919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ed81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8282600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612b229190612f50565b60405180910390a350505050505050565b6000612b7583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c41565b905092915050565b6000808303612b8f5760009050612bf1565b60008284612b9d91906132e8565b9050828482612bac9190613dda565b14612bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be390613e7d565b60405180910390fd5b809150505b92915050565b6000612c3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122c3565b905092915050565b60008083118290612c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7f9190612d90565b60405180910390fd5b5060008385612c979190613dda565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ccf82612ca4565b9050919050565b612cdf81612cc4565b82525050565b6000602082019050612cfa6000830184612cd6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3a578082015181840152602081019050612d1f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6282612d00565b612d6c8185612d0b565b9350612d7c818560208601612d1c565b612d8581612d46565b840191505092915050565b60006020820190508181036000830152612daa8184612d57565b905092915050565b6000604051905090565b600080fd5b600080fd5b612dcf81612cc4565b8114612dda57600080fd5b50565b600081359050612dec81612dc6565b92915050565b6000819050919050565b612e0581612df2565b8114612e1057600080fd5b50565b600081359050612e2281612dfc565b92915050565b60008060408385031215612e3f57612e3e612dbc565b5b6000612e4d85828601612ddd565b9250506020612e5e85828601612e13565b9150509250929050565b60008115159050919050565b612e7d81612e68565b82525050565b6000602082019050612e986000830184612e74565b92915050565b612ea781612df2565b82525050565b6000604082019050612ec26000830185612e9e565b612ecf6020830184612e9e565b9392505050565b6000819050919050565b6000612efb612ef6612ef184612ca4565b612ed6565b612ca4565b9050919050565b6000612f0d82612ee0565b9050919050565b6000612f1f82612f02565b9050919050565b612f2f81612f14565b82525050565b6000602082019050612f4a6000830184612f26565b92915050565b6000602082019050612f656000830184612e9e565b92915050565b600080600060608486031215612f8457612f83612dbc565b5b6000612f9286828701612ddd565b9350506020612fa386828701612ddd565b9250506040612fb486828701612e13565b9150509250925092565b600060208284031215612fd457612fd3612dbc565b5b6000612fe284828501612e13565b91505092915050565b600060ff82169050919050565b61300181612feb565b82525050565b600060208201905061301c6000830184612ff8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261304757613046613022565b5b8235905067ffffffffffffffff81111561306457613063613027565b5b6020830191508360208202830111156130805761307f61302c565b5b9250929050565b61309081612e68565b811461309b57600080fd5b50565b6000813590506130ad81613087565b92915050565b6000806000604084860312156130cc576130cb612dbc565b5b600084013567ffffffffffffffff8111156130ea576130e9612dc1565b5b6130f686828701613031565b935093505060206131098682870161309e565b9150509250925092565b60006020828403121561312957613128612dbc565b5b600061313784828501612ddd565b91505092915050565b6000806040838503121561315757613156612dbc565b5b600061316585828601612e13565b925050602061317685828601612e13565b9150509250929050565b6000806040838503121561319757613196612dbc565b5b60006131a585828601612ddd565b92505060206131b685828601612ddd565b9150509250929050565b6000602082840312156131d6576131d5612dbc565b5b60006131e48482850161309e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323457607f821691505b602082108103613247576132466131ed565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613283602083612d0b565b915061328e8261324d565b602082019050919050565b600060208201905081810360008301526132b281613276565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f382612df2565b91506132fe83612df2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613337576133366132b9565b5b828202905092915050565b60008151905061335181612dfc565b92915050565b60006020828403121561336d5761336c612dbc565b5b600061337b84828501613342565b91505092915050565b60006040820190506133996000830185612cd6565b6133a66020830184612e9e565b9392505050565b6000815190506133bc81613087565b92915050565b6000602082840312156133d8576133d7612dbc565b5b60006133e6848285016133ad565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b600061344b602283612d0b565b9150613456826133ef565b604082019050919050565b6000602082019050818103600083015261347a8161343e565b9050919050565b60008151905061349081612dc6565b92915050565b6000602082840312156134ac576134ab612dbc565b5b60006134ba84828501613481565b91505092915050565b60006040820190506134d86000830185612cd6565b6134e56020830184612cd6565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613548602683612d0b565b9150613553826134ec565b604082019050919050565b600060208201905081810360008301526135778161353b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61361181612cc4565b82525050565b60006136238383613608565b60208301905092915050565b6000602082019050919050565b6000613647826135dc565b61365181856135e7565b935061365c836135f8565b8060005b8381101561368d5781516136748882613617565b975061367f8361362f565b925050600181019050613660565b5085935050505092915050565b60006040820190506136af6000830185612e9e565b81810360208301526136c1818461363c565b90509392505050565b6136d382612d46565b810181811067ffffffffffffffff821117156136f2576136f161357e565b5b80604052505050565b6000613705612db2565b905061371182826136ca565b919050565b600067ffffffffffffffff8211156137315761373061357e565b5b602082029050602081019050919050565b600061375561375084613716565b6136fb565b905080838252602082019050602084028301858111156137785761377761302c565b5b835b818110156137a1578061378d8882613342565b84526020840193505060208101905061377a565b5050509392505050565b600082601f8301126137c0576137bf613022565b5b81516137d0848260208601613742565b91505092915050565b6000602082840312156137ef576137ee612dbc565b5b600082015167ffffffffffffffff81111561380d5761380c612dc1565b5b613819848285016137ab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061387e602483612d0b565b915061388982613822565b604082019050919050565b600060208201905081810360008301526138ad81613871565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613910602283612d0b565b915061391b826138b4565b604082019050919050565b6000602082019050818103600083015261393f81613903565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139a2602583612d0b565b91506139ad82613946565b604082019050919050565b600060208201905081810360008301526139d181613995565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a34602383612d0b565b9150613a3f826139d8565b604082019050919050565b60006020820190508181036000830152613a6381613a27565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613ac6602983612d0b565b9150613ad182613a6a565b604082019050919050565b60006020820190508181036000830152613af581613ab9565b9050919050565b7f556e697377617056325061697220686173206e6f74206265656e207365740000600082015250565b6000613b32601e83612d0b565b9150613b3d82613afc565b602082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000613bc4602583612d0b565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b6000613c0582612df2565b9150613c1083612df2565b9250828203905081811115613c2857613c276132b9565b5b92915050565b6000613c3982612df2565b9150613c4483612df2565b9250828201905080821115613c5c57613c5b6132b9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c98601b83612d0b565b9150613ca382613c62565b602082019050919050565b60006020820190508181036000830152613cc781613c8b565b9050919050565b6000613cd982612df2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0b57613d0a6132b9565b5b600182019050919050565b6000819050919050565b6000613d3b613d36613d3184613d16565b612ed6565b612df2565b9050919050565b613d4b81613d20565b82525050565b600060a082019050613d666000830188612e9e565b613d736020830187613d42565b8181036040830152613d85818661363c565b9050613d946060830185612cd6565b613da16080830184612e9e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613de582612df2565b9150613df083612df2565b925082613e0057613dff613dab565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e67602183612d0b565b9150613e7282613e0b565b604082019050919050565b60006020820190508181036000830152613e9681613e5a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202a698e63adec504b381a27d97d57d36a22230d248143a21b81b6f8e54e3cbb6864736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c806363373b871161010d57806395d89b41116100a0578063c9567bf91161006f578063c9567bf9146106fb578063dd62ed3e14610712578063e0fb0f351461074f578063f2fde38b14610766578063fd828d7e1461078f576101f9565b806395d89b411461062d578063a457c2d714610658578063a9059cbb14610695578063c49b9a80146106d2576101f9565b806381230a83116100dc57806381230a831461058557806388847825146105ae5780638da5cb5b146105d757806394dbaaba14610602576101f9565b806363373b87146104dd5780636c0a24eb1461050657806370a0823114610531578063715018a61461056e576101f9565b80632fbabc7511610185578063441d801f11610154578063441d801f1461043557806348c54b9d1461045e5780634a74bb02146104755780635342acb4146104a0576101f9565b80632fbabc7514610379578063313ce567146103a257806339509351146103cd578063433a40491461040a576101f9565b80631694505e116101c15780631694505e146102bd57806318160ddd146102e857806323b872dd1461031357806327a14fc214610350576101f9565b806302d45457146101fe57806306fdde0314610229578063095ea7b3146102545780630ddc097614610291576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b506102136107ba565b6040516102209190612ce5565b60405180910390f35b34801561023557600080fd5b5061023e6107e0565b60405161024b9190612d90565b60405180910390f35b34801561026057600080fd5b5061027b60048036038101906102769190612e28565b610872565b6040516102889190612e83565b60405180910390f35b34801561029d57600080fd5b506102a6610890565b6040516102b4929190612ead565b60405180910390f35b3480156102c957600080fd5b506102d26108a2565b6040516102df9190612f35565b60405180910390f35b3480156102f457600080fd5b506102fd6108c8565b60405161030a9190612f50565b60405180910390f35b34801561031f57600080fd5b5061033a60048036038101906103359190612f6b565b6108d2565b6040516103479190612e83565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612fbe565b6109ab565b005b34801561038557600080fd5b506103a0600480360381019061039b9190612fbe565b610a59565b005b3480156103ae57600080fd5b506103b7610af8565b6040516103c49190613007565b60405180910390f35b3480156103d957600080fd5b506103f460048036038101906103ef9190612e28565b610b0f565b6040516104019190612e83565b60405180910390f35b34801561041657600080fd5b5061041f610bc2565b60405161042c9190612ce5565b60405180910390f35b34801561044157600080fd5b5061045c600480360381019061045791906130b3565b610be8565b005b34801561046a57600080fd5b50610473610c8d565b005b34801561048157600080fd5b5061048a610cdf565b6040516104979190612e83565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c29190613113565b610cf2565b6040516104d49190612e83565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190613113565b610d48565b005b34801561051257600080fd5b5061051b610e71565b6040516105289190612f50565b60405180910390f35b34801561053d57600080fd5b5061055860048036038101906105539190613113565b610e77565b6040516105659190612f50565b60405180910390f35b34801561057a57600080fd5b50610583610ec0565b005b34801561059157600080fd5b506105ac60048036038101906105a79190613140565b611013565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190613180565b6110c0565b005b3480156105e357600080fd5b506105ec6111db565b6040516105f99190612ce5565b60405180910390f35b34801561060e57600080fd5b50610617611204565b6040516106249190612f50565b60405180910390f35b34801561063957600080fd5b5061064261120a565b60405161064f9190612d90565b60405180910390f35b34801561066457600080fd5b5061067f600480360381019061067a9190612e28565b61129c565b60405161068c9190612e83565b60405180910390f35b3480156106a157600080fd5b506106bc60048036038101906106b79190612e28565b611369565b6040516106c99190612e83565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906131c0565b611387565b005b34801561070757600080fd5b50610710611470565b005b34801561071e57600080fd5b5061073960048036038101906107349190613180565b611708565b6040516107469190612f50565b60405180910390f35b34801561075b57600080fd5b5061076461178f565b005b34801561077257600080fd5b5061078d60048036038101906107889190613113565b611800565b005b34801561079b57600080fd5b506107a46119c1565b6040516107b19190612f50565b60405180910390f35b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600880546107ef9061321c565b80601f016020809104026020016040519081016040528092919081815260200182805461081b9061321c565b80156108685780601f1061083d57610100808354040283529160200191610868565b820191906000526020600020905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b600061088661087f611b96565b8484611b9e565b6001905092915050565b60118060000154908060010154905082565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600b54905090565b60006108df848484611d67565b6109a0846108eb611b96565b61099b85604051806060016040528060288152602001613e9e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610951611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122c39092919063ffffffff16565b611b9e565b600190509392505050565b6109b3611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3790613299565b60405180910390fd5b633b9aca0081610a5091906132e8565b600e8190555050565b610a61611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae590613299565b60405180910390fd5b80600d8190555050565b6000600a60009054906101000a900460ff16905090565b6000610bb8610b1c611b96565b84610bb38560066000610b2d611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b611b9e565b6001905092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bf0611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613299565b60405180910390fd5b610c88838383612385565b505050565b6000610c9830610e77565b90506000811115610cdc57600c60009054906101000a900460ff16158015610ccc5750600c60019054906101000a900460ff165b15610cdb57610cda81612430565b5b5b50565b600c60019054906101000a900460ff1681565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d889190612ce5565b602060405180830381865afa158015610da5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc99190613357565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e28929190613384565b6020604051808303816000875af1158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b91906133c2565b50505050565b600e5481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ec8611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4c90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61101b611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90613299565b60405180910390fd5b81601160000181905550806011600101819055505050565b6110c8611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114c90613299565b60405180910390fd5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600d5481565b6060600980546112199061321c565b80601f01602080910402602001604051908101604052809291908181526020018280546112459061321c565b80156112925780601f1061126757610100808354040283529160200191611292565b820191906000526020600020905b81548152906001019060200180831161127557829003601f168201915b5050505050905090565b600061135f6112a9611b96565b8461135a85604051806060016040528060258152602001613ec660259139600660006112d3611b96565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122c39092919063ffffffff16565b611b9e565b6001905092915050565b600061137d611376611b96565b8484611d67565b6001905092915050565b61138f611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141390613299565b60405180910390fd5b80600c60016101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159816040516114659190612e83565b60405180910390a150565b611478611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611505576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fc90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611596576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158d90613461565b60405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611603573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116279190613496565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b81526004016116839291906134c3565b6020604051808303816000875af11580156116a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116c69190613496565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000479050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156117fc573d6000803e3d6000fd5b5050565b611808611b96565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c90613299565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611904576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fb9061355e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600267ffffffffffffffff8111156119df576119de61357e565b5b604051908082528060200260200182016040528015611a0d5781602001602082028036833780820191505090505b509050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600081518110611a4757611a466135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250503081600181518110611a9657611a956135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f600d54836040518363ffffffff1660e01b8152600401611b2f92919061369a565b600060405180830381865afa158015611b4c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611b7591906137d9565b600181518110611b8857611b876135ad565b5b602002602001015191505090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0490613894565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7390613926565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d5a9190612f50565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd906139b8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3c90613a4a565b60405180910390fd5b60008111611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90613adc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611f19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1090613b48565b60405180910390fd5b600080600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fc05750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fff5750611fcf6111db565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561203e575061200e6111db565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050600061205d8461204f87610e77565b61232790919063ffffffff16565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16036120fa57600e548111156120f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f090613bda565b60405180910390fd5b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156121a55750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b156121b757600192506121b661280b565b5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156122635750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156122ae57600e548111156122ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a490613bda565b60405180910390fd5b5b6122bb8686868587612876565b505050505050565b600083831115829061230b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123029190612d90565b60405180910390fd5b506000838561231a9190613bfa565b9050809150509392505050565b60008082846123369190613c2e565b90508381101561237b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237290613cae565b60405180910390fd5b8091505092915050565b60005b8383905081101561242a5760008484838181106123a8576123a76135ad565b5b90506020020160208101906123bd9190613113565b905082600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061242290613cce565b915050612388565b50505050565b6001600c60006101000a81548160ff0219169083151502179055506060600367ffffffffffffffff8111156124685761246761357e565b5b6040519080825280602002602001820160405280156124965781602001602082028036833780820191505090505b50905030816000815181106124ae576124ad6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061251f5761251e6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ea9190613496565b816002815181106125fe576125fd6135ad565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266530600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611b9e565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126c9959493929190613d51565b600060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b5050505060004790506000612716600283612b3390919063ffffffff16565b9050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612780573d6000803e3d6000fd5b50600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156127e9573d6000803e3d6000fd5b505050506000600c60006101000a81548160ff02191690831515021790555050565b600061281630610e77565b9050600081111561287357600061282b6119c1565b905080821015801561284a5750600c60009054906101000a900460ff16155b80156128625750600c60019054906101000a900460ff165b156128715761287081612430565b5b505b50565b6000826128845760006128b0565b6128af60646128a160116000015487612b7d90919063ffffffff16565b612b3390919063ffffffff16565b5b90508280156128bc5750815b156128ef576128ec60646128de60116001015487612b7d90919063ffffffff16565b612b3390919063ffffffff16565b90505b60006129048286612bf790919063ffffffff16565b905061295885600560008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612bf790919063ffffffff16565b600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506129ed81600560008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612a8282600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461232790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87604051612b229190612f50565b60405180910390a350505050505050565b6000612b7583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c41565b905092915050565b6000808303612b8f5760009050612bf1565b60008284612b9d91906132e8565b9050828482612bac9190613dda565b14612bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612be390613e7d565b60405180910390fd5b809150505b92915050565b6000612c3983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122c3565b905092915050565b60008083118290612c88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c7f9190612d90565b60405180910390fd5b5060008385612c979190613dda565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ccf82612ca4565b9050919050565b612cdf81612cc4565b82525050565b6000602082019050612cfa6000830184612cd6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612d3a578082015181840152602081019050612d1f565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d6282612d00565b612d6c8185612d0b565b9350612d7c818560208601612d1c565b612d8581612d46565b840191505092915050565b60006020820190508181036000830152612daa8184612d57565b905092915050565b6000604051905090565b600080fd5b600080fd5b612dcf81612cc4565b8114612dda57600080fd5b50565b600081359050612dec81612dc6565b92915050565b6000819050919050565b612e0581612df2565b8114612e1057600080fd5b50565b600081359050612e2281612dfc565b92915050565b60008060408385031215612e3f57612e3e612dbc565b5b6000612e4d85828601612ddd565b9250506020612e5e85828601612e13565b9150509250929050565b60008115159050919050565b612e7d81612e68565b82525050565b6000602082019050612e986000830184612e74565b92915050565b612ea781612df2565b82525050565b6000604082019050612ec26000830185612e9e565b612ecf6020830184612e9e565b9392505050565b6000819050919050565b6000612efb612ef6612ef184612ca4565b612ed6565b612ca4565b9050919050565b6000612f0d82612ee0565b9050919050565b6000612f1f82612f02565b9050919050565b612f2f81612f14565b82525050565b6000602082019050612f4a6000830184612f26565b92915050565b6000602082019050612f656000830184612e9e565b92915050565b600080600060608486031215612f8457612f83612dbc565b5b6000612f9286828701612ddd565b9350506020612fa386828701612ddd565b9250506040612fb486828701612e13565b9150509250925092565b600060208284031215612fd457612fd3612dbc565b5b6000612fe284828501612e13565b91505092915050565b600060ff82169050919050565b61300181612feb565b82525050565b600060208201905061301c6000830184612ff8565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261304757613046613022565b5b8235905067ffffffffffffffff81111561306457613063613027565b5b6020830191508360208202830111156130805761307f61302c565b5b9250929050565b61309081612e68565b811461309b57600080fd5b50565b6000813590506130ad81613087565b92915050565b6000806000604084860312156130cc576130cb612dbc565b5b600084013567ffffffffffffffff8111156130ea576130e9612dc1565b5b6130f686828701613031565b935093505060206131098682870161309e565b9150509250925092565b60006020828403121561312957613128612dbc565b5b600061313784828501612ddd565b91505092915050565b6000806040838503121561315757613156612dbc565b5b600061316585828601612e13565b925050602061317685828601612e13565b9150509250929050565b6000806040838503121561319757613196612dbc565b5b60006131a585828601612ddd565b92505060206131b685828601612ddd565b9150509250929050565b6000602082840312156131d6576131d5612dbc565b5b60006131e48482850161309e565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061323457607f821691505b602082108103613247576132466131ed565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613283602083612d0b565b915061328e8261324d565b602082019050919050565b600060208201905081810360008301526132b281613276565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132f382612df2565b91506132fe83612df2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613337576133366132b9565b5b828202905092915050565b60008151905061335181612dfc565b92915050565b60006020828403121561336d5761336c612dbc565b5b600061337b84828501613342565b91505092915050565b60006040820190506133996000830185612cd6565b6133a66020830184612e9e565b9392505050565b6000815190506133bc81613087565b92915050565b6000602082840312156133d8576133d7612dbc565b5b60006133e6848285016133ad565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b600061344b602283612d0b565b9150613456826133ef565b604082019050919050565b6000602082019050818103600083015261347a8161343e565b9050919050565b60008151905061349081612dc6565b92915050565b6000602082840312156134ac576134ab612dbc565b5b60006134ba84828501613481565b91505092915050565b60006040820190506134d86000830185612cd6565b6134e56020830184612cd6565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613548602683612d0b565b9150613553826134ec565b604082019050919050565b600060208201905081810360008301526135778161353b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61361181612cc4565b82525050565b60006136238383613608565b60208301905092915050565b6000602082019050919050565b6000613647826135dc565b61365181856135e7565b935061365c836135f8565b8060005b8381101561368d5781516136748882613617565b975061367f8361362f565b925050600181019050613660565b5085935050505092915050565b60006040820190506136af6000830185612e9e565b81810360208301526136c1818461363c565b90509392505050565b6136d382612d46565b810181811067ffffffffffffffff821117156136f2576136f161357e565b5b80604052505050565b6000613705612db2565b905061371182826136ca565b919050565b600067ffffffffffffffff8211156137315761373061357e565b5b602082029050602081019050919050565b600061375561375084613716565b6136fb565b905080838252602082019050602084028301858111156137785761377761302c565b5b835b818110156137a1578061378d8882613342565b84526020840193505060208101905061377a565b5050509392505050565b600082601f8301126137c0576137bf613022565b5b81516137d0848260208601613742565b91505092915050565b6000602082840312156137ef576137ee612dbc565b5b600082015167ffffffffffffffff81111561380d5761380c612dc1565b5b613819848285016137ab565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061387e602483612d0b565b915061388982613822565b604082019050919050565b600060208201905081810360008301526138ad81613871565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613910602283612d0b565b915061391b826138b4565b604082019050919050565b6000602082019050818103600083015261393f81613903565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139a2602583612d0b565b91506139ad82613946565b604082019050919050565b600060208201905081810360008301526139d181613995565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613a34602383612d0b565b9150613a3f826139d8565b604082019050919050565b60006020820190508181036000830152613a6381613a27565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613ac6602983612d0b565b9150613ad182613a6a565b604082019050919050565b60006020820190508181036000830152613af581613ab9565b9050919050565b7f556e697377617056325061697220686173206e6f74206265656e207365740000600082015250565b6000613b32601e83612d0b565b9150613b3d82613afc565b602082019050919050565b60006020820190508181036000830152613b6181613b25565b9050919050565b7f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c65742060008201527f6c696d6974000000000000000000000000000000000000000000000000000000602082015250565b6000613bc4602583612d0b565b9150613bcf82613b68565b604082019050919050565b60006020820190508181036000830152613bf381613bb7565b9050919050565b6000613c0582612df2565b9150613c1083612df2565b9250828203905081811115613c2857613c276132b9565b5b92915050565b6000613c3982612df2565b9150613c4483612df2565b9250828201905080821115613c5c57613c5b6132b9565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613c98601b83612d0b565b9150613ca382613c62565b602082019050919050565b60006020820190508181036000830152613cc781613c8b565b9050919050565b6000613cd982612df2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d0b57613d0a6132b9565b5b600182019050919050565b6000819050919050565b6000613d3b613d36613d3184613d16565b612ed6565b612df2565b9050919050565b613d4b81613d20565b82525050565b600060a082019050613d666000830188612e9e565b613d736020830187613d42565b8181036040830152613d85818661363c565b9050613d946060830185612cd6565b613da16080830184612e9e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613de582612df2565b9150613df083612df2565b925082613e0057613dff613dab565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e67602183612d0b565b9150613e7282613e0b565b604082019050919050565b60006020820190508181036000830152613e9681613e5a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202a698e63adec504b381a27d97d57d36a22230d248143a21b81b6f8e54e3cbb6864736f6c63430008100033

Deployed Bytecode Sourcemap

9069:9731:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10244:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10866:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11699:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10529:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9354:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11143:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11868:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12692:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17507:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11052:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12189:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9467:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12835:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15730:287;;;;;;;;;;;;;:::i;:::-;;10070:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14046:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17835:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10177:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11246:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8056:148;;;;;;;;;;;;;:::i;:::-;;13445:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13248:189;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7842:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10117:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10957:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12415:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11373:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13867:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13603:252;;;;;;;;;;;;;:::i;:::-;;11548:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17678:149;;;;;;;;;;;;;:::i;:::-;;8212:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17233:266;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10244:71;;;;;;;;;;;;;:::o;10866:83::-;10903:13;10936:5;10929:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10866:83;:::o;11699:161::-;11774:4;11791:39;11800:12;:10;:12::i;:::-;11814:7;11823:6;11791:8;:39::i;:::-;11848:4;11841:11;;11699:161;;;;:::o;10529:22::-;;;;;;;;;;;;;;:::o;9354:106::-;;;;;;;;;;;;;:::o;11143:95::-;11196:7;11223;;11216:14;;11143:95;:::o;11868:313::-;11966:4;11983:36;11993:6;12001:9;12012:6;11983:9;:36::i;:::-;12030:121;12039:6;12047:12;:10;:12::i;:::-;12061:89;12099:6;12061:89;;;;;;;;;;;;;;;;;:11;:19;12073:6;12061:19;;;;;;;;;;;;;;;:33;12081:12;:10;:12::i;:::-;12061:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12030:8;:121::i;:::-;12169:4;12162:11;;11868:313;;;;;:::o;12692:135::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12812:7:::1;12794:15;:25;;;;:::i;:::-;12775:16;:44;;;;12692:135:::0;:::o;17507:126::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17609:16:::1;17591:15;:34;;;;17507:126:::0;:::o;11052:83::-;11093:5;11118:9;;;;;;;;;;;11111:16;;11052:83;:::o;12189:218::-;12277:4;12294:83;12303:12;:10;:12::i;:::-;12317:7;12326:50;12365:10;12326:11;:25;12338:12;:10;:12::i;:::-;12326:25;;;;;;;;;;;;;;;:34;12352:7;12326:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12294:8;:83::i;:::-;12395:4;12388:11;;12189:218;;;;:::o;9467:45::-;;;;;;;;;;;;;:::o;12835:161::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12947:41:::1;12960:9;;12971:16;12947:12;:41::i;:::-;12835:161:::0;;;:::o;15730:287::-;15773:28;15804:24;15822:4;15804:9;:24::i;:::-;15773:55;;15866:1;15843:20;:24;15839:171;;;15889:16;;;;;;;;;;;15888:17;:42;;;;;15909:21;;;;;;;;;;;15888:42;15884:115;;;15951:32;15962:20;15951:10;:32::i;:::-;15884:115;15839:171;15762:255;15730:287::o;10070:40::-;;;;;;;;;;;;;:::o;14046:124::-;14111:4;14135:18;:27;14154:7;14135:27;;;;;;;;;;;;;;;;;;;;;;;;;14128:34;;14046:124;;;:::o;17835:244::-;17908:17;17935:15;17908:43;;17962:15;17980:10;:20;;;18009:4;17980:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17962:53;;18026:10;:19;;;18046:15;;;;;;;;;;;18063:7;18026:45;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17897:182;;17835:244;:::o;10177:60::-;;;;:::o;11246:119::-;11312:7;11339:9;:18;11349:7;11339:18;;;;;;;;;;;;;;;;11332:25;;11246:119;;;:::o;8056:148::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8163:1:::1;8126:40;;8147:6;::::0;::::1;;;;;;;;8126:40;;;;;;;;;;;;8194:1;8177:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;8056:148::o:0;13445:150::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13545:6:::1;13528:7;:14;;:23;;;;13580:7;13562;:15;;:25;;;;13445:150:::0;;:::o;13248:189::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13372:14:::1;13354:15;;:32;;;;;;;;;;;;;;;;;;13415:14;13397:15;;:32;;;;;;;;;;;;;;;;;;13248:189:::0;;:::o;7842:79::-;7880:7;7907:6;;;;;;;;;;;7900:13;;7842:79;:::o;10117:42::-;;;;:::o;10957:87::-;10996:13;11029:7;11022:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10957:87;:::o;12415:269::-;12508:4;12525:129;12534:12;:10;:12::i;:::-;12548:7;12557:96;12596:15;12557:96;;;;;;;;;;;;;;;;;:11;:25;12569:12;:10;:12::i;:::-;12557:25;;;;;;;;;;;;;;;:34;12583:7;12557:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12525:8;:129::i;:::-;12672:4;12665:11;;12415:269;;;;:::o;11373:167::-;11451:4;11468:42;11478:12;:10;:12::i;:::-;11492:9;11503:6;11468:9;:42::i;:::-;11528:4;11521:11;;11373:167;;;;:::o;13867:171::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13968:8:::1;13944:21;;:32;;;;;;;;;;;;;;;;;;13992:38;14021:8;13992:38;;;;;;:::i;:::-;;;;;;;;13867:171:::0;:::o;13603:252::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13693:1:::1;13664:31;;:17;;;;;;;;;;;:31;;;13656:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;13782:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13764:55;;;13828:4;13835:11;;;;;;;;;;;13764:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13744:17;;:103;;;;;;;;;;;;;;;;;;13603:252::o:0;11548:143::-;11629:7;11656:11;:18;11668:5;11656:18;;;;;;;;;;;;;;;:27;11675:7;11656:27;;;;;;;;;;;;;;;;11649:34;;11548:143;;;;:::o;17678:149::-;17721:18;17742:21;17721:42;;17782:15;;;;;;;;;;;17774:33;;:45;17808:10;17774:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17710:117;17678:149::o;8212:244::-;7979:12;:10;:12::i;:::-;7969:22;;:6;;;;;;;;;;:22;;;7961:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8321:1:::1;8301:22;;:8;:22;;::::0;8293:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8411:8;8382:38;;8403:6;::::0;::::1;;;;;;;;8382:38;;;;;;;;;;;;8440:8;8431:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;8212:244:::0;:::o;17233:266::-;17291:7;17312:21;17350:1;17336:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17312:40;;17373:11;;;;;;;;;;;17363:4;17368:1;17363:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;;;17413:4;17395;17400:1;17395:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;17436:15;;;;;;;;;;;:29;;;17466:15;;17483:4;17436:52;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17489:1;17436:55;;;;;;;;:::i;:::-;;;;;;;;17429:62;;;17233:266;:::o;4184:98::-;4237:7;4264:10;4257:17;;4184:98;:::o;14178:337::-;14288:1;14271:19;;:5;:19;;;14263:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14369:1;14350:21;;:7;:21;;;14342:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14453:6;14423:11;:18;14435:5;14423:18;;;;;;;;;;;;;;;:27;14442:7;14423:27;;;;;;;;;;;;;;;:36;;;;14491:7;14475:32;;14484:5;14475:32;;;14500:6;14475:32;;;;;;:::i;:::-;;;;;;;;14178:337;;;:::o;14523:1199::-;14627:1;14611:18;;:4;:18;;;14603:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14704:1;14690:16;;:2;:16;;;14682:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14774:1;14765:6;:10;14757:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;14869:1;14840:31;;:17;;;;;;;;;;;:31;;;14832:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14916:11;14946:13;14963:18;:24;14982:4;14963:24;;;;;;;;;;;;;;;;;;;;;;;;;14962:25;:52;;;;;14992:18;:22;15011:2;14992:22;;;;;;;;;;;;;;;;;;;;;;;;;14991:23;14962:52;:71;;;;;15026:7;:5;:7::i;:::-;15018:15;;:4;:15;;;;14962:71;:88;;;;;15043:7;:5;:7::i;:::-;15037:13;;:2;:13;;;;14962:88;14946:104;;15061:21;15085:25;15103:6;15085:13;15095:2;15085:9;:13::i;:::-;:17;;:25;;;;:::i;:::-;15061:49;;15143:17;;;;;;;;;;;15135:25;;:4;:25;;;15131:141;;15202:16;;15185:13;:33;;15177:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;15131:141;15294:17;;;;;;;;;;;15286:25;;:4;:25;;;;:52;;;;;15321:17;;;;;;;;;;;15315:23;;:2;:23;;;15286:52;15282:194;;;15433:4;15424:13;;15452:12;:10;:12::i;:::-;15282:194;15498:17;;;;;;;;;;;15490:25;;:4;:25;;;;:52;;;;;15525:17;;;;;;;;;;;15519:23;;:2;:23;;;;15490:52;15486:168;;;15584:16;;15567:13;:33;;15559:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;15486:168;15664:50;15679:4;15685:2;15689:6;15697:8;15707:6;15664:14;:50::i;:::-;14592:1130;;;14523:1199;;;:::o;2656:192::-;2742:7;2775:1;2770;:6;;2778:12;2762:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2802:9;2818:1;2814;:5;;;;:::i;:::-;2802:17;;2839:1;2832:8;;;2656:192;;;;;:::o;2323:181::-;2381:7;2401:9;2417:1;2413;:5;;;;:::i;:::-;2401:17;;2442:1;2437;:6;;2429:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2495:1;2488:8;;;2323:181;;;;:::o;13004:236::-;13091:9;13086:147;13110:9;;:16;;13106:1;:20;13086:147;;;13148:12;13163:9;;13173:1;13163:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;13148:27;;13217:4;13190:18;:24;13209:4;13190:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;13133:100;13128:3;;;;;:::i;:::-;;;;13086:147;;;;13004:236;;;:::o;16410:815::-;9289:4;9270:16;;:23;;;;;;;;;;;;;;;;;;16482:21:::1;16535:1;16521:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16514:23;;16566:4;16548;16553:1;16548:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;16592:11;;;;;;;;;;;16582:4;16587:1;16582:7;;;;;;;;:::i;:::-;;;;;;;:21;;;;;;;;;::::0;::::1;16624:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16614:4;16619:1;16614:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;16692:62;16709:4;16724:15;;;;;;;;;;;16742:11;16692:8;:62::i;:::-;16766:15;;;;;;;;;;;:66;;;16847:11;16873:1;16917:4;16944;16964:15;16766:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17011:18;17032:21;17011:42;;17064:17;17084;17099:1;17084:10;:14;;:17;;;;:::i;:::-;17064:37;;17122:15;;;;;;;;;;;17114:33;;:44;17148:9;17114:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;17177:15;;;;;;;;;;;17169:33;;:44;17203:9;17169:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16471:754;;;9335:5:::0;9316:16;;:24;;;;;;;;;;;;;;;;;;16410:815;:::o;16025:379::-;16066:28;16097:24;16115:4;16097:9;:24::i;:::-;16066:55;;16159:1;16136:20;:24;16132:265;;;16177:19;16199:27;:25;:27::i;:::-;16177:49;;16269:11;16245:20;:35;;:56;;;;;16285:16;;;;;;;;;;;16284:17;16245:56;:81;;;;;16305:21;;;;;;;;;;;16245:81;16241:145;;;16347:23;16358:11;16347:10;:23::i;:::-;16241:145;16162:235;16132:265;16055:349;16025:379::o;18160:637::-;18291:17;18311:8;:50;;18360:1;18311:50;;;18322:35;18353:3;18322:26;18333:7;:14;;;18322:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;18311:50;18291:70;;18376:8;:18;;;;;18388:6;18376:18;18372:99;;;18423:36;18455:3;18423:27;18434:7;:15;;;18423:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;18411:48;;18372:99;18481:22;18506:21;18517:9;18506:6;:10;;:21;;;;:::i;:::-;18481:46;;18558:29;18580:6;18558:9;:17;18568:6;18558:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;18538:9;:17;18548:6;18538:17;;;;;;;;;;;;;;;:49;;;;18621:40;18646:14;18621:9;:20;18631:9;18621:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;18598:9;:20;18608:9;18598:20;;;;;;;;;;;;;;;:63;;;;18699:39;18728:9;18699;:24;18717:4;18699:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;18672:9;:24;18690:4;18672:24;;;;;;;;;;;;;;;:66;;;;18771:9;18754:35;;18763:6;18754:35;;;18782:6;18754:35;;;;;;:::i;:::-;;;;;;;;18280:517;;18160:637;;;;;:::o;3335:132::-;3393:7;3420:39;3424:1;3427;3420:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3413:46;;3335:132;;;;:::o;2856:471::-;2914:7;3164:1;3159;:6;3155:47;;3189:1;3182:8;;;;3155:47;3214:9;3230:1;3226;:5;;;;:::i;:::-;3214:17;;3259:1;3254;3250;:5;;;;:::i;:::-;:10;3242:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3318:1;3311:8;;;2856:471;;;;;:::o;2512:136::-;2570:7;2597:43;2601:1;2604;2597:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2590:50;;2512:136;;;;:::o;3475:278::-;3561:7;3593:1;3589;:5;3596:12;3581:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3620:9;3636:1;3632;:5;;;;:::i;:::-;3620:17;;3744:1;3737:8;;;3475:278;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:246::-;954:1;964:113;978:6;975:1;972:13;964:113;;;1063:1;1058:3;1054:11;1048:18;1044:1;1039:3;1035:11;1028:39;1000:2;997:1;993:10;988:15;;964:113;;;1111:1;1102:6;1097:3;1093:16;1086:27;935:184;873:246;;;:::o;1125:102::-;1166:6;1217:2;1213:7;1208:2;1201:5;1197:14;1193:28;1183:38;;1125:102;;;:::o;1233:377::-;1321:3;1349:39;1382:5;1349:39;:::i;:::-;1404:71;1468:6;1463:3;1404:71;:::i;:::-;1397:78;;1484:65;1542:6;1537:3;1530:4;1523:5;1519:16;1484:65;:::i;:::-;1574:29;1596:6;1574:29;:::i;:::-;1569:3;1565:39;1558:46;;1325:285;1233:377;;;;:::o;1616:313::-;1729:4;1767:2;1756:9;1752:18;1744:26;;1816:9;1810:4;1806:20;1802:1;1791:9;1787:17;1780:47;1844:78;1917:4;1908:6;1844:78;:::i;:::-;1836:86;;1616:313;;;;:::o;1935:75::-;1968:6;2001:2;1995:9;1985:19;;1935:75;:::o;2016:117::-;2125:1;2122;2115:12;2139:117;2248:1;2245;2238:12;2262:122;2335:24;2353:5;2335:24;:::i;:::-;2328:5;2325:35;2315:63;;2374:1;2371;2364:12;2315:63;2262:122;:::o;2390:139::-;2436:5;2474:6;2461:20;2452:29;;2490:33;2517:5;2490:33;:::i;:::-;2390:139;;;;:::o;2535:77::-;2572:7;2601:5;2590:16;;2535:77;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:332::-;4043:4;4081:2;4070:9;4066:18;4058:26;;4094:71;4162:1;4151:9;4147:17;4138:6;4094:71;:::i;:::-;4175:72;4243:2;4232:9;4228:18;4219:6;4175:72;:::i;:::-;3922:332;;;;;:::o;4260:60::-;4288:3;4309:5;4302:12;;4260:60;;;:::o;4326:142::-;4376:9;4409:53;4427:34;4436:24;4454:5;4436:24;:::i;:::-;4427:34;:::i;:::-;4409:53;:::i;:::-;4396:66;;4326:142;;;:::o;4474:126::-;4524:9;4557:37;4588:5;4557:37;:::i;:::-;4544:50;;4474:126;;;:::o;4606:152::-;4682:9;4715:37;4746:5;4715:37;:::i;:::-;4702:50;;4606:152;;;:::o;4764:183::-;4877:63;4934:5;4877:63;:::i;:::-;4872:3;4865:76;4764:183;;:::o;4953:274::-;5072:4;5110:2;5099:9;5095:18;5087:26;;5123:97;5217:1;5206:9;5202:17;5193:6;5123:97;:::i;:::-;4953:274;;;;:::o;5233:222::-;5326:4;5364:2;5353:9;5349:18;5341:26;;5377:71;5445:1;5434:9;5430:17;5421:6;5377:71;:::i;:::-;5233:222;;;;:::o;5461:619::-;5538:6;5546;5554;5603:2;5591:9;5582:7;5578:23;5574:32;5571:119;;;5609:79;;:::i;:::-;5571:119;5729:1;5754:53;5799:7;5790:6;5779:9;5775:22;5754:53;:::i;:::-;5744:63;;5700:117;5856:2;5882:53;5927:7;5918:6;5907:9;5903:22;5882:53;:::i;:::-;5872:63;;5827:118;5984:2;6010:53;6055:7;6046:6;6035:9;6031:22;6010:53;:::i;:::-;6000:63;;5955:118;5461:619;;;;;:::o;6086:329::-;6145:6;6194:2;6182:9;6173:7;6169:23;6165:32;6162:119;;;6200:79;;:::i;:::-;6162:119;6320:1;6345:53;6390:7;6381:6;6370:9;6366:22;6345:53;:::i;:::-;6335:63;;6291:117;6086:329;;;;:::o;6421:86::-;6456:7;6496:4;6489:5;6485:16;6474:27;;6421:86;;;:::o;6513:112::-;6596:22;6612:5;6596:22;:::i;:::-;6591:3;6584:35;6513:112;;:::o;6631:214::-;6720:4;6758:2;6747:9;6743:18;6735:26;;6771:67;6835:1;6824:9;6820:17;6811:6;6771:67;:::i;:::-;6631:214;;;;:::o;6851:117::-;6960:1;6957;6950:12;6974:117;7083:1;7080;7073:12;7097:117;7206:1;7203;7196:12;7237:568;7310:8;7320:6;7370:3;7363:4;7355:6;7351:17;7347:27;7337:122;;7378:79;;:::i;:::-;7337:122;7491:6;7478:20;7468:30;;7521:18;7513:6;7510:30;7507:117;;;7543:79;;:::i;:::-;7507:117;7657:4;7649:6;7645:17;7633:29;;7711:3;7703:4;7695:6;7691:17;7681:8;7677:32;7674:41;7671:128;;;7718:79;;:::i;:::-;7671:128;7237:568;;;;;:::o;7811:116::-;7881:21;7896:5;7881:21;:::i;:::-;7874:5;7871:32;7861:60;;7917:1;7914;7907:12;7861:60;7811:116;:::o;7933:133::-;7976:5;8014:6;8001:20;7992:29;;8030:30;8054:5;8030:30;:::i;:::-;7933:133;;;;:::o;8072:698::-;8164:6;8172;8180;8229:2;8217:9;8208:7;8204:23;8200:32;8197:119;;;8235:79;;:::i;:::-;8197:119;8383:1;8372:9;8368:17;8355:31;8413:18;8405:6;8402:30;8399:117;;;8435:79;;:::i;:::-;8399:117;8548:80;8620:7;8611:6;8600:9;8596:22;8548:80;:::i;:::-;8530:98;;;;8326:312;8677:2;8703:50;8745:7;8736:6;8725:9;8721:22;8703:50;:::i;:::-;8693:60;;8648:115;8072:698;;;;;:::o;8776:329::-;8835:6;8884:2;8872:9;8863:7;8859:23;8855:32;8852:119;;;8890:79;;:::i;:::-;8852:119;9010:1;9035:53;9080:7;9071:6;9060:9;9056:22;9035:53;:::i;:::-;9025:63;;8981:117;8776:329;;;;:::o;9111:474::-;9179:6;9187;9236:2;9224:9;9215:7;9211:23;9207:32;9204:119;;;9242:79;;:::i;:::-;9204:119;9362:1;9387:53;9432:7;9423:6;9412:9;9408:22;9387:53;:::i;:::-;9377:63;;9333:117;9489:2;9515:53;9560:7;9551:6;9540:9;9536:22;9515:53;:::i;:::-;9505:63;;9460:118;9111:474;;;;;:::o;9591:::-;9659:6;9667;9716:2;9704:9;9695:7;9691:23;9687:32;9684:119;;;9722:79;;:::i;:::-;9684:119;9842:1;9867:53;9912:7;9903:6;9892:9;9888:22;9867:53;:::i;:::-;9857:63;;9813:117;9969:2;9995:53;10040:7;10031:6;10020:9;10016:22;9995:53;:::i;:::-;9985:63;;9940:118;9591:474;;;;;:::o;10071:323::-;10127:6;10176:2;10164:9;10155:7;10151:23;10147:32;10144:119;;;10182:79;;:::i;:::-;10144:119;10302:1;10327:50;10369:7;10360:6;10349:9;10345:22;10327:50;:::i;:::-;10317:60;;10273:114;10071:323;;;;:::o;10400:180::-;10448:77;10445:1;10438:88;10545:4;10542:1;10535:15;10569:4;10566:1;10559:15;10586:320;10630:6;10667:1;10661:4;10657:12;10647:22;;10714:1;10708:4;10704:12;10735:18;10725:81;;10791:4;10783:6;10779:17;10769:27;;10725:81;10853:2;10845:6;10842:14;10822:18;10819:38;10816:84;;10872:18;;:::i;:::-;10816:84;10637:269;10586:320;;;:::o;10912:182::-;11052:34;11048:1;11040:6;11036:14;11029:58;10912:182;:::o;11100:366::-;11242:3;11263:67;11327:2;11322:3;11263:67;:::i;:::-;11256:74;;11339:93;11428:3;11339:93;:::i;:::-;11457:2;11452:3;11448:12;11441:19;;11100:366;;;:::o;11472:419::-;11638:4;11676:2;11665:9;11661:18;11653:26;;11725:9;11719:4;11715:20;11711:1;11700:9;11696:17;11689:47;11753:131;11879:4;11753:131;:::i;:::-;11745:139;;11472:419;;;:::o;11897:180::-;11945:77;11942:1;11935:88;12042:4;12039:1;12032:15;12066:4;12063:1;12056:15;12083:348;12123:7;12146:20;12164:1;12146:20;:::i;:::-;12141:25;;12180:20;12198:1;12180:20;:::i;:::-;12175:25;;12368:1;12300:66;12296:74;12293:1;12290:81;12285:1;12278:9;12271:17;12267:105;12264:131;;;12375:18;;:::i;:::-;12264:131;12423:1;12420;12416:9;12405:20;;12083:348;;;;:::o;12437:143::-;12494:5;12525:6;12519:13;12510:22;;12541:33;12568:5;12541:33;:::i;:::-;12437:143;;;;:::o;12586:351::-;12656:6;12705:2;12693:9;12684:7;12680:23;12676:32;12673:119;;;12711:79;;:::i;:::-;12673:119;12831:1;12856:64;12912:7;12903:6;12892:9;12888:22;12856:64;:::i;:::-;12846:74;;12802:128;12586:351;;;;:::o;12943:332::-;13064:4;13102:2;13091:9;13087:18;13079:26;;13115:71;13183:1;13172:9;13168:17;13159:6;13115:71;:::i;:::-;13196:72;13264:2;13253:9;13249:18;13240:6;13196:72;:::i;:::-;12943:332;;;;;:::o;13281:137::-;13335:5;13366:6;13360:13;13351:22;;13382:30;13406:5;13382:30;:::i;:::-;13281:137;;;;:::o;13424:345::-;13491:6;13540:2;13528:9;13519:7;13515:23;13511:32;13508:119;;;13546:79;;:::i;:::-;13508:119;13666:1;13691:61;13744:7;13735:6;13724:9;13720:22;13691:61;:::i;:::-;13681:71;;13637:125;13424:345;;;;:::o;13775:221::-;13915:34;13911:1;13903:6;13899:14;13892:58;13984:4;13979:2;13971:6;13967:15;13960:29;13775:221;:::o;14002:366::-;14144:3;14165:67;14229:2;14224:3;14165:67;:::i;:::-;14158:74;;14241:93;14330:3;14241:93;:::i;:::-;14359:2;14354:3;14350:12;14343:19;;14002:366;;;:::o;14374:419::-;14540:4;14578:2;14567:9;14563:18;14555:26;;14627:9;14621:4;14617:20;14613:1;14602:9;14598:17;14591:47;14655:131;14781:4;14655:131;:::i;:::-;14647:139;;14374:419;;;:::o;14799:143::-;14856:5;14887:6;14881:13;14872:22;;14903:33;14930:5;14903:33;:::i;:::-;14799:143;;;;:::o;14948:351::-;15018:6;15067:2;15055:9;15046:7;15042:23;15038:32;15035:119;;;15073:79;;:::i;:::-;15035:119;15193:1;15218:64;15274:7;15265:6;15254:9;15250:22;15218:64;:::i;:::-;15208:74;;15164:128;14948:351;;;;:::o;15305:332::-;15426:4;15464:2;15453:9;15449:18;15441:26;;15477:71;15545:1;15534:9;15530:17;15521:6;15477:71;:::i;:::-;15558:72;15626:2;15615:9;15611:18;15602:6;15558:72;:::i;:::-;15305:332;;;;;:::o;15643:225::-;15783:34;15779:1;15771:6;15767:14;15760:58;15852:8;15847:2;15839:6;15835:15;15828:33;15643:225;:::o;15874:366::-;16016:3;16037:67;16101:2;16096:3;16037:67;:::i;:::-;16030:74;;16113:93;16202:3;16113:93;:::i;:::-;16231:2;16226:3;16222:12;16215:19;;15874:366;;;:::o;16246:419::-;16412:4;16450:2;16439:9;16435:18;16427:26;;16499:9;16493:4;16489:20;16485:1;16474:9;16470:17;16463:47;16527:131;16653:4;16527:131;:::i;:::-;16519:139;;16246:419;;;:::o;16671:180::-;16719:77;16716:1;16709:88;16816:4;16813:1;16806:15;16840:4;16837:1;16830:15;16857:180;16905:77;16902:1;16895:88;17002:4;16999:1;16992:15;17026:4;17023:1;17016:15;17043:114;17110:6;17144:5;17138:12;17128:22;;17043:114;;;:::o;17163:184::-;17262:11;17296:6;17291:3;17284:19;17336:4;17331:3;17327:14;17312:29;;17163:184;;;;:::o;17353:132::-;17420:4;17443:3;17435:11;;17473:4;17468:3;17464:14;17456:22;;17353:132;;;:::o;17491:108::-;17568:24;17586:5;17568:24;:::i;:::-;17563:3;17556:37;17491:108;;:::o;17605:179::-;17674:10;17695:46;17737:3;17729:6;17695:46;:::i;:::-;17773:4;17768:3;17764:14;17750:28;;17605:179;;;;:::o;17790:113::-;17860:4;17892;17887:3;17883:14;17875:22;;17790:113;;;:::o;17939:732::-;18058:3;18087:54;18135:5;18087:54;:::i;:::-;18157:86;18236:6;18231:3;18157:86;:::i;:::-;18150:93;;18267:56;18317:5;18267:56;:::i;:::-;18346:7;18377:1;18362:284;18387:6;18384:1;18381:13;18362:284;;;18463:6;18457:13;18490:63;18549:3;18534:13;18490:63;:::i;:::-;18483:70;;18576:60;18629:6;18576:60;:::i;:::-;18566:70;;18422:224;18409:1;18406;18402:9;18397:14;;18362:284;;;18366:14;18662:3;18655:10;;18063:608;;;17939:732;;;;:::o;18677:483::-;18848:4;18886:2;18875:9;18871:18;18863:26;;18899:71;18967:1;18956:9;18952:17;18943:6;18899:71;:::i;:::-;19017:9;19011:4;19007:20;19002:2;18991:9;18987:18;18980:48;19045:108;19148:4;19139:6;19045:108;:::i;:::-;19037:116;;18677:483;;;;;:::o;19166:281::-;19249:27;19271:4;19249:27;:::i;:::-;19241:6;19237:40;19379:6;19367:10;19364:22;19343:18;19331:10;19328:34;19325:62;19322:88;;;19390:18;;:::i;:::-;19322:88;19430:10;19426:2;19419:22;19209:238;19166:281;;:::o;19453:129::-;19487:6;19514:20;;:::i;:::-;19504:30;;19543:33;19571:4;19563:6;19543:33;:::i;:::-;19453:129;;;:::o;19588:311::-;19665:4;19755:18;19747:6;19744:30;19741:56;;;19777:18;;:::i;:::-;19741:56;19827:4;19819:6;19815:17;19807:25;;19887:4;19881;19877:15;19869:23;;19588:311;;;:::o;19922:732::-;20029:5;20054:81;20070:64;20127:6;20070:64;:::i;:::-;20054:81;:::i;:::-;20045:90;;20155:5;20184:6;20177:5;20170:21;20218:4;20211:5;20207:16;20200:23;;20271:4;20263:6;20259:17;20251:6;20247:30;20300:3;20292:6;20289:15;20286:122;;;20319:79;;:::i;:::-;20286:122;20434:6;20417:231;20451:6;20446:3;20443:15;20417:231;;;20526:3;20555:48;20599:3;20587:10;20555:48;:::i;:::-;20550:3;20543:61;20633:4;20628:3;20624:14;20617:21;;20493:155;20477:4;20472:3;20468:14;20461:21;;20417:231;;;20421:21;20035:619;;19922:732;;;;;:::o;20677:385::-;20759:5;20808:3;20801:4;20793:6;20789:17;20785:27;20775:122;;20816:79;;:::i;:::-;20775:122;20926:6;20920:13;20951:105;21052:3;21044:6;21037:4;21029:6;21025:17;20951:105;:::i;:::-;20942:114;;20765:297;20677:385;;;;:::o;21068:554::-;21163:6;21212:2;21200:9;21191:7;21187:23;21183:32;21180:119;;;21218:79;;:::i;:::-;21180:119;21359:1;21348:9;21344:17;21338:24;21389:18;21381:6;21378:30;21375:117;;;21411:79;;:::i;:::-;21375:117;21516:89;21597:7;21588:6;21577:9;21573:22;21516:89;:::i;:::-;21506:99;;21309:306;21068:554;;;;:::o;21628:223::-;21768:34;21764:1;21756:6;21752:14;21745:58;21837:6;21832:2;21824:6;21820:15;21813:31;21628:223;:::o;21857:366::-;21999:3;22020:67;22084:2;22079:3;22020:67;:::i;:::-;22013:74;;22096:93;22185:3;22096:93;:::i;:::-;22214:2;22209:3;22205:12;22198:19;;21857:366;;;:::o;22229:419::-;22395:4;22433:2;22422:9;22418:18;22410:26;;22482:9;22476:4;22472:20;22468:1;22457:9;22453:17;22446:47;22510:131;22636:4;22510:131;:::i;:::-;22502:139;;22229:419;;;:::o;22654:221::-;22794:34;22790:1;22782:6;22778:14;22771:58;22863:4;22858:2;22850:6;22846:15;22839:29;22654:221;:::o;22881:366::-;23023:3;23044:67;23108:2;23103:3;23044:67;:::i;:::-;23037:74;;23120:93;23209:3;23120:93;:::i;:::-;23238:2;23233:3;23229:12;23222:19;;22881:366;;;:::o;23253:419::-;23419:4;23457:2;23446:9;23442:18;23434:26;;23506:9;23500:4;23496:20;23492:1;23481:9;23477:17;23470:47;23534:131;23660:4;23534:131;:::i;:::-;23526:139;;23253:419;;;:::o;23678:224::-;23818:34;23814:1;23806:6;23802:14;23795:58;23887:7;23882:2;23874:6;23870:15;23863:32;23678:224;:::o;23908:366::-;24050:3;24071:67;24135:2;24130:3;24071:67;:::i;:::-;24064:74;;24147:93;24236:3;24147:93;:::i;:::-;24265:2;24260:3;24256:12;24249:19;;23908:366;;;:::o;24280:419::-;24446:4;24484:2;24473:9;24469:18;24461:26;;24533:9;24527:4;24523:20;24519:1;24508:9;24504:17;24497:47;24561:131;24687:4;24561:131;:::i;:::-;24553:139;;24280:419;;;:::o;24705:222::-;24845:34;24841:1;24833:6;24829:14;24822:58;24914:5;24909:2;24901:6;24897:15;24890:30;24705:222;:::o;24933:366::-;25075:3;25096:67;25160:2;25155:3;25096:67;:::i;:::-;25089:74;;25172:93;25261:3;25172:93;:::i;:::-;25290:2;25285:3;25281:12;25274:19;;24933:366;;;:::o;25305:419::-;25471:4;25509:2;25498:9;25494:18;25486:26;;25558:9;25552:4;25548:20;25544:1;25533:9;25529:17;25522:47;25586:131;25712:4;25586:131;:::i;:::-;25578:139;;25305:419;;;:::o;25730:228::-;25870:34;25866:1;25858:6;25854:14;25847:58;25939:11;25934:2;25926:6;25922:15;25915:36;25730:228;:::o;25964:366::-;26106:3;26127:67;26191:2;26186:3;26127:67;:::i;:::-;26120:74;;26203:93;26292:3;26203:93;:::i;:::-;26321:2;26316:3;26312:12;26305:19;;25964:366;;;:::o;26336:419::-;26502:4;26540:2;26529:9;26525:18;26517:26;;26589:9;26583:4;26579:20;26575:1;26564:9;26560:17;26553:47;26617:131;26743:4;26617:131;:::i;:::-;26609:139;;26336:419;;;:::o;26761:180::-;26901:32;26897:1;26889:6;26885:14;26878:56;26761:180;:::o;26947:366::-;27089:3;27110:67;27174:2;27169:3;27110:67;:::i;:::-;27103:74;;27186:93;27275:3;27186:93;:::i;:::-;27304:2;27299:3;27295:12;27288:19;;26947:366;;;:::o;27319:419::-;27485:4;27523:2;27512:9;27508:18;27500:26;;27572:9;27566:4;27562:20;27558:1;27547:9;27543:17;27536:47;27600:131;27726:4;27600:131;:::i;:::-;27592:139;;27319:419;;;:::o;27744:224::-;27884:34;27880:1;27872:6;27868:14;27861:58;27953:7;27948:2;27940:6;27936:15;27929:32;27744:224;:::o;27974:366::-;28116:3;28137:67;28201:2;28196:3;28137:67;:::i;:::-;28130:74;;28213:93;28302:3;28213:93;:::i;:::-;28331:2;28326:3;28322:12;28315:19;;27974:366;;;:::o;28346:419::-;28512:4;28550:2;28539:9;28535:18;28527:26;;28599:9;28593:4;28589:20;28585:1;28574:9;28570:17;28563:47;28627:131;28753:4;28627:131;:::i;:::-;28619:139;;28346:419;;;:::o;28771:194::-;28811:4;28831:20;28849:1;28831:20;:::i;:::-;28826:25;;28865:20;28883:1;28865:20;:::i;:::-;28860:25;;28909:1;28906;28902:9;28894:17;;28933:1;28927:4;28924:11;28921:37;;;28938:18;;:::i;:::-;28921:37;28771:194;;;;:::o;28971:191::-;29011:3;29030:20;29048:1;29030:20;:::i;:::-;29025:25;;29064:20;29082:1;29064:20;:::i;:::-;29059:25;;29107:1;29104;29100:9;29093:16;;29128:3;29125:1;29122:10;29119:36;;;29135:18;;:::i;:::-;29119:36;28971:191;;;;:::o;29168:177::-;29308:29;29304:1;29296:6;29292:14;29285:53;29168:177;:::o;29351:366::-;29493:3;29514:67;29578:2;29573:3;29514:67;:::i;:::-;29507:74;;29590:93;29679:3;29590:93;:::i;:::-;29708:2;29703:3;29699:12;29692:19;;29351:366;;;:::o;29723:419::-;29889:4;29927:2;29916:9;29912:18;29904:26;;29976:9;29970:4;29966:20;29962:1;29951:9;29947:17;29940:47;30004:131;30130:4;30004:131;:::i;:::-;29996:139;;29723:419;;;:::o;30148:233::-;30187:3;30210:24;30228:5;30210:24;:::i;:::-;30201:33;;30256:66;30249:5;30246:77;30243:103;;30326:18;;:::i;:::-;30243:103;30373:1;30366:5;30362:13;30355:20;;30148:233;;;:::o;30387:85::-;30432:7;30461:5;30450:16;;30387:85;;;:::o;30478:158::-;30536:9;30569:61;30587:42;30596:32;30622:5;30596:32;:::i;:::-;30587:42;:::i;:::-;30569:61;:::i;:::-;30556:74;;30478:158;;;:::o;30642:147::-;30737:45;30776:5;30737:45;:::i;:::-;30732:3;30725:58;30642:147;;:::o;30795:831::-;31058:4;31096:3;31085:9;31081:19;31073:27;;31110:71;31178:1;31167:9;31163:17;31154:6;31110:71;:::i;:::-;31191:80;31267:2;31256:9;31252:18;31243:6;31191:80;:::i;:::-;31318:9;31312:4;31308:20;31303:2;31292:9;31288:18;31281:48;31346:108;31449:4;31440:6;31346:108;:::i;:::-;31338:116;;31464:72;31532:2;31521:9;31517:18;31508:6;31464:72;:::i;:::-;31546:73;31614:3;31603:9;31599:19;31590:6;31546:73;:::i;:::-;30795:831;;;;;;;;:::o;31632:180::-;31680:77;31677:1;31670:88;31777:4;31774:1;31767:15;31801:4;31798:1;31791:15;31818:185;31858:1;31875:20;31893:1;31875:20;:::i;:::-;31870:25;;31909:20;31927:1;31909:20;:::i;:::-;31904:25;;31948:1;31938:35;;31953:18;;:::i;:::-;31938:35;31995:1;31992;31988:9;31983:14;;31818:185;;;;:::o;32009:220::-;32149:34;32145:1;32137:6;32133:14;32126:58;32218:3;32213:2;32205:6;32201:15;32194:28;32009:220;:::o;32235:366::-;32377:3;32398:67;32462:2;32457:3;32398:67;:::i;:::-;32391:74;;32474:93;32563:3;32474:93;:::i;:::-;32592:2;32587:3;32583:12;32576:19;;32235:366;;;:::o;32607:419::-;32773:4;32811:2;32800:9;32796:18;32788:26;;32860:9;32854:4;32850:20;32846:1;32835:9;32831:17;32824:47;32888:131;33014:4;32888:131;:::i;:::-;32880:139;;32607:419;;;:::o

Swarm Source

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