ETH Price: $2,764.89 (+2.18%)

Token

Gembit (GEMBIT)
 

Overview

Max Total Supply

1,000,000 GEMBIT

Holders

18

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
20,000 GEMBIT

Value
$0.00
0x738656dA11f7485F98A1F05512D82A606FF1c025
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:
Gembit

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
    Gembit
    Next-generation trading Bot
    
    Telegram: https://t.me/thegembit
    Twitter: https://twitter.com/gembit_coin
    Bot: https://t.me/gembitbot
**/

// SPDX-License-Identifier:MIT
pragma solidity ^0.8.18;

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

// Dex Factory contract interface
interface IDexFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

// Dex Router contract interface
interface IDexRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(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;
    }
}

contract Ownable is Context {
    address private _owner;

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

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

    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 = payable(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;
    }
}

contract Gembit is Context, IERC20, Ownable {
    string private _name = "Gembit";
    string private _symbol = "GEMBIT";
    uint8 private _decimals = 18;
    uint256 private _totalSupply = 1_000_000 * 1e18;

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

    mapping(address => bool) public isExcludedFromFee;

    uint256 public minTokenToSwap = (_totalSupply * 1) / (100); // this amount will trigger swap and distribute(default:1%)

    uint256 public percentDivider = 100;
    uint256 public launchedAt;

    bool public distributeAndLiquifyStatus; // should be true to turn on to liquidate the pool
    bool public feesStatus; // enable by default
    bool public trading; // once enable can't be disable afterwards

    IDexRouter public dexRouter; // router declaration

    address public dexPair; // pair address declaration
    address public marketingWallet; // marketing address declaration

    uint256 public marketingFeeOnBuying = 30;

    uint256 public marketingFeeOnSelling = 30;

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    constructor() {
        _balances[owner()] = _totalSupply;
        marketingWallet = address(0x8Cc199Dd596114bEB68FfaCF36AFCff19ce7498d);

        dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        isExcludedFromFee[address(dexRouter)] = true;

        dexPair = IDexFactory(dexRouter.factory()).createPair(
            address(this),
            dexRouter.WETH()
        );

        //exclude owner and this contract from fee
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;

        emit Transfer(address(0), owner(), _totalSupply);
    }

    //to receive ETH from dexRouter when swapping
    receive() external payable {}

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

    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()] - amount
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender] - subtractedValue
        );
        return true;
    }

    function includeOrExcludeFromFee(address account, bool value)
        external
        onlyOwner
    {
        isExcludedFromFee[account] = value;
    }

    function setMinTokenToSwap(uint256 _amount) external onlyOwner {
        minTokenToSwap = _amount * 1e18;
    }

    function setBuyFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnBuying = _marketingFee;
    }

    function setSellFeePercent(uint256 _marketingFee) external onlyOwner {
        marketingFeeOnSelling = _marketingFee;
    }

    function setDistributionStatus(bool _value) public onlyOwner {
        distributeAndLiquifyStatus = _value;
    }

    function enableOrDisableFees(bool _value) external onlyOwner {
        feesStatus = _value;
    }

    function updateMarketingWallet(address _marketingWallet)
        external
        onlyOwner
    {
        marketingWallet = _marketingWallet;
    }

    function enableTrading() external onlyOwner {
        require(!trading, ": already enabled");

        trading = true;
        feesStatus = true;
        distributeAndLiquifyStatus = true;
        launchedAt = block.timestamp;
    }

    function removeStuckEth(address _receiver) public onlyOwner {
        payable(_receiver).transfer(address(this).balance);
    }

    function totalBuyFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketingFeeOnBuying) / (percentDivider);
        return fee;
    }

    function totalSellFeePerTx(uint256 amount) public view returns (uint256) {
        uint256 fee = (amount * marketingFeeOnSelling) / (percentDivider);
        return fee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), " approve from the zero address");
        require(spender != address(0), "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), "transfer from the zero address");
        require(to != address(0), "transfer to the zero address");
        require(amount > 0, "Amount must be greater than zero");

        if (!isExcludedFromFee[from] && !isExcludedFromFee[to]) {
            // trading disable till launch
            if (!trading) {
                require(
                    dexPair != from && dexPair != to,
                    ": trading is disable"
                );
            }
        }

        // swap and liquify
        distributeAndLiquify(from, to);

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

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

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fees, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (dexPair == sender && takeFee) {
            uint256 allFee;
            uint256 tTransferAmount;
            allFee = totalBuyFeePerTx(amount);
            tTransferAmount = amount - allFee;

            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else if (dexPair == recipient && takeFee) {
            uint256 allFee = totalSellFeePerTx(amount);
            uint256 tTransferAmount = amount - allFee;
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + tTransferAmount;
            emit Transfer(sender, recipient, tTransferAmount);

            takeTokenFee(sender, allFee);
        } else {
            _balances[sender] = _balances[sender] - amount;
            _balances[recipient] = _balances[recipient] + (amount);
            emit Transfer(sender, recipient, amount);
        }
    }

    function takeTokenFee(address sender, uint256 amount) private {
        _balances[address(this)] = _balances[address(this)] + (amount);

        emit Transfer(sender, address(this), amount);
    }

    // to withdarw ETH from contract
    function withdrawETH(uint256 _amount) external onlyOwner {
        require(address(this).balance >= _amount, "Invalid Amount");
        payable(msg.sender).transfer(_amount);
    }

    // to withdraw ERC20 tokens from contract
    function withdrawToken(IERC20 _token, uint256 _amount) external onlyOwner {
        require(_token.balanceOf(address(this)) >= _amount, "Invalid Amount");
        _token.transfer(msg.sender, _amount);
    }

    function distributeAndLiquify(address from, address to) private {
        uint256 contractTokenBalance = balanceOf(address(this));

        bool shouldSell = contractTokenBalance >= minTokenToSwap;

        if (
            shouldSell &&
            from != dexPair &&
            distributeAndLiquifyStatus &&
            !(from == address(this) && to == dexPair) // swap 1 time
        ) {
            // approve contract
            _approve(address(this), address(dexRouter), minTokenToSwap);

            // now is to lock into liquidty pool
            Utils.swapTokensForEth(address(dexRouter), minTokenToSwap);
            uint256 ethForMarketing = address(this).balance;

            // sending Eth to Marketing wallet
            if (ethForMarketing > 0)
                payable(marketingWallet).transfer(ethForMarketing);
        }
    }
}

// Library for swapping on Dex
library Utils {
    function swapTokensForEth(address routerAddress, uint256 tokenAmount)
        internal
    {
        IDexRouter dexRouter = IDexRouter(routerAddress);

        // generate the Dex pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp + 300
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) internal {
        IDexRouter dexRouter = IDexRouter(routerAddress);

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

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":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributeAndLiquifyStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"enableOrDisableFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feesStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"includeOrExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeOnSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minTokenToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"percentDivider","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_receiver","type":"address"}],"name":"removeStuckEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"setDistributionStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMinTokenToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"setSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalBuyFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"totalSellFeePerTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600681526020017f47656d6269740000000000000000000000000000000000000000000000000000815250600190816200004a919062000910565b506040518060400160405280600681526020017f47454d42495400000000000000000000000000000000000000000000000000008152506002908162000091919062000910565b506012600360006101000a81548160ff021916908360ff16021790555069d3c21bcecceda100000060045560646001600454620000cf919062000a26565b620000db919062000aa0565b6008556064600955601e600e55601e600f55348015620000fa57600080fd5b506200010b6200066560201b60201c565b6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360045460056000620001dc6200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550738cc199dd596114beb68ffacf36afcff19ce7498d600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600b60036101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003d2919062000b42565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200045c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000482919062000b42565b6040518363ffffffff1660e01b8152600401620004a192919062000b85565b6020604051808303816000875af1158015620004c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004e7919062000b42565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760006200053d6200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005f66200066d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000657919062000bc3565b60405180910390a362000be0565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200071857607f821691505b6020821081036200072e576200072d620006d0565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007987fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000759565b620007a4868362000759565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007f1620007eb620007e584620007bc565b620007c6565b620007bc565b9050919050565b6000819050919050565b6200080d83620007d0565b620008256200081c82620007f8565b84845462000766565b825550505050565b600090565b6200083c6200082d565b6200084981848462000802565b505050565b5b8181101562000871576200086560008262000832565b6001810190506200084f565b5050565b601f821115620008c0576200088a8162000734565b620008958462000749565b81016020851015620008a5578190505b620008bd620008b48562000749565b8301826200084e565b50505b505050565b600082821c905092915050565b6000620008e560001984600802620008c5565b1980831691505092915050565b6000620009008383620008d2565b9150826002028217905092915050565b6200091b8262000696565b67ffffffffffffffff811115620009375762000936620006a1565b5b620009438254620006ff565b6200095082828562000875565b600060209050601f83116001811462000988576000841562000973578287015190505b6200097f8582620008f2565b865550620009ef565b601f198416620009988662000734565b60005b82811015620009c2578489015182556001820191506020850194506020810190506200099b565b86831015620009e25784890151620009de601f891682620008d2565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a3382620007bc565b915062000a4083620007bc565b925082820262000a5081620007bc565b9150828204841483151762000a6a5762000a69620009f7565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000aad82620007bc565b915062000aba83620007bc565b92508262000acd5762000acc62000a71565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b0a8262000add565b9050919050565b62000b1c8162000afd565b811462000b2857600080fd5b50565b60008151905062000b3c8162000b11565b92915050565b60006020828403121562000b5b5762000b5a62000ad8565b5b600062000b6b8482850162000b2b565b91505092915050565b62000b7f8162000afd565b82525050565b600060408201905062000b9c600083018562000b74565b62000bab602083018462000b74565b9392505050565b62000bbd81620007bc565b82525050565b600060208201905062000bda600083018462000bb2565b92915050565b6139e38062000bf06000396000f3fe6080604052600436106102345760003560e01c80638da5cb5b1161012e578063dd62ed3e116100ab578063f14210a61161006f578063f14210a61461085e578063f242ab4114610887578063f2fde38b146108b2578063f4b3dbc3146108db578063fe6f1b05146109185761023b565b8063dd62ed3e14610767578063ea5b9e85146107a4578063ec44acf2146107cd578063ed421429146107f8578063f097ea1a146108355761023b565b8063a457c2d7116100f2578063a457c2d714610670578063a9059cbb146106ad578063aacebbe3146106ea578063b0bc2a2d14610713578063bf56b3711461073c5761023b565b80638da5cb5b1461059f578063950eb5d5146105ca57806395d89b41146105f35780639e281a981461061e578063a2b8a947146106475761023b565b80635342acb4116101bc57806379777b4e1161018057806379777b4e146104dc5780637c6a9a9c14610507578063844af78e14610532578063879dd3c51461055d5780638a8c523c146105885761023b565b80635342acb4146103f7578063679a3c591461043457806370a082311461045d578063715018a61461049a57806375f0a874146104b15761023b565b806318160ddd1161020357806318160ddd146102fc5780631884f1e61461032757806323b872dd14610352578063313ce5671461038f57806339509351146103ba5761023b565b806306fdde03146102405780630758d9241461026b578063095ea7b3146102965780630a2d140c146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610943565b6040516102629190612cdc565b60405180910390f35b34801561027757600080fd5b506102806109d5565b60405161028d9190612d7d565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190612e11565b6109fb565b6040516102ca9190612e6c565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190612eb3565b610a19565b005b34801561030857600080fd5b50610311610acb565b60405161031e9190612eef565b60405180910390f35b34801561033357600080fd5b5061033c610ad5565b6040516103499190612eef565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190612f0a565b610adb565b6040516103869190612e6c565b60405180910390f35b34801561039b57600080fd5b506103a4610b93565b6040516103b19190612f79565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190612e11565b610baa565b6040516103ee9190612e6c565b60405180910390f35b34801561040357600080fd5b5061041e60048036038101906104199190612f94565b610c56565b60405161042b9190612e6c565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190612f94565b610c76565b005b34801561046957600080fd5b50610484600480360381019061047f9190612f94565b610d55565b6040516104919190612eef565b60405180910390f35b3480156104a657600080fd5b506104af610d9e565b005b3480156104bd57600080fd5b506104c6610ef1565b6040516104d39190612fd0565b60405180910390f35b3480156104e857600080fd5b506104f1610f17565b6040516104fe9190612e6c565b60405180910390f35b34801561051357600080fd5b5061051c610f2a565b6040516105299190612eef565b60405180910390f35b34801561053e57600080fd5b50610547610f30565b6040516105549190612eef565b60405180910390f35b34801561056957600080fd5b50610572610f36565b60405161057f9190612e6c565b60405180910390f35b34801561059457600080fd5b5061059d610f49565b005b3480156105ab57600080fd5b506105b4611088565b6040516105c19190612fd0565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190612feb565b6110b1565b005b3480156105ff57600080fd5b50610608611150565b6040516106159190612cdc565b60405180910390f35b34801561062a57600080fd5b5061064560048036038101906106409190613056565b6111e2565b005b34801561065357600080fd5b5061066e60048036038101906106699190612feb565b6113b6565b005b34801561067c57600080fd5b5061069760048036038101906106929190612e11565b611455565b6040516106a49190612e6c565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190612e11565b611501565b6040516106e19190612e6c565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c9190612f94565b61151f565b005b34801561071f57600080fd5b5061073a60048036038101906107359190612eb3565b6115f8565b005b34801561074857600080fd5b506107516116aa565b60405161075e9190612eef565b60405180910390f35b34801561077357600080fd5b5061078e60048036038101906107899190613096565b6116b0565b60405161079b9190612eef565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c691906130d6565b611737565b005b3480156107d957600080fd5b506107e2611827565b6040516107ef9190612e6c565b60405180910390f35b34801561080457600080fd5b5061081f600480360381019061081a9190612feb565b61183a565b60405161082c9190612eef565b60405180910390f35b34801561084157600080fd5b5061085c60048036038101906108579190612feb565b611863565b005b34801561086a57600080fd5b5061088560048036038101906108809190612feb565b611915565b005b34801561089357600080fd5b5061089c611a37565b6040516108a99190612fd0565b60405180910390f35b3480156108be57600080fd5b506108d960048036038101906108d49190612f94565b611a5d565b005b3480156108e757600080fd5b5061090260048036038101906108fd9190612feb565b611c1e565b60405161090f9190612eef565b60405180910390f35b34801561092457600080fd5b5061092d611c47565b60405161093a9190612eef565b60405180910390f35b60606001805461095290613145565b80601f016020809104026020016040519081016040528092919081815260200182805461097e90613145565b80156109cb5780601f106109a0576101008083540402835291602001916109cb565b820191906000526020600020905b8154815290600101906020018083116109ae57829003601f168201915b5050505050905090565b600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a0f610a08611c4d565b8484611c55565b6001905092915050565b610a21611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa5906131c2565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b6000600454905090565b60085481565b6000610ae8848484611e1e565b610b8884610af4611c4d565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b3e611c4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b839190613211565b611c55565b600190509392505050565b6000600360009054906101000a900460ff16905090565b6000610c4c610bb7611c4d565b848460066000610bc5611c4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c479190613245565b611c55565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610c7e611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d02906131c2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d51573d6000803e3d6000fd5b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610da6611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a906131c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b600e5481565b600f5481565b600b60019054906101000a900460ff1681565b610f51611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906131c2565b60405180910390fd5b600b60029054906101000a900460ff161561102e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611025906132c5565b60405180910390fd5b6001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff0219169083151502179055506001600b60006101000a81548160ff02191690831515021790555042600a81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110b9611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113d906131c2565b60405180910390fd5b80600e8190555050565b60606002805461115f90613145565b80601f016020809104026020016040519081016040528092919081815260200182805461118b90613145565b80156111d85780601f106111ad576101008083540402835291602001916111d8565b820191906000526020600020905b8154815290600101906020018083116111bb57829003601f168201915b5050505050905090565b6111ea611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e906131c2565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112b19190612fd0565b602060405180830381865afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f291906132fa565b1015611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90613373565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161136e929190613393565b6020604051808303816000875af115801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b191906133d1565b505050565b6113be611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611442906131c2565b60405180910390fd5b80600f8190555050565b60006114f7611462611c4d565b848460066000611470611c4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f29190613211565b611c55565b6001905092915050565b600061151561150e611c4d565b8484611e1e565b6001905092915050565b611527611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab906131c2565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611600611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461168d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611684906131c2565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b600a5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61173f611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c3906131c2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60029054906101000a900460ff1681565b600080600954600e548461184e91906133fe565b611858919061346f565b905080915050919050565b61186b611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef906131c2565b60405180910390fd5b670de0b6b3a76400008161190c91906133fe565b60088190555050565b61191d611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a1906131c2565b60405180910390fd5b804710156119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613373565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a33573d6000803e3d6000fd5b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a65611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae9906131c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890613512565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600954600f5484611c3291906133fe565b611c3c919061346f565b905080915050919050565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061357e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a906135ea565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e119190612eef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613656565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef3906136c2565b60405180910390fd5b60008111611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f369061372e565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fe35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120e957600b60029054906101000a900460ff166120e8578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156120a857508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de9061379a565b60405180910390fd5b5b5b6120f383836121ce565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061219a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121b25750600b60019054906101000a900460ff16155b156121bc57600090505b6121c8848484846123cb565b50505050565b60006121d930610d55565b9050600060085482101590508080156122405750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122585750600b60009054906101000a900460ff165b80156122e957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122e75750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156123c55761231d30600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854611c55565b61234b600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660085461296f565b600047905060008111156123c357600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123c1573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156124255750805b156125d8576000806124368461183a565b915081846124449190613211565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124919190613211565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251f9190613245565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125bf9190612eef565b60405180910390a36125d18683612b55565b5050612969565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156126325750805b156127e657600061264283611c1e565b9050600081846126529190613211565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269f9190613211565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272d9190613245565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127cd9190612eef565b60405180910390a36127df8683612b55565b5050612968565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128319190613211565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128bf9190613245565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161295f9190612eef565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612991576129906137ba565b5b6040519080825280602002602001820160405280156129bf5781602001602082028036833780820191505090505b50905030816000815181106129d7576129d66137e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a80919061382d565b81600181518110612a9457612a936137e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42612afd9190613245565b6040518663ffffffff1660e01b8152600401612b1d959493929190613953565b600060405180830381600087803b158015612b3757600080fd5b505af1158015612b4b573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba09190613245565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c409190612eef565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c86578082015181840152602081019050612c6b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cae82612c4c565b612cb88185612c57565b9350612cc8818560208601612c68565b612cd181612c92565b840191505092915050565b60006020820190508181036000830152612cf68184612ca3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612d43612d3e612d3984612cfe565b612d1e565b612cfe565b9050919050565b6000612d5582612d28565b9050919050565b6000612d6782612d4a565b9050919050565b612d7781612d5c565b82525050565b6000602082019050612d926000830184612d6e565b92915050565b600080fd5b6000612da882612cfe565b9050919050565b612db881612d9d565b8114612dc357600080fd5b50565b600081359050612dd581612daf565b92915050565b6000819050919050565b612dee81612ddb565b8114612df957600080fd5b50565b600081359050612e0b81612de5565b92915050565b60008060408385031215612e2857612e27612d98565b5b6000612e3685828601612dc6565b9250506020612e4785828601612dfc565b9150509250929050565b60008115159050919050565b612e6681612e51565b82525050565b6000602082019050612e816000830184612e5d565b92915050565b612e9081612e51565b8114612e9b57600080fd5b50565b600081359050612ead81612e87565b92915050565b600060208284031215612ec957612ec8612d98565b5b6000612ed784828501612e9e565b91505092915050565b612ee981612ddb565b82525050565b6000602082019050612f046000830184612ee0565b92915050565b600080600060608486031215612f2357612f22612d98565b5b6000612f3186828701612dc6565b9350506020612f4286828701612dc6565b9250506040612f5386828701612dfc565b9150509250925092565b600060ff82169050919050565b612f7381612f5d565b82525050565b6000602082019050612f8e6000830184612f6a565b92915050565b600060208284031215612faa57612fa9612d98565b5b6000612fb884828501612dc6565b91505092915050565b612fca81612d9d565b82525050565b6000602082019050612fe56000830184612fc1565b92915050565b60006020828403121561300157613000612d98565b5b600061300f84828501612dfc565b91505092915050565b600061302382612d9d565b9050919050565b61303381613018565b811461303e57600080fd5b50565b6000813590506130508161302a565b92915050565b6000806040838503121561306d5761306c612d98565b5b600061307b85828601613041565b925050602061308c85828601612dfc565b9150509250929050565b600080604083850312156130ad576130ac612d98565b5b60006130bb85828601612dc6565b92505060206130cc85828601612dc6565b9150509250929050565b600080604083850312156130ed576130ec612d98565b5b60006130fb85828601612dc6565b925050602061310c85828601612e9e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061315d57607f821691505b6020821081036131705761316f613116565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ac602083612c57565b91506131b782613176565b602082019050919050565b600060208201905081810360008301526131db8161319f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061321c82612ddb565b915061322783612ddb565b925082820390508181111561323f5761323e6131e2565b5b92915050565b600061325082612ddb565b915061325b83612ddb565b9250828201905080821115613273576132726131e2565b5b92915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b60006132af601183612c57565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b6000815190506132f481612de5565b92915050565b6000602082840312156133105761330f612d98565b5b600061331e848285016132e5565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b600061335d600e83612c57565b915061336882613327565b602082019050919050565b6000602082019050818103600083015261338c81613350565b9050919050565b60006040820190506133a86000830185612fc1565b6133b56020830184612ee0565b9392505050565b6000815190506133cb81612e87565b92915050565b6000602082840312156133e7576133e6612d98565b5b60006133f5848285016133bc565b91505092915050565b600061340982612ddb565b915061341483612ddb565b925082820261342281612ddb565b91508282048414831517613439576134386131e2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061347a82612ddb565b915061348583612ddb565b92508261349557613494613440565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134fc602683612c57565b9150613507826134a0565b604082019050919050565b6000602082019050818103600083015261352b816134ef565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613568601e83612c57565b915061357382613532565b602082019050919050565b600060208201905081810360008301526135978161355b565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b60006135d4601b83612c57565b91506135df8261359e565b602082019050919050565b60006020820190508181036000830152613603816135c7565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613640601e83612c57565b915061364b8261360a565b602082019050919050565b6000602082019050818103600083015261366f81613633565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b60006136ac601c83612c57565b91506136b782613676565b602082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613718602083612c57565b9150613723826136e2565b602082019050919050565b600060208201905081810360008301526137478161370b565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613784601483612c57565b915061378f8261374e565b602082019050919050565b600060208201905081810360008301526137b381613777565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061382781612daf565b92915050565b60006020828403121561384357613842612d98565b5b600061385184828501613818565b91505092915050565b6000819050919050565b600061387f61387a6138758461385a565b612d1e565b612ddb565b9050919050565b61388f81613864565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138ca81612d9d565b82525050565b60006138dc83836138c1565b60208301905092915050565b6000602082019050919050565b600061390082613895565b61390a81856138a0565b9350613915836138b1565b8060005b8381101561394657815161392d88826138d0565b9750613938836138e8565b925050600181019050613919565b5085935050505092915050565b600060a0820190506139686000830188612ee0565b6139756020830187613886565b818103604083015261398781866138f5565b90506139966060830185612fc1565b6139a36080830184612ee0565b969550505050505056fea264697066735822122013041e21935d87070afc6dcb95e0d0c4d189aad23c935e35d200ef3f69f55d3864736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102345760003560e01c80638da5cb5b1161012e578063dd62ed3e116100ab578063f14210a61161006f578063f14210a61461085e578063f242ab4114610887578063f2fde38b146108b2578063f4b3dbc3146108db578063fe6f1b05146109185761023b565b8063dd62ed3e14610767578063ea5b9e85146107a4578063ec44acf2146107cd578063ed421429146107f8578063f097ea1a146108355761023b565b8063a457c2d7116100f2578063a457c2d714610670578063a9059cbb146106ad578063aacebbe3146106ea578063b0bc2a2d14610713578063bf56b3711461073c5761023b565b80638da5cb5b1461059f578063950eb5d5146105ca57806395d89b41146105f35780639e281a981461061e578063a2b8a947146106475761023b565b80635342acb4116101bc57806379777b4e1161018057806379777b4e146104dc5780637c6a9a9c14610507578063844af78e14610532578063879dd3c51461055d5780638a8c523c146105885761023b565b80635342acb4146103f7578063679a3c591461043457806370a082311461045d578063715018a61461049a57806375f0a874146104b15761023b565b806318160ddd1161020357806318160ddd146102fc5780631884f1e61461032757806323b872dd14610352578063313ce5671461038f57806339509351146103ba5761023b565b806306fdde03146102405780630758d9241461026b578063095ea7b3146102965780630a2d140c146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b50610255610943565b6040516102629190612cdc565b60405180910390f35b34801561027757600080fd5b506102806109d5565b60405161028d9190612d7d565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b89190612e11565b6109fb565b6040516102ca9190612e6c565b60405180910390f35b3480156102df57600080fd5b506102fa60048036038101906102f59190612eb3565b610a19565b005b34801561030857600080fd5b50610311610acb565b60405161031e9190612eef565b60405180910390f35b34801561033357600080fd5b5061033c610ad5565b6040516103499190612eef565b60405180910390f35b34801561035e57600080fd5b5061037960048036038101906103749190612f0a565b610adb565b6040516103869190612e6c565b60405180910390f35b34801561039b57600080fd5b506103a4610b93565b6040516103b19190612f79565b60405180910390f35b3480156103c657600080fd5b506103e160048036038101906103dc9190612e11565b610baa565b6040516103ee9190612e6c565b60405180910390f35b34801561040357600080fd5b5061041e60048036038101906104199190612f94565b610c56565b60405161042b9190612e6c565b60405180910390f35b34801561044057600080fd5b5061045b60048036038101906104569190612f94565b610c76565b005b34801561046957600080fd5b50610484600480360381019061047f9190612f94565b610d55565b6040516104919190612eef565b60405180910390f35b3480156104a657600080fd5b506104af610d9e565b005b3480156104bd57600080fd5b506104c6610ef1565b6040516104d39190612fd0565b60405180910390f35b3480156104e857600080fd5b506104f1610f17565b6040516104fe9190612e6c565b60405180910390f35b34801561051357600080fd5b5061051c610f2a565b6040516105299190612eef565b60405180910390f35b34801561053e57600080fd5b50610547610f30565b6040516105549190612eef565b60405180910390f35b34801561056957600080fd5b50610572610f36565b60405161057f9190612e6c565b60405180910390f35b34801561059457600080fd5b5061059d610f49565b005b3480156105ab57600080fd5b506105b4611088565b6040516105c19190612fd0565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec9190612feb565b6110b1565b005b3480156105ff57600080fd5b50610608611150565b6040516106159190612cdc565b60405180910390f35b34801561062a57600080fd5b5061064560048036038101906106409190613056565b6111e2565b005b34801561065357600080fd5b5061066e60048036038101906106699190612feb565b6113b6565b005b34801561067c57600080fd5b5061069760048036038101906106929190612e11565b611455565b6040516106a49190612e6c565b60405180910390f35b3480156106b957600080fd5b506106d460048036038101906106cf9190612e11565b611501565b6040516106e19190612e6c565b60405180910390f35b3480156106f657600080fd5b50610711600480360381019061070c9190612f94565b61151f565b005b34801561071f57600080fd5b5061073a60048036038101906107359190612eb3565b6115f8565b005b34801561074857600080fd5b506107516116aa565b60405161075e9190612eef565b60405180910390f35b34801561077357600080fd5b5061078e60048036038101906107899190613096565b6116b0565b60405161079b9190612eef565b60405180910390f35b3480156107b057600080fd5b506107cb60048036038101906107c691906130d6565b611737565b005b3480156107d957600080fd5b506107e2611827565b6040516107ef9190612e6c565b60405180910390f35b34801561080457600080fd5b5061081f600480360381019061081a9190612feb565b61183a565b60405161082c9190612eef565b60405180910390f35b34801561084157600080fd5b5061085c60048036038101906108579190612feb565b611863565b005b34801561086a57600080fd5b5061088560048036038101906108809190612feb565b611915565b005b34801561089357600080fd5b5061089c611a37565b6040516108a99190612fd0565b60405180910390f35b3480156108be57600080fd5b506108d960048036038101906108d49190612f94565b611a5d565b005b3480156108e757600080fd5b5061090260048036038101906108fd9190612feb565b611c1e565b60405161090f9190612eef565b60405180910390f35b34801561092457600080fd5b5061092d611c47565b60405161093a9190612eef565b60405180910390f35b60606001805461095290613145565b80601f016020809104026020016040519081016040528092919081815260200182805461097e90613145565b80156109cb5780601f106109a0576101008083540402835291602001916109cb565b820191906000526020600020905b8154815290600101906020018083116109ae57829003601f168201915b5050505050905090565b600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610a0f610a08611c4d565b8484611c55565b6001905092915050565b610a21611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aa5906131c2565b60405180910390fd5b80600b60006101000a81548160ff02191690831515021790555050565b6000600454905090565b60085481565b6000610ae8848484611e1e565b610b8884610af4611c4d565b84600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b3e611c4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b839190613211565b611c55565b600190509392505050565b6000600360009054906101000a900460ff16905090565b6000610c4c610bb7611c4d565b848460066000610bc5611c4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c479190613245565b611c55565b6001905092915050565b60076020528060005260406000206000915054906101000a900460ff1681565b610c7e611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d02906131c2565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610d51573d6000803e3d6000fd5b5050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610da6611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2a906131c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60009054906101000a900460ff1681565b600e5481565b600f5481565b600b60019054906101000a900460ff1681565b610f51611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd5906131c2565b60405180910390fd5b600b60029054906101000a900460ff161561102e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611025906132c5565b60405180910390fd5b6001600b60026101000a81548160ff0219169083151502179055506001600b60016101000a81548160ff0219169083151502179055506001600b60006101000a81548160ff02191690831515021790555042600a81905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6110b9611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113d906131c2565b60405180910390fd5b80600e8190555050565b60606002805461115f90613145565b80601f016020809104026020016040519081016040528092919081815260200182805461118b90613145565b80156111d85780601f106111ad576101008083540402835291602001916111d8565b820191906000526020600020905b8154815290600101906020018083116111bb57829003601f168201915b5050505050905090565b6111ea611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126e906131c2565b60405180910390fd5b808273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112b19190612fd0565b602060405180830381865afa1580156112ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f291906132fa565b1015611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132a90613373565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161136e929190613393565b6020604051808303816000875af115801561138d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113b191906133d1565b505050565b6113be611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461144b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611442906131c2565b60405180910390fd5b80600f8190555050565b60006114f7611462611c4d565b848460066000611470611c4d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114f29190613211565b611c55565b6001905092915050565b600061151561150e611c4d565b8484611e1e565b6001905092915050565b611527611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab906131c2565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611600611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461168d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611684906131c2565b60405180910390fd5b80600b60016101000a81548160ff02191690831515021790555050565b600a5481565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61173f611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c3906131c2565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600b60029054906101000a900460ff1681565b600080600954600e548461184e91906133fe565b611858919061346f565b905080915050919050565b61186b611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ef906131c2565b60405180910390fd5b670de0b6b3a76400008161190c91906133fe565b60088190555050565b61191d611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a1906131c2565b60405180910390fd5b804710156119ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e490613373565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611a33573d6000803e3d6000fd5b5050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611a65611c4d565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae9906131c2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5890613512565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600954600f5484611c3291906133fe565b611c3c919061346f565b905080915050919050565b60095481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbb9061357e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2a906135ea565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e119190612eef565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8490613656565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef3906136c2565b60405180910390fd5b60008111611f3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f369061372e565b60405180910390fd5b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fe35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156120e957600b60029054906101000a900460ff166120e8578273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141580156120a857508173ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b6120e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120de9061379a565b60405180910390fd5b5b5b6120f383836121ce565b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061219a5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806121b25750600b60019054906101000a900460ff16155b156121bc57600090505b6121c8848484846123cb565b50505050565b60006121d930610d55565b9050600060085482101590508080156122405750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156122585750600b60009054906101000a900460ff165b80156122e957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122e75750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b155b156123c55761231d30600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854611c55565b61234b600b60039054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660085461296f565b600047905060008111156123c357600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156123c1573d6000803e3d6000fd5b505b505b50505050565b8373ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156124255750805b156125d8576000806124368461183a565b915081846124449190613211565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124919190613211565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461251f9190613245565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125bf9190612eef565b60405180910390a36125d18683612b55565b5050612969565b8273ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480156126325750805b156127e657600061264283611c1e565b9050600081846126529190613211565b905083600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461269f9190613211565b600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461272d9190613245565b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127cd9190612eef565b60405180910390a36127df8683612b55565b5050612968565b81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128319190613211565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128bf9190613245565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161295f9190612eef565b60405180910390a35b5b50505050565b60008290506000600267ffffffffffffffff811115612991576129906137ba565b5b6040519080825280602002602001820160405280156129bf5781602001602082028036833780820191505090505b50905030816000815181106129d7576129d66137e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a80919061382d565b81600181518110612a9457612a936137e9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1663791ac947846000843061012c42612afd9190613245565b6040518663ffffffff1660e01b8152600401612b1d959493929190613953565b600060405180830381600087803b158015612b3757600080fd5b505af1158015612b4b573d6000803e3d6000fd5b5050505050505050565b80600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ba09190613245565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612c409190612eef565b60405180910390a35050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c86578082015181840152602081019050612c6b565b60008484015250505050565b6000601f19601f8301169050919050565b6000612cae82612c4c565b612cb88185612c57565b9350612cc8818560208601612c68565b612cd181612c92565b840191505092915050565b60006020820190508181036000830152612cf68184612ca3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612d43612d3e612d3984612cfe565b612d1e565b612cfe565b9050919050565b6000612d5582612d28565b9050919050565b6000612d6782612d4a565b9050919050565b612d7781612d5c565b82525050565b6000602082019050612d926000830184612d6e565b92915050565b600080fd5b6000612da882612cfe565b9050919050565b612db881612d9d565b8114612dc357600080fd5b50565b600081359050612dd581612daf565b92915050565b6000819050919050565b612dee81612ddb565b8114612df957600080fd5b50565b600081359050612e0b81612de5565b92915050565b60008060408385031215612e2857612e27612d98565b5b6000612e3685828601612dc6565b9250506020612e4785828601612dfc565b9150509250929050565b60008115159050919050565b612e6681612e51565b82525050565b6000602082019050612e816000830184612e5d565b92915050565b612e9081612e51565b8114612e9b57600080fd5b50565b600081359050612ead81612e87565b92915050565b600060208284031215612ec957612ec8612d98565b5b6000612ed784828501612e9e565b91505092915050565b612ee981612ddb565b82525050565b6000602082019050612f046000830184612ee0565b92915050565b600080600060608486031215612f2357612f22612d98565b5b6000612f3186828701612dc6565b9350506020612f4286828701612dc6565b9250506040612f5386828701612dfc565b9150509250925092565b600060ff82169050919050565b612f7381612f5d565b82525050565b6000602082019050612f8e6000830184612f6a565b92915050565b600060208284031215612faa57612fa9612d98565b5b6000612fb884828501612dc6565b91505092915050565b612fca81612d9d565b82525050565b6000602082019050612fe56000830184612fc1565b92915050565b60006020828403121561300157613000612d98565b5b600061300f84828501612dfc565b91505092915050565b600061302382612d9d565b9050919050565b61303381613018565b811461303e57600080fd5b50565b6000813590506130508161302a565b92915050565b6000806040838503121561306d5761306c612d98565b5b600061307b85828601613041565b925050602061308c85828601612dfc565b9150509250929050565b600080604083850312156130ad576130ac612d98565b5b60006130bb85828601612dc6565b92505060206130cc85828601612dc6565b9150509250929050565b600080604083850312156130ed576130ec612d98565b5b60006130fb85828601612dc6565b925050602061310c85828601612e9e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061315d57607f821691505b6020821081036131705761316f613116565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131ac602083612c57565b91506131b782613176565b602082019050919050565b600060208201905081810360008301526131db8161319f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061321c82612ddb565b915061322783612ddb565b925082820390508181111561323f5761323e6131e2565b5b92915050565b600061325082612ddb565b915061325b83612ddb565b9250828201905080821115613273576132726131e2565b5b92915050565b7f3a20616c726561647920656e61626c6564000000000000000000000000000000600082015250565b60006132af601183612c57565b91506132ba82613279565b602082019050919050565b600060208201905081810360008301526132de816132a2565b9050919050565b6000815190506132f481612de5565b92915050565b6000602082840312156133105761330f612d98565b5b600061331e848285016132e5565b91505092915050565b7f496e76616c696420416d6f756e74000000000000000000000000000000000000600082015250565b600061335d600e83612c57565b915061336882613327565b602082019050919050565b6000602082019050818103600083015261338c81613350565b9050919050565b60006040820190506133a86000830185612fc1565b6133b56020830184612ee0565b9392505050565b6000815190506133cb81612e87565b92915050565b6000602082840312156133e7576133e6612d98565b5b60006133f5848285016133bc565b91505092915050565b600061340982612ddb565b915061341483612ddb565b925082820261342281612ddb565b91508282048414831517613439576134386131e2565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061347a82612ddb565b915061348583612ddb565b92508261349557613494613440565b5b828204905092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134fc602683612c57565b9150613507826134a0565b604082019050919050565b6000602082019050818103600083015261352b816134ef565b9050919050565b7f20617070726f76652066726f6d20746865207a65726f20616464726573730000600082015250565b6000613568601e83612c57565b915061357382613532565b602082019050919050565b600060208201905081810360008301526135978161355b565b9050919050565b7f617070726f766520746f20746865207a65726f20616464726573730000000000600082015250565b60006135d4601b83612c57565b91506135df8261359e565b602082019050919050565b60006020820190508181036000830152613603816135c7565b9050919050565b7f7472616e736665722066726f6d20746865207a65726f20616464726573730000600082015250565b6000613640601e83612c57565b915061364b8261360a565b602082019050919050565b6000602082019050818103600083015261366f81613633565b9050919050565b7f7472616e7366657220746f20746865207a65726f206164647265737300000000600082015250565b60006136ac601c83612c57565b91506136b782613676565b602082019050919050565b600060208201905081810360008301526136db8161369f565b9050919050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f600082015250565b6000613718602083612c57565b9150613723826136e2565b602082019050919050565b600060208201905081810360008301526137478161370b565b9050919050565b7f3a2074726164696e672069732064697361626c65000000000000000000000000600082015250565b6000613784601483612c57565b915061378f8261374e565b602082019050919050565b600060208201905081810360008301526137b381613777565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061382781612daf565b92915050565b60006020828403121561384357613842612d98565b5b600061385184828501613818565b91505092915050565b6000819050919050565b600061387f61387a6138758461385a565b612d1e565b612ddb565b9050919050565b61388f81613864565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138ca81612d9d565b82525050565b60006138dc83836138c1565b60208301905092915050565b6000602082019050919050565b600061390082613895565b61390a81856138a0565b9350613915836138b1565b8060005b8381101561394657815161392d88826138d0565b9750613938836138e8565b925050600181019050613919565b5085935050505092915050565b600060a0820190506139686000830188612ee0565b6139756020830187613886565b818103604083015261398781866138f5565b90506139966060830185612fc1565b6139a36080830184612ee0565b969550505050505056fea264697066735822122013041e21935d87070afc6dcb95e0d0c4d189aad23c935e35d200ef3f69f55d3864736f6c63430008120033

Deployed Bytecode Sourcemap

3356:10137:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5324:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4182:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6235:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7966:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5601:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3762:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6436:350;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5510:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6794:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3704:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8603:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5709:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2903:157;;;;;;;;;;;;;:::i;:::-;;4297:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3965:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4369:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4418:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4061:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8356:239;;;;;;;;;;;;;:::i;:::-;;2689:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7702:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5415:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12403:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7833:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7101:307;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5836:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8196:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8089:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3931:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6043:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7416:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4111:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8740:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7581:113;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12165:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4240:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3068:281;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8924:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3889:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5324:83;5361:13;5394:5;5387:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5324:83;:::o;4182:27::-;;;;;;;;;;;;;:::o;6235:193::-;6337:4;6359:39;6368:12;:10;:12::i;:::-;6382:7;6391:6;6359:8;:39::i;:::-;6416:4;6409:11;;6235:193;;;;:::o;7966:115::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8067:6:::1;8038:26;;:35;;;;;;;;;;;;;;;;;;7966:115:::0;:::o;5601:100::-;5654:7;5681:12;;5674:19;;5601:100;:::o;3762:58::-;;;;:::o;6436:350::-;6568:4;6585:36;6595:6;6603:9;6614:6;6585:9;:36::i;:::-;6632:124;6655:6;6676:12;:10;:12::i;:::-;6739:6;6703:11;:19;6715:6;6703:19;;;;;;;;;;;;;;;:33;6723:12;:10;:12::i;:::-;6703:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6632:8;:124::i;:::-;6774:4;6767:11;;6436:350;;;;;:::o;5510:83::-;5551:5;5576:9;;;;;;;;;;;5569:16;;5510:83;:::o;6794:299::-;6909:4;6931:132;6954:12;:10;:12::i;:::-;6981:7;7041:10;7003:11;:25;7015:12;:10;:12::i;:::-;7003:25;;;;;;;;;;;;;;;:34;7029:7;7003:34;;;;;;;;;;;;;;;;:49;;;;:::i;:::-;6931:8;:132::i;:::-;7081:4;7074:11;;6794:299;;;;:::o;3704:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;8603:129::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8682:9:::1;8674:27;;:50;8702:21;8674:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;8603:129:::0;:::o;5709:119::-;5775:7;5802:9;:18;5812:7;5802:18;;;;;;;;;;;;;;;;5795:25;;5709:119;;;:::o;2903:157::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3010:1:::1;2973:40;;2994:6;::::0;::::1;;;;;;;;2973:40;;;;;;;;;;;;3049:1;3024:6:::0;::::1;:28;;;;;;;;;;;;;;;;;;2903:157::o:0;4297:30::-;;;;;;;;;;;;;:::o;3965:38::-;;;;;;;;;;;;;:::o;4369:40::-;;;;:::o;4418:41::-;;;;:::o;4061:22::-;;;;;;;;;;;;;:::o;8356:239::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8420:7:::1;;;;;;;;;;;8419:8;8411:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8472:4;8462:7;;:14;;;;;;;;;;;;;;;;;;8500:4;8487:10;;:17;;;;;;;;;;;;;;;;;;8544:4;8515:26;;:33;;;;;;;;;;;;;;;;;;8572:15;8559:10;:28;;;;8356:239::o:0;2689:79::-;2727:7;2754:6;;;;;;;;;;;2747:13;;2689:79;:::o;7702:123::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7804:13:::1;7781:20;:36;;;;7702:123:::0;:::o;5415:87::-;5454:13;5487:7;5480:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5415:87;:::o;12403:209::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12531:7:::1;12496:6;:16;;;12521:4;12496:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:42;;12488:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12568:6;:15;;;12584:10;12596:7;12568:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12403:209:::0;;:::o;7833:125::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7937:13:::1;7913:21;:37;;;;7833:125:::0;:::o;7101:307::-;7221:4;7243:135;7266:12;:10;:12::i;:::-;7293:7;7352:15;7315:11;:25;7327:12;:10;:12::i;:::-;7315:25;;;;;;;;;;;;;;;:34;7341:7;7315:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;7243:8;:135::i;:::-;7396:4;7389:11;;7101:307;;;;:::o;5836:199::-;5941:4;5963:42;5973:12;:10;:12::i;:::-;5987:9;5998:6;5963:9;:42::i;:::-;6023:4;6016:11;;5836:199;;;;:::o;8196:152::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8324:16:::1;8306:15;;:34;;;;;;;;;;;;;;;;;;8196:152:::0;:::o;8089:99::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8174:6:::1;8161:10;;:19;;;;;;;;;;;;;;;;;;8089:99:::0;:::o;3931:25::-;;;;:::o;6043:184::-;6160:7;6192:11;:18;6204:5;6192:18;;;;;;;;;;;;;;;:27;6211:7;6192:27;;;;;;;;;;;;;;;;6185:34;;6043:184;;;;:::o;7416:157::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7560:5:::1;7531:17;:26;7549:7;7531:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;7416:157:::0;;:::o;4111:19::-;;;;;;;;;;;;;:::o;8740:176::-;8803:7;8823:11;8872:14;;8847:20;;8838:6;:29;;;;:::i;:::-;8837:50;;;;:::i;:::-;8823:64;;8905:3;8898:10;;;8740:176;;;:::o;7581:113::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7682:4:::1;7672:7;:14;;;;:::i;:::-;7655;:31;;;;7581:113:::0;:::o;12165:183::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12266:7:::1;12241:21;:32;;12233:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12311:10;12303:28;;:37;12332:7;12303:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12165:183:::0;:::o;4240:22::-;;;;;;;;;;;;;:::o;3068:281::-;2826:12;:10;:12::i;:::-;2816:22;;:6;;;;;;;;;;:22;;;2808:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3191:1:::1;3171:22;;:8;:22;;::::0;3149:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3304:8;3275:38;;3296:6;::::0;::::1;;;;;;;;3275:38;;;;;;;;;;;;3333:8;3324:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3068:281:::0;:::o;8924:178::-;8988:7;9008:11;9058:14;;9032:21;;9023:6;:30;;;;:::i;:::-;9022:51;;;;:::i;:::-;9008:65;;9091:3;9084:10;;;8924:178;;;:::o;3889:35::-;;;;:::o;2025:115::-;2078:15;2121:10;2106:26;;2025:115;:::o;9110:358::-;9254:1;9237:19;;:5;:19;;;9229:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9329:1;9310:21;;:7;:21;;;9302:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9406:6;9376:11;:18;9388:5;9376:18;;;;;;;;;;;;;;;:27;9395:7;9376:27;;;;;;;;;;;;;;;:36;;;;9444:7;9428:32;;9437:5;9428:32;;;9453:6;9428:32;;;;;;:::i;:::-;;;;;;;;9110:358;;;:::o;9476:1121::-;9614:1;9598:18;;:4;:18;;;9590:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;9684:1;9670:16;;:2;:16;;;9662:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;9747:1;9738:6;:10;9730:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;9803:17;:23;9821:4;9803:23;;;;;;;;;;;;;;;;;;;;;;;;;9802:24;:50;;;;;9831:17;:21;9849:2;9831:21;;;;;;;;;;;;;;;;;;;;;;;;;9830:22;9802:50;9798:301;;;9918:7;;;;;;;;;;;9913:175;;9987:4;9976:15;;:7;;;;;;;;;;;:15;;;;:32;;;;;10006:2;9995:13;;:7;;;;;;;;;;;:13;;;;9976:32;9946:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;9913:175;9798:301;10140:30;10161:4;10167:2;10140:20;:30::i;:::-;10244:12;10259:4;10244:19;;10363:17;:23;10381:4;10363:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;10390:17;:21;10408:2;10390:21;;;;;;;;;;;;;;;;;;;;;;;;;10363:48;:63;;;;10416:10;;;;;;;;;;;10415:11;10363:63;10359:111;;;10453:5;10443:15;;10359:111;10548:41;10563:4;10569:2;10573:6;10581:7;10548:14;:41::i;:::-;9579:1018;9476:1121;;;:::o;12620:870::-;12695:28;12726:24;12744:4;12726:9;:24::i;:::-;12695:55;;12763:15;12805:14;;12781:20;:38;;12763:56;;12850:10;:42;;;;;12885:7;;;;;;;;;;;12877:15;;:4;:15;;;;12850:42;:85;;;;;12909:26;;;;;;;;;;;12850:85;:143;;;;;12970:4;12954:21;;:4;:21;;;:38;;;;;12985:7;;;;;;;;;;;12979:13;;:2;:13;;;12954:38;12952:41;12850:143;12832:651;;;13068:59;13085:4;13100:9;;;;;;;;;;;13112:14;;13068:8;:59::i;:::-;13194:58;13225:9;;;;;;;;;;;13237:14;;13194:22;:58::i;:::-;13267:23;13293:21;13267:47;;13401:1;13383:15;:19;13379:92;;;13429:15;;;;;;;;;;;13421:33;;:50;13455:15;13421:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13379:92;13020:463;12832:651;12684:806;;12620:870;;:::o;10679:1232::-;10845:6;10834:17;;:7;;;;;;;;;;;:17;;;:28;;;;;10855:7;10834:28;10830:1074;;;10879:14;10908:23;10955:24;10972:6;10955:16;:24::i;:::-;10946:33;;11021:6;11012;:15;;;;:::i;:::-;10994:33;;11084:6;11064:9;:17;11074:6;11064:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11044:9;:17;11054:6;11044:17;;;;;;;;;;;;;;;:46;;;;11151:15;11128:9;:20;11138:9;11128:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;11105:9;:20;11115:9;11105:20;;;;;;;;;;;;;;;:61;;;;11203:9;11186:44;;11195:6;11186:44;;;11214:15;11186:44;;;;;;:::i;:::-;;;;;;;;11247:28;11260:6;11268;11247:12;:28::i;:::-;10864:423;;10830:1074;;;11308:9;11297:20;;:7;;;;;;;;;;;:20;;;:31;;;;;11321:7;11297:31;11293:611;;;11345:14;11362:25;11380:6;11362:17;:25::i;:::-;11345:42;;11402:23;11437:6;11428;:15;;;;:::i;:::-;11402:41;;11498:6;11478:9;:17;11488:6;11478:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11458:9;:17;11468:6;11458:17;;;;;;;;;;;;;;;:46;;;;11565:15;11542:9;:20;11552:9;11542:20;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;11519:9;:20;11529:9;11519:20;;;;;;;;;;;;;;;:61;;;;11617:9;11600:44;;11609:6;11600:44;;;11628:15;11600:44;;;;;;:::i;:::-;;;;;;;;11661:28;11674:6;11682;11661:12;:28::i;:::-;11330:371;;11293:611;;;11762:6;11742:9;:17;11752:6;11742:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;11722:9;:17;11732:6;11722:17;;;;;;;;;;;;;;;:46;;;;11830:6;11806:9;:20;11816:9;11806:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;11783:9;:20;11793:9;11783:20;;;;;;;;;;;;;;;:54;;;;11874:9;11857:35;;11866:6;11857:35;;;11885:6;11857:35;;;;;;:::i;:::-;;;;;;;;11293:611;10830:1074;10679:1232;;;;:::o;13550:603::-;13654:20;13688:13;13654:48;;13771:21;13809:1;13795:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13771:40;;13840:4;13822;13827:1;13822:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13866:9;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13856:4;13861:1;13856:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;13921:9;:60;;;13996:11;14022:1;14066:4;14093;14131:3;14113:15;:21;;;;:::i;:::-;13921:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13643:510;;13550:603;;:::o;11919:200::-;12047:6;12019:9;:24;12037:4;12019:24;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;11992:9;:24;12010:4;11992:24;;;;;;;;;;;;;;;:62;;;;12097:4;12072:39;;12081:6;12072:39;;;12104:6;12072:39;;;;;;:::i;:::-;;;;;;;;11919:200;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:126::-;1386:7;1426:42;1419:5;1415:54;1404:65;;1349:126;;;:::o;1481:60::-;1509:3;1530:5;1523:12;;1481:60;;;:::o;1547:142::-;1597:9;1630:53;1648:34;1657:24;1675:5;1657:24;:::i;:::-;1648:34;:::i;:::-;1630:53;:::i;:::-;1617:66;;1547:142;;;:::o;1695:126::-;1745:9;1778:37;1809:5;1778:37;:::i;:::-;1765:50;;1695:126;;;:::o;1827:144::-;1895:9;1928:37;1959:5;1928:37;:::i;:::-;1915:50;;1827:144;;;:::o;1977:167::-;2082:55;2131:5;2082:55;:::i;:::-;2077:3;2070:68;1977:167;;:::o;2150:258::-;2261:4;2299:2;2288:9;2284:18;2276:26;;2312:89;2398:1;2387:9;2383:17;2374:6;2312:89;:::i;:::-;2150:258;;;;:::o;2495:117::-;2604:1;2601;2594:12;2741:96;2778:7;2807:24;2825:5;2807:24;:::i;:::-;2796:35;;2741:96;;;:::o;2843:122::-;2916:24;2934:5;2916:24;:::i;:::-;2909:5;2906:35;2896:63;;2955:1;2952;2945:12;2896:63;2843:122;:::o;2971:139::-;3017:5;3055:6;3042:20;3033:29;;3071:33;3098:5;3071:33;:::i;:::-;2971:139;;;;:::o;3116:77::-;3153:7;3182:5;3171:16;;3116:77;;;:::o;3199:122::-;3272:24;3290:5;3272:24;:::i;:::-;3265:5;3262:35;3252:63;;3311:1;3308;3301:12;3252:63;3199:122;:::o;3327:139::-;3373:5;3411:6;3398:20;3389:29;;3427:33;3454:5;3427:33;:::i;:::-;3327:139;;;;:::o;3472:474::-;3540:6;3548;3597:2;3585:9;3576:7;3572:23;3568:32;3565:119;;;3603:79;;:::i;:::-;3565:119;3723:1;3748:53;3793:7;3784:6;3773:9;3769:22;3748:53;:::i;:::-;3738:63;;3694:117;3850:2;3876:53;3921:7;3912:6;3901:9;3897:22;3876:53;:::i;:::-;3866:63;;3821:118;3472:474;;;;;:::o;3952:90::-;3986:7;4029:5;4022:13;4015:21;4004:32;;3952:90;;;:::o;4048:109::-;4129:21;4144:5;4129:21;:::i;:::-;4124:3;4117:34;4048:109;;:::o;4163:210::-;4250:4;4288:2;4277:9;4273:18;4265:26;;4301:65;4363:1;4352:9;4348:17;4339:6;4301:65;:::i;:::-;4163:210;;;;:::o;4379:116::-;4449:21;4464:5;4449:21;:::i;:::-;4442:5;4439:32;4429:60;;4485:1;4482;4475:12;4429:60;4379:116;:::o;4501:133::-;4544:5;4582:6;4569:20;4560:29;;4598:30;4622:5;4598:30;:::i;:::-;4501:133;;;;:::o;4640:323::-;4696:6;4745:2;4733:9;4724:7;4720:23;4716:32;4713:119;;;4751:79;;:::i;:::-;4713:119;4871:1;4896:50;4938:7;4929:6;4918:9;4914:22;4896:50;:::i;:::-;4886:60;;4842:114;4640:323;;;;:::o;4969:118::-;5056:24;5074:5;5056:24;:::i;:::-;5051:3;5044:37;4969:118;;:::o;5093:222::-;5186:4;5224:2;5213:9;5209:18;5201:26;;5237:71;5305:1;5294:9;5290:17;5281:6;5237:71;:::i;:::-;5093:222;;;;:::o;5321:619::-;5398:6;5406;5414;5463:2;5451:9;5442:7;5438:23;5434:32;5431:119;;;5469:79;;:::i;:::-;5431:119;5589:1;5614:53;5659:7;5650:6;5639:9;5635:22;5614:53;:::i;:::-;5604:63;;5560:117;5716:2;5742:53;5787:7;5778:6;5767:9;5763:22;5742:53;:::i;:::-;5732:63;;5687:118;5844:2;5870:53;5915:7;5906:6;5895:9;5891:22;5870:53;:::i;:::-;5860:63;;5815:118;5321:619;;;;;:::o;5946:86::-;5981:7;6021:4;6014:5;6010:16;5999:27;;5946:86;;;:::o;6038:112::-;6121:22;6137:5;6121:22;:::i;:::-;6116:3;6109:35;6038:112;;:::o;6156:214::-;6245:4;6283:2;6272:9;6268:18;6260:26;;6296:67;6360:1;6349:9;6345:17;6336:6;6296:67;:::i;:::-;6156:214;;;;:::o;6376:329::-;6435:6;6484:2;6472:9;6463:7;6459:23;6455:32;6452:119;;;6490:79;;:::i;:::-;6452:119;6610:1;6635:53;6680:7;6671:6;6660:9;6656:22;6635:53;:::i;:::-;6625:63;;6581:117;6376:329;;;;:::o;6711:118::-;6798:24;6816:5;6798:24;:::i;:::-;6793:3;6786:37;6711:118;;:::o;6835:222::-;6928:4;6966:2;6955:9;6951:18;6943:26;;6979:71;7047:1;7036:9;7032:17;7023:6;6979:71;:::i;:::-;6835:222;;;;:::o;7063:329::-;7122:6;7171:2;7159:9;7150:7;7146:23;7142:32;7139:119;;;7177:79;;:::i;:::-;7139:119;7297:1;7322:53;7367:7;7358:6;7347:9;7343:22;7322:53;:::i;:::-;7312:63;;7268:117;7063:329;;;;:::o;7398:109::-;7448:7;7477:24;7495:5;7477:24;:::i;:::-;7466:35;;7398:109;;;:::o;7513:148::-;7599:37;7630:5;7599:37;:::i;:::-;7592:5;7589:48;7579:76;;7651:1;7648;7641:12;7579:76;7513:148;:::o;7667:165::-;7726:5;7764:6;7751:20;7742:29;;7780:46;7820:5;7780:46;:::i;:::-;7667:165;;;;:::o;7838:500::-;7919:6;7927;7976:2;7964:9;7955:7;7951:23;7947:32;7944:119;;;7982:79;;:::i;:::-;7944:119;8102:1;8127:66;8185:7;8176:6;8165:9;8161:22;8127:66;:::i;:::-;8117:76;;8073:130;8242:2;8268:53;8313:7;8304:6;8293:9;8289:22;8268:53;:::i;:::-;8258:63;;8213:118;7838:500;;;;;:::o;8344:474::-;8412:6;8420;8469:2;8457:9;8448:7;8444:23;8440:32;8437:119;;;8475:79;;:::i;:::-;8437:119;8595:1;8620:53;8665:7;8656:6;8645:9;8641:22;8620:53;:::i;:::-;8610:63;;8566:117;8722:2;8748:53;8793:7;8784:6;8773:9;8769:22;8748:53;:::i;:::-;8738:63;;8693:118;8344:474;;;;;:::o;8824:468::-;8889:6;8897;8946:2;8934:9;8925:7;8921:23;8917:32;8914:119;;;8952:79;;:::i;:::-;8914:119;9072:1;9097:53;9142:7;9133:6;9122:9;9118:22;9097:53;:::i;:::-;9087:63;;9043:117;9199:2;9225:50;9267:7;9258:6;9247:9;9243:22;9225:50;:::i;:::-;9215:60;;9170:115;8824:468;;;;;:::o;9298:180::-;9346:77;9343:1;9336:88;9443:4;9440:1;9433:15;9467:4;9464:1;9457:15;9484:320;9528:6;9565:1;9559:4;9555:12;9545:22;;9612:1;9606:4;9602:12;9633:18;9623:81;;9689:4;9681:6;9677:17;9667:27;;9623:81;9751:2;9743:6;9740:14;9720:18;9717:38;9714:84;;9770:18;;:::i;:::-;9714:84;9535:269;9484:320;;;:::o;9810:182::-;9950:34;9946:1;9938:6;9934:14;9927:58;9810:182;:::o;9998:366::-;10140:3;10161:67;10225:2;10220:3;10161:67;:::i;:::-;10154:74;;10237:93;10326:3;10237:93;:::i;:::-;10355:2;10350:3;10346:12;10339:19;;9998:366;;;:::o;10370:419::-;10536:4;10574:2;10563:9;10559:18;10551:26;;10623:9;10617:4;10613:20;10609:1;10598:9;10594:17;10587:47;10651:131;10777:4;10651:131;:::i;:::-;10643:139;;10370:419;;;:::o;10795:180::-;10843:77;10840:1;10833:88;10940:4;10937:1;10930:15;10964:4;10961:1;10954:15;10981:194;11021:4;11041:20;11059:1;11041:20;:::i;:::-;11036:25;;11075:20;11093:1;11075:20;:::i;:::-;11070:25;;11119:1;11116;11112:9;11104:17;;11143:1;11137:4;11134:11;11131:37;;;11148:18;;:::i;:::-;11131:37;10981:194;;;;:::o;11181:191::-;11221:3;11240:20;11258:1;11240:20;:::i;:::-;11235:25;;11274:20;11292:1;11274:20;:::i;:::-;11269:25;;11317:1;11314;11310:9;11303:16;;11338:3;11335:1;11332:10;11329:36;;;11345:18;;:::i;:::-;11329:36;11181:191;;;;:::o;11378:167::-;11518:19;11514:1;11506:6;11502:14;11495:43;11378:167;:::o;11551:366::-;11693:3;11714:67;11778:2;11773:3;11714:67;:::i;:::-;11707:74;;11790:93;11879:3;11790:93;:::i;:::-;11908:2;11903:3;11899:12;11892:19;;11551:366;;;:::o;11923:419::-;12089:4;12127:2;12116:9;12112:18;12104:26;;12176:9;12170:4;12166:20;12162:1;12151:9;12147:17;12140:47;12204:131;12330:4;12204:131;:::i;:::-;12196:139;;11923:419;;;:::o;12348:143::-;12405:5;12436:6;12430:13;12421:22;;12452:33;12479:5;12452:33;:::i;:::-;12348:143;;;;:::o;12497:351::-;12567:6;12616:2;12604:9;12595:7;12591:23;12587:32;12584:119;;;12622:79;;:::i;:::-;12584:119;12742:1;12767:64;12823:7;12814:6;12803:9;12799:22;12767:64;:::i;:::-;12757:74;;12713:128;12497:351;;;;:::o;12854:164::-;12994:16;12990:1;12982:6;12978:14;12971:40;12854:164;:::o;13024:366::-;13166:3;13187:67;13251:2;13246:3;13187:67;:::i;:::-;13180:74;;13263:93;13352:3;13263:93;:::i;:::-;13381:2;13376:3;13372:12;13365:19;;13024:366;;;:::o;13396:419::-;13562:4;13600:2;13589:9;13585:18;13577:26;;13649:9;13643:4;13639:20;13635:1;13624:9;13620:17;13613:47;13677:131;13803:4;13677:131;:::i;:::-;13669:139;;13396:419;;;:::o;13821:332::-;13942:4;13980:2;13969:9;13965:18;13957:26;;13993:71;14061:1;14050:9;14046:17;14037:6;13993:71;:::i;:::-;14074:72;14142:2;14131:9;14127:18;14118:6;14074:72;:::i;:::-;13821:332;;;;;:::o;14159:137::-;14213:5;14244:6;14238:13;14229:22;;14260:30;14284:5;14260:30;:::i;:::-;14159:137;;;;:::o;14302:345::-;14369:6;14418:2;14406:9;14397:7;14393:23;14389:32;14386:119;;;14424:79;;:::i;:::-;14386:119;14544:1;14569:61;14622:7;14613:6;14602:9;14598:22;14569:61;:::i;:::-;14559:71;;14515:125;14302:345;;;;:::o;14653:410::-;14693:7;14716:20;14734:1;14716:20;:::i;:::-;14711:25;;14750:20;14768:1;14750:20;:::i;:::-;14745:25;;14805:1;14802;14798:9;14827:30;14845:11;14827:30;:::i;:::-;14816:41;;15006:1;14997:7;14993:15;14990:1;14987:22;14967:1;14960:9;14940:83;14917:139;;15036:18;;:::i;:::-;14917:139;14701:362;14653:410;;;;:::o;15069:180::-;15117:77;15114:1;15107:88;15214:4;15211:1;15204:15;15238:4;15235:1;15228:15;15255:185;15295:1;15312:20;15330:1;15312:20;:::i;:::-;15307:25;;15346:20;15364:1;15346:20;:::i;:::-;15341:25;;15385:1;15375:35;;15390:18;;:::i;:::-;15375:35;15432:1;15429;15425:9;15420:14;;15255:185;;;;:::o;15446:225::-;15586:34;15582:1;15574:6;15570:14;15563:58;15655:8;15650:2;15642:6;15638:15;15631:33;15446:225;:::o;15677:366::-;15819:3;15840:67;15904:2;15899:3;15840:67;:::i;:::-;15833:74;;15916:93;16005:3;15916:93;:::i;:::-;16034:2;16029:3;16025:12;16018:19;;15677:366;;;:::o;16049:419::-;16215:4;16253:2;16242:9;16238:18;16230:26;;16302:9;16296:4;16292:20;16288:1;16277:9;16273:17;16266:47;16330:131;16456:4;16330:131;:::i;:::-;16322:139;;16049:419;;;:::o;16474:180::-;16614:32;16610:1;16602:6;16598:14;16591:56;16474:180;:::o;16660:366::-;16802:3;16823:67;16887:2;16882:3;16823:67;:::i;:::-;16816:74;;16899:93;16988:3;16899:93;:::i;:::-;17017:2;17012:3;17008:12;17001:19;;16660:366;;;:::o;17032:419::-;17198:4;17236:2;17225:9;17221:18;17213:26;;17285:9;17279:4;17275:20;17271:1;17260:9;17256:17;17249:47;17313:131;17439:4;17313:131;:::i;:::-;17305:139;;17032:419;;;:::o;17457:177::-;17597:29;17593:1;17585:6;17581:14;17574:53;17457:177;:::o;17640:366::-;17782:3;17803:67;17867:2;17862:3;17803:67;:::i;:::-;17796:74;;17879:93;17968:3;17879:93;:::i;:::-;17997:2;17992:3;17988:12;17981:19;;17640:366;;;:::o;18012:419::-;18178:4;18216:2;18205:9;18201:18;18193:26;;18265:9;18259:4;18255:20;18251:1;18240:9;18236:17;18229:47;18293:131;18419:4;18293:131;:::i;:::-;18285:139;;18012:419;;;:::o;18437:180::-;18577:32;18573:1;18565:6;18561:14;18554:56;18437:180;:::o;18623:366::-;18765:3;18786:67;18850:2;18845:3;18786:67;:::i;:::-;18779:74;;18862:93;18951:3;18862:93;:::i;:::-;18980:2;18975:3;18971:12;18964:19;;18623:366;;;:::o;18995:419::-;19161:4;19199:2;19188:9;19184:18;19176:26;;19248:9;19242:4;19238:20;19234:1;19223:9;19219:17;19212:47;19276:131;19402:4;19276:131;:::i;:::-;19268:139;;18995:419;;;:::o;19420:178::-;19560:30;19556:1;19548:6;19544:14;19537:54;19420:178;:::o;19604:366::-;19746:3;19767:67;19831:2;19826:3;19767:67;:::i;:::-;19760:74;;19843:93;19932:3;19843:93;:::i;:::-;19961:2;19956:3;19952:12;19945:19;;19604:366;;;:::o;19976:419::-;20142:4;20180:2;20169:9;20165:18;20157:26;;20229:9;20223:4;20219:20;20215:1;20204:9;20200:17;20193:47;20257:131;20383:4;20257:131;:::i;:::-;20249:139;;19976:419;;;:::o;20401:182::-;20541:34;20537:1;20529:6;20525:14;20518:58;20401:182;:::o;20589:366::-;20731:3;20752:67;20816:2;20811:3;20752:67;:::i;:::-;20745:74;;20828:93;20917:3;20828:93;:::i;:::-;20946:2;20941:3;20937:12;20930:19;;20589:366;;;:::o;20961:419::-;21127:4;21165:2;21154:9;21150:18;21142:26;;21214:9;21208:4;21204:20;21200:1;21189:9;21185:17;21178:47;21242:131;21368:4;21242:131;:::i;:::-;21234:139;;20961:419;;;:::o;21386:170::-;21526:22;21522:1;21514:6;21510:14;21503:46;21386:170;:::o;21562:366::-;21704:3;21725:67;21789:2;21784:3;21725:67;:::i;:::-;21718:74;;21801:93;21890:3;21801:93;:::i;:::-;21919:2;21914:3;21910:12;21903:19;;21562:366;;;:::o;21934:419::-;22100:4;22138:2;22127:9;22123:18;22115:26;;22187:9;22181:4;22177:20;22173:1;22162:9;22158:17;22151:47;22215:131;22341:4;22215:131;:::i;:::-;22207:139;;21934:419;;;:::o;22359:180::-;22407:77;22404:1;22397:88;22504:4;22501:1;22494:15;22528:4;22525:1;22518:15;22545:180;22593:77;22590:1;22583:88;22690:4;22687:1;22680:15;22714:4;22711:1;22704:15;22731:143;22788:5;22819:6;22813:13;22804:22;;22835:33;22862:5;22835:33;:::i;:::-;22731:143;;;;:::o;22880:351::-;22950:6;22999:2;22987:9;22978:7;22974:23;22970:32;22967:119;;;23005:79;;:::i;:::-;22967:119;23125:1;23150:64;23206:7;23197:6;23186:9;23182:22;23150:64;:::i;:::-;23140:74;;23096:128;22880:351;;;;:::o;23237:85::-;23282:7;23311:5;23300:16;;23237:85;;;:::o;23328:158::-;23386:9;23419:61;23437:42;23446:32;23472:5;23446:32;:::i;:::-;23437:42;:::i;:::-;23419:61;:::i;:::-;23406:74;;23328:158;;;:::o;23492:147::-;23587:45;23626:5;23587:45;:::i;:::-;23582:3;23575:58;23492:147;;:::o;23645:114::-;23712:6;23746:5;23740:12;23730:22;;23645:114;;;:::o;23765:184::-;23864:11;23898:6;23893:3;23886:19;23938:4;23933:3;23929:14;23914:29;;23765:184;;;;:::o;23955:132::-;24022:4;24045:3;24037:11;;24075:4;24070:3;24066:14;24058:22;;23955:132;;;:::o;24093:108::-;24170:24;24188:5;24170:24;:::i;:::-;24165:3;24158:37;24093:108;;:::o;24207:179::-;24276:10;24297:46;24339:3;24331:6;24297:46;:::i;:::-;24375:4;24370:3;24366:14;24352:28;;24207:179;;;;:::o;24392:113::-;24462:4;24494;24489:3;24485:14;24477:22;;24392:113;;;:::o;24541:732::-;24660:3;24689:54;24737:5;24689:54;:::i;:::-;24759:86;24838:6;24833:3;24759:86;:::i;:::-;24752:93;;24869:56;24919:5;24869:56;:::i;:::-;24948:7;24979:1;24964:284;24989:6;24986:1;24983:13;24964:284;;;25065:6;25059:13;25092:63;25151:3;25136:13;25092:63;:::i;:::-;25085:70;;25178:60;25231:6;25178:60;:::i;:::-;25168:70;;25024:224;25011:1;25008;25004:9;24999:14;;24964:284;;;24968:14;25264:3;25257:10;;24665:608;;;24541:732;;;;:::o;25279:831::-;25542:4;25580:3;25569:9;25565:19;25557:27;;25594:71;25662:1;25651:9;25647:17;25638:6;25594:71;:::i;:::-;25675:80;25751:2;25740:9;25736:18;25727:6;25675:80;:::i;:::-;25802:9;25796:4;25792:20;25787:2;25776:9;25772:18;25765:48;25830:108;25933:4;25924:6;25830:108;:::i;:::-;25822:116;;25948:72;26016:2;26005:9;26001:18;25992:6;25948:72;:::i;:::-;26030:73;26098:3;26087:9;26083:19;26074:6;26030:73;:::i;:::-;25279:831;;;;;;;;:::o

Swarm Source

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