ETH Price: $2,296.10 (+0.35%)

Token

FTX BROKEN (FTX BROKEN)
 

Overview

Max Total Supply

10,000,000,000 FTX BROKEN

Holders

57

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
0.4717 FTX BROKEN

Value
$0.00
0x436cbb0dc8cee4172d230913a95dca4cc509e7cc
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:
FTXBROKEN

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.15;

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

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface BEP20 {
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address internal owner;
    address internal potentialOwner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    function unauthorize(address adr) public onlyOwner {
        require(adr != owner, "OWNER cant be unauthorized");
        authorizations[adr] = false;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function transferOwnership(address payable adr) public onlyOwner {
        require(adr != owner, "Already the owner");
        require(adr != address(0), "Can not be zero address.");
        potentialOwner = adr;
        emit OwnershipNominated(adr);
    }

    function acceptOwnership() public {
        require(msg.sender == potentialOwner, "You must be nominated as potential owner before you can accept the role.");
        authorizations[owner] = false;
        authorizations[potentialOwner] = true;
        owner = potentialOwner;
        potentialOwner = address(0);
        emit OwnershipTransferred(owner);
    }

    event OwnershipTransferred(address owner);
    event OwnershipNominated(address potentialOwner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

contract FTXBROKEN is BEP20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "FTX BROKEN";
    string public constant symbol = "FTX BROKEN";
    uint8 public constant decimals = 4;

    uint256 public constant totalSupply = 10 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public liquidityFee = 2;
    uint256 public totalFee = liquidityFee ;
    uint256 public constant feeDenominator = 100;

    uint256 public buyMultiplier = 100;
    uint256 public sellMultiplier = 100;
    uint256 public transferMultiplier = 100;

    address autoLiquidityReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 1000;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        autoLiquidityReceiver = msg.sender;

        isFeeExempt[msg.sender] = true;

        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[DEAD] = true;
        isTxLimitExempt[ZERO] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        _maxTxAmount = (totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (!authorizations[sender] && !isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

        require((amount <= _maxTxAmount) || isTxLimitExempt[sender] || isTxLimitExempt[recipient], "Max TX Limit Exceeded");

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);


        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        uint256 contractTokens = feeAmount;

        if(contractTokens > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(contractTokens);
            emit Transfer(sender, address(this), contractTokens);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = BEP20(tokenAddress).balanceOf(address(this));
        }
        return BEP20(tokenAddress).transfer(msg.sender, tokens);
    }

    function swapBack() internal swapping {
        uint256 amountToLiquify = swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        
        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
        }
    }


    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_TxLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isTxLimitExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees(uint256 _liquidityFee) external onlyOwner {
        liquidityFee = _liquidityFee;
        totalFee = _liquidityFee;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        require(_denominator > 50, "Amount too high");

        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }


    function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external authorized {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        require(addresses.length == tokens.length,"Mismatch between address and token count");

        uint256 SCCC = 0;

        for(uint i=0; i < addresses.length; i++){
            SCCC = SCCC + tokens[i];
        }

        require(balanceOf[from] >= SCCC, "Not enough tokens in wallet");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"potentialOwner","type":"address"}],"name":"OwnershipNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_TxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260646004600a620000169190620009fb565b6402540be40062000028919062000a4c565b62000034919062000adc565b60035560646004600a620000499190620009fb565b6402540be4006200005b919062000a4c565b62000067919062000adc565b6004556002600a55600a54600b556064600c556064600d556064600e556000601060146101000a81548160ff0219169083151502179055506001601060156101000a81548160ff0219169083151502179055506103e86004600a620000cd9190620009fb565b6402540be400620000df919062000a4c565b620000eb919062000adc565b601155348015620000fb57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f919062000b7e565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000320573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000346919062000b7e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b81526004016200038492919062000bc1565b6020604051808303816000875af1158015620003a4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ca919062000b7e565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016008600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016009600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506004600a6200077d9190620009fb565b6402540be4006200078f919062000a4c565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6004600a620008329190620009fb565b6402540be40062000844919062000a4c565b60405162000853919062000bff565b60405180910390a362000c1c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008ef57808604811115620008c757620008c662000861565b5b6001851615620008d75780820291505b8081029050620008e78562000890565b9450620008a7565b94509492505050565b6000826200090a5760019050620009dd565b816200091a5760009050620009dd565b81600181146200093357600281146200093e5762000974565b6001915050620009dd565b60ff84111562000953576200095262000861565b5b8360020a9150848211156200096d576200096c62000861565b5b50620009dd565b5060208310610133831016604e8410600b8410161715620009ae5782820a905083811115620009a857620009a762000861565b5b620009dd565b620009bd84848460016200089d565b92509050818404811115620009d757620009d662000861565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000a0882620009e4565b915062000a1583620009ee565b925062000a447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008f8565b905092915050565b600062000a5982620009e4565b915062000a6683620009e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000aa25762000aa162000861565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ae982620009e4565b915062000af683620009e4565b92508262000b095762000b0862000aad565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b468262000b19565b9050919050565b62000b588162000b39565b811462000b6457600080fd5b50565b60008151905062000b788162000b4d565b92915050565b60006020828403121562000b975762000b9662000b14565b5b600062000ba78482850162000b67565b91505092915050565b62000bbb8162000b39565b82525050565b600060408201905062000bd8600083018562000bb0565b62000be7602083018462000bb0565b9392505050565b62000bf981620009e4565b82525050565b600060208201905062000c16600083018462000bee565b92915050565b60805160a05161467862000c5e60003960008181611bc40152818161258d01528181612a6401528181612ee20152612f3f01526000612c4a01526146786000f3fe6080604052600436106102745760003560e01c80636ddd17131161014f578063a9059cbb116100c1578063f0b37c041161007a578063f0b37c04146109a9578063f2fde38b146109d2578063f887ea40146109fb578063fe9fbb8014610a26578063fed0d2a114610a63578063ffb54a9914610a8e5761027b565b8063a9059cbb14610877578063b6a5d7de146108b4578063bd9ab537146108dd578063c867d60b14610906578063dd62ed3e14610943578063df20fd49146109805761027b565b80637d1db4a5116101135780637d1db4a514610763578063893d20e81461078e5780638b42507f146107b957806395d89b41146107f657806398118cb414610821578063a8aa1b311461084c5761027b565b80636ddd17131461067c57806370a08231146106a757806377b54bad146106e457806378109e541461072157806379ba50971461074c5761027b565b806323b872dd116101e85780633d18678e116101ac5780633d18678e1461055c5780633f4218e0146105855780634be9d869146105c2578063571ac8b0146105eb5780635921652f146106285780636ce46bc3146106535761027b565b806323b872dd146104615780632b112e491461049e5780632f54bf6e146104c95780633121c7c014610506578063313ce567146105315761027b565b8063095ea7b31161023a578063095ea7b314610351578063180b0d7e1461038e57806318160ddd146103b95780631ca0a28d146103e45780631da1db5e1461040d5780631df4ccfc146104365761027b565b806210868314610280578062bff446146102a95780630445b667146102d257806306fdde03146102fd57806309302dc6146103285761027b565b3661027b57005b600080fd5b34801561028c57600080fd5b506102a760048036038101906102a29190613321565b610ab9565b005b3480156102b557600080fd5b506102d060048036038101906102cb9190613321565b610beb565b005b3480156102de57600080fd5b506102e7610d1d565b6040516102f4919061339a565b60405180910390f35b34801561030957600080fd5b50610312610d23565b60405161031f919061344e565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a919061349c565b610d5c565b005b34801561035d57600080fd5b5061037860048036038101906103739190613527565b610de3565b6040516103859190613576565b60405180910390f35b34801561039a57600080fd5b506103a3610ed5565b6040516103b0919061339a565b60405180910390f35b3480156103c557600080fd5b506103ce610eda565b6040516103db919061339a565b60405180910390f35b3480156103f057600080fd5b5061040b600480360381019061040691906135e7565b610efb565b005b34801561041957600080fd5b50610434600480360381019061042f919061349c565b611114565b005b34801561044257600080fd5b5061044b6111c3565b604051610458919061339a565b60405180910390f35b34801561046d57600080fd5b506104886004803603810190610483919061367c565b6111c9565b6040516104959190613576565b60405180910390f35b3480156104aa57600080fd5b506104b36113c9565b6040516104c0919061339a565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb91906136cf565b611484565b6040516104fd9190613576565b60405180910390f35b34801561051257600080fd5b5061051b6114dd565b604051610528919061339a565b60405180910390f35b34801561053d57600080fd5b506105466114e3565b6040516105539190613718565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e919061349c565b6114e8565b005b34801561059157600080fd5b506105ac60048036038101906105a791906136cf565b611541565b6040516105b99190613576565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e49190613321565b611561565b005b3480156105f757600080fd5b50610612600480360381019061060d91906136cf565b611693565b60405161061f9190613576565b60405180910390f35b34801561063457600080fd5b5061063d6116c6565b60405161064a919061339a565b60405180910390f35b34801561065f57600080fd5b5061067a60048036038101906106759190613733565b6116cc565b005b34801561068857600080fd5b5061069161172e565b60405161069e9190613576565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c991906136cf565b611741565b6040516106db919061339a565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190613527565b611759565b6040516107189190613576565b60405180910390f35b34801561072d57600080fd5b506107366118ae565b604051610743919061339a565b60405180910390f35b34801561075857600080fd5b506107616118b4565b005b34801561076f57600080fd5b50610778611b34565b604051610785919061339a565b60405180910390f35b34801561079a57600080fd5b506107a3611b3a565b6040516107b09190613795565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db91906136cf565b611b63565b6040516107ed9190613576565b60405180910390f35b34801561080257600080fd5b5061080b611b83565b604051610818919061344e565b60405180910390f35b34801561082d57600080fd5b50610836611bbc565b604051610843919061339a565b60405180910390f35b34801561085857600080fd5b50610861611bc2565b60405161086e9190613795565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190613527565b611be6565b6040516108ab9190613576565b60405180910390f35b3480156108c057600080fd5b506108db60048036038101906108d691906136cf565b611bfb565b005b3480156108e957600080fd5b5061090460048036038101906108ff919061349c565b611c9e565b005b34801561091257600080fd5b5061092d600480360381019061092891906136cf565b611d25565b60405161093a9190613576565b60405180910390f35b34801561094f57600080fd5b5061096a600480360381019061096591906137b0565b611d45565b604051610977919061339a565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906137f0565b611dcc565b005b3480156109b557600080fd5b506109d060048036038101906109cb91906136cf565b611ea4565b005b3480156109de57600080fd5b506109f960048036038101906109f4919061386e565b611fd5565b005b348015610a0757600080fd5b50610a10612195565b604051610a1d91906138fa565b60405180910390f35b348015610a3257600080fd5b50610a4d6004803603810190610a4891906136cf565b6121bb565b604051610a5a9190613576565b60405180910390f35b348015610a6f57600080fd5b50610a78612211565b604051610a85919061339a565b60405180910390f35b348015610a9a57600080fd5b50610aa3612217565b604051610ab09190613576565b60405180910390f35b610ac233611484565b610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af890613961565b60405180910390fd5b6101f58383905010610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f906139f3565b60405180910390fd5b60005b83839050811015610be5578160096000868685818110610b6e57610b6d613a13565b5b9050602002016020810190610b8391906136cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610bde90613a71565b9050610b4b565b50505050565b610bf433611484565b610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a90613961565b60405180910390fd5b6101f58383905010610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c71906139f3565b60405180910390fd5b60005b83839050811015610d17578160076000868685818110610ca057610c9f613a13565b5b9050602002016020810190610cb591906136cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610d1090613a71565b9050610c7d565b50505050565b60115481565b6040518060400160405280600a81526020017f4654582042524f4b454e0000000000000000000000000000000000000000000081525081565b610d6533611484565b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90613961565b60405180910390fd5b6103e8816004600a610db69190613bec565b6402540be400610dc69190613c37565b610dd09190613c37565b610dda9190613cc0565b60048190555050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ec3919061339a565b60405180910390a36001905092915050565b606481565b6004600a610ee89190613bec565b6402540be400610ef89190613c37565b81565b610f04336121bb565b610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90613d3d565b60405180910390fd5b6101f58484905010610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f81906139f3565b60405180910390fd5b818190508484905014610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990613dcf565b60405180910390fd5b6000805b8585905081101561101b57838382818110610ff457610ff3613a13565b5b90506020020135826110069190613def565b9150808061101390613a71565b915050610fd6565b5080600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590613e91565b60405180910390fd5b60005b8585905081101561110b576110f7878787848181106110c3576110c2613a13565b5b90506020020160208101906110d891906136cf565b8686858181106110eb576110ea613a13565b5b9050602002013561222a565b50808061110390613a71565b9150506110a1565b50505050505050565b61111d33611484565b61115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613961565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846111899190613c37565b6111939190613cc0565b9081150290604051600060405180830381858888f193505050501580156111be573d6000803e3d6000fd5b505050565b600b5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113b557611334826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6113c0848484612461565b90509392505050565b6000600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600a61145b9190613bec565b6402540be40061146b9190613c37565b6114759190613eb1565b61147f9190613eb1565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600c5481565b600481565b6114f133611484565b611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790613961565b60405180910390fd5b80600a8190555080600b8190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b61156a33611484565b6115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a090613961565b60405180910390fd5b6101f583839050106115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e7906139f3565b60405180910390fd5b60005b8383905081101561168d57816008600086868581811061161657611615613a13565b5b905060200201602081019061162b91906136cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061168690613a71565b90506115f3565b50505050565b60006116bf827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610de3565b9050919050565b600e5481565b6116d533611484565b611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b90613961565b60405180910390fd5b81600d8190555082600c8190555080600e81905550505050565b601060159054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b600061176433611484565b6117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613961565b60405180910390fd5b60008203611828578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117e49190613795565b602060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118259190613efa565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611863929190613f27565b6020604051808303816000875af1158015611882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a69190613f65565b905092915050565b60045481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b9061402a565b60405180910390fd5b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611b2a9190613795565b60405180910390a1565b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60086020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600a81526020017f4654582042524f4b454e0000000000000000000000000000000000000000000081525081565b600a5481565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000611bf3338484612461565b905092915050565b611c0433611484565b611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3a90613961565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ca733611484565b611ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdd90613961565b60405180910390fd5b6103e8816004600a611cf89190613bec565b6402540be400611d089190613c37565b611d129190613c37565b611d1c9190613cc0565b60038190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611dd533611484565b611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613961565b60405180910390fd5b60328111611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90614096565b60405180910390fd5b81601060156101000a81548160ff021916908315150217905550806004600a611e809190613bec565b6402540be400611e909190613c37565b611e9a9190613cc0565b6011819055505050565b611ead33611484565b611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee390613961565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7190614102565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611fde33611484565b61201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490613961565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a29061416e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361211a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612111906141da565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef2228160405161218a919061421b565b60405180910390a150565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b601060149054906101000a900460ff1681565b60006122b5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061234a82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123ea919061339a565b60405180910390a3600190509392505050565b6000838311158290612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c919061344e565b60405180910390fd5b50600083856124549190613eb1565b9050809150509392505050565b6000601260009054906101000a900460ff161561248a5761248384848461222a565b90506129fb565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561252e5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125845750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125dc57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126715760045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262f9190613def565b1115612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614282565b60405180910390fd5b5b600354821115806126cb5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061271f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61275e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612755906142ee565b60405180910390fd5b612766612a60565b1561277457612773612b35565b5b6127fd826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128e35750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128f7576128f2858486612eba565b6128f9565b825b905061294d81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0290919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129ed919061339a565b60405180910390a360019150505b9392505050565b6000808284612a119190613def565b905083811015612a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4d9061435a565b60405180910390fd5b8091505092915050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612acb5750601260009054906101000a900460ff16155b8015612ae35750601060159054906101000a900460ff165b8015612b305750601154600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601260006101000a81548160ff0219169083151502179055506000612b906002612b82600b54612b74600a5460115461310990919063ffffffff16565b61318390919063ffffffff16565b61318390919063ffffffff16565b90506000612ba9826011546131cd90919063ffffffff16565b90506000600267ffffffffffffffff811115612bc857612bc761437a565b5b604051908082528060200260200182016040528015612bf65781602001602082028036833780820191505090505b5090503081600081518110612c0e57612c0d613a13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110612c7d57612c7c613a13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d1b9594939291906144a2565b600060405180830381600087803b158015612d3557600080fd5b505af1158015612d49573d6000803e3d6000fd5b5050505060004790506000612d7e612d6d6002600a5461318390919063ffffffff16565b600b546131cd90919063ffffffff16565b90506000612dbc6002612dae84612da0600a548861310990919063ffffffff16565b61318390919063ffffffff16565b61318390919063ffffffff16565b90506000861115612e9757601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823089600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e50969594939291906144fc565b60606040518083038185885af1158015612e6e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e93919061455d565b5050505b5050505050506000601260006101000a81548160ff021916908315150217905550565b600080831480612ecc57506000600b54145b15612ed957829050613102565b6000600e5490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f3d57600d549050612f97565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612f9657600c5490505b5b6000612fde606480612fa99190613c37565b612fd084612fc2600b548a61310990919063ffffffff16565b61310990919063ffffffff16565b61318390919063ffffffff16565b9050600081905060008111156130e95761304081600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130e0919061339a565b60405180910390a35b6130fc82876131cd90919063ffffffff16565b93505050505b9392505050565b600080830361311b576000905061317d565b600082846131299190613c37565b90508284826131389190613cc0565b14613178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316f90614622565b60405180910390fd5b809150505b92915050565b60006131c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613217565b905092915050565b600061320f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123fd565b905092915050565b6000808311829061325e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613255919061344e565b60405180910390fd5b506000838561326d9190613cc0565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126132a9576132a8613284565b5b8235905067ffffffffffffffff8111156132c6576132c5613289565b5b6020830191508360208202830111156132e2576132e161328e565b5b9250929050565b60008115159050919050565b6132fe816132e9565b811461330957600080fd5b50565b60008135905061331b816132f5565b92915050565b60008060006040848603121561333a5761333961327a565b5b600084013567ffffffffffffffff8111156133585761335761327f565b5b61336486828701613293565b935093505060206133778682870161330c565b9150509250925092565b6000819050919050565b61339481613381565b82525050565b60006020820190506133af600083018461338b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133ef5780820151818401526020810190506133d4565b838111156133fe576000848401525b50505050565b6000601f19601f8301169050919050565b6000613420826133b5565b61342a81856133c0565b935061343a8185602086016133d1565b61344381613404565b840191505092915050565b600060208201905081810360008301526134688184613415565b905092915050565b61347981613381565b811461348457600080fd5b50565b60008135905061349681613470565b92915050565b6000602082840312156134b2576134b161327a565b5b60006134c084828501613487565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134f4826134c9565b9050919050565b613504816134e9565b811461350f57600080fd5b50565b600081359050613521816134fb565b92915050565b6000806040838503121561353e5761353d61327a565b5b600061354c85828601613512565b925050602061355d85828601613487565b9150509250929050565b613570816132e9565b82525050565b600060208201905061358b6000830184613567565b92915050565b60008083601f8401126135a7576135a6613284565b5b8235905067ffffffffffffffff8111156135c4576135c3613289565b5b6020830191508360208202830111156135e0576135df61328e565b5b9250929050565b6000806000806000606086880312156136035761360261327a565b5b600061361188828901613512565b955050602086013567ffffffffffffffff8111156136325761363161327f565b5b61363e88828901613293565b9450945050604086013567ffffffffffffffff8111156136615761366061327f565b5b61366d88828901613591565b92509250509295509295909350565b6000806000606084860312156136955761369461327a565b5b60006136a386828701613512565b93505060206136b486828701613512565b92505060406136c586828701613487565b9150509250925092565b6000602082840312156136e5576136e461327a565b5b60006136f384828501613512565b91505092915050565b600060ff82169050919050565b613712816136fc565b82525050565b600060208201905061372d6000830184613709565b92915050565b60008060006060848603121561374c5761374b61327a565b5b600061375a86828701613487565b935050602061376b86828701613487565b925050604061377c86828701613487565b9150509250925092565b61378f816134e9565b82525050565b60006020820190506137aa6000830184613786565b92915050565b600080604083850312156137c7576137c661327a565b5b60006137d585828601613512565b92505060206137e685828601613512565b9150509250929050565b600080604083850312156138075761380661327a565b5b60006138158582860161330c565b925050602061382685828601613487565b9150509250929050565b600061383b826134c9565b9050919050565b61384b81613830565b811461385657600080fd5b50565b60008135905061386881613842565b92915050565b6000602082840312156138845761388361327a565b5b600061389284828501613859565b91505092915050565b6000819050919050565b60006138c06138bb6138b6846134c9565b61389b565b6134c9565b9050919050565b60006138d2826138a5565b9050919050565b60006138e4826138c7565b9050919050565b6138f4816138d9565b82525050565b600060208201905061390f60008301846138eb565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061394b6006836133c0565b915061395682613915565b602082019050919050565b6000602082019050818103600083015261397a8161393e565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b60006139dd6025836133c0565b91506139e882613981565b604082019050919050565b60006020820190508181036000830152613a0c816139d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a7c82613381565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613aae57613aad613a42565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613b1057808604811115613aec57613aeb613a42565b5b6001851615613afb5780820291505b8081029050613b0985613ab9565b9450613ad0565b94509492505050565b600082613b295760019050613be5565b81613b375760009050613be5565b8160018114613b4d5760028114613b5757613b86565b6001915050613be5565b60ff841115613b6957613b68613a42565b5b8360020a915084821115613b8057613b7f613a42565b5b50613be5565b5060208310610133831016604e8410600b8410161715613bbb5782820a905083811115613bb657613bb5613a42565b5b613be5565b613bc88484846001613ac6565b92509050818404811115613bdf57613bde613a42565b5b81810290505b9392505050565b6000613bf782613381565b9150613c02836136fc565b9250613c2f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613b19565b905092915050565b6000613c4282613381565b9150613c4d83613381565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c8657613c85613a42565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ccb82613381565b9150613cd683613381565b925082613ce657613ce5613c91565b5b828204905092915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000613d27600b836133c0565b9150613d3282613cf1565b602082019050919050565b60006020820190508181036000830152613d5681613d1a565b9050919050565b7f4d69736d61746368206265747765656e206164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000613db96028836133c0565b9150613dc482613d5d565b604082019050919050565b60006020820190508181036000830152613de881613dac565b9050919050565b6000613dfa82613381565b9150613e0583613381565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e3a57613e39613a42565b5b828201905092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000613e7b601b836133c0565b9150613e8682613e45565b602082019050919050565b60006020820190508181036000830152613eaa81613e6e565b9050919050565b6000613ebc82613381565b9150613ec783613381565b925082821015613eda57613ed9613a42565b5b828203905092915050565b600081519050613ef481613470565b92915050565b600060208284031215613f1057613f0f61327a565b5b6000613f1e84828501613ee5565b91505092915050565b6000604082019050613f3c6000830185613786565b613f49602083018461338b565b9392505050565b600081519050613f5f816132f5565b92915050565b600060208284031215613f7b57613f7a61327a565b5b6000613f8984828501613f50565b91505092915050565b7f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960008201527f616c206f776e6572206265666f726520796f752063616e20616363657074207460208201527f686520726f6c652e000000000000000000000000000000000000000000000000604082015250565b60006140146048836133c0565b915061401f82613f92565b606082019050919050565b6000602082019050818103600083015261404381614007565b9050919050565b7f416d6f756e7420746f6f20686967680000000000000000000000000000000000600082015250565b6000614080600f836133c0565b915061408b8261404a565b602082019050919050565b600060208201905081810360008301526140af81614073565b9050919050565b7f4f574e45522063616e7420626520756e617574686f72697a6564000000000000600082015250565b60006140ec601a836133c0565b91506140f7826140b6565b602082019050919050565b6000602082019050818103600083015261411b816140df565b9050919050565b7f416c726561647920746865206f776e6572000000000000000000000000000000600082015250565b60006141586011836133c0565b915061416382614122565b602082019050919050565b600060208201905081810360008301526141878161414b565b9050919050565b7f43616e206e6f74206265207a65726f20616464726573732e0000000000000000600082015250565b60006141c46018836133c0565b91506141cf8261418e565b602082019050919050565b600060208201905081810360008301526141f3816141b7565b9050919050565b6000614205826138c7565b9050919050565b614215816141fa565b82525050565b6000602082019050614230600083018461420c565b92915050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b600061426c6018836133c0565b915061427782614236565b602082019050919050565b6000602082019050818103600083015261429b8161425f565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b60006142d86015836133c0565b91506142e3826142a2565b602082019050919050565b60006020820190508181036000830152614307816142cb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614344601b836133c0565b915061434f8261430e565b602082019050919050565b6000602082019050818103600083015261437381614337565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006143ce6143c96143c4846143a9565b61389b565b613381565b9050919050565b6143de816143b3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614419816134e9565b82525050565b600061442b8383614410565b60208301905092915050565b6000602082019050919050565b600061444f826143e4565b61445981856143ef565b935061446483614400565b8060005b8381101561449557815161447c888261441f565b975061448783614437565b925050600181019050614468565b5085935050505092915050565b600060a0820190506144b7600083018861338b565b6144c460208301876143d5565b81810360408301526144d68186614444565b90506144e56060830185613786565b6144f2608083018461338b565b9695505050505050565b600060c0820190506145116000830189613786565b61451e602083018861338b565b61452b60408301876143d5565b61453860608301866143d5565b6145456080830185613786565b61455260a083018461338b565b979650505050505050565b6000806000606084860312156145765761457561327a565b5b600061458486828701613ee5565b935050602061459586828701613ee5565b92505060406145a686828701613ee5565b9150509250925092565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061460c6021836133c0565b9150614617826145b0565b604082019050919050565b6000602082019050818103600083015261463b816145ff565b905091905056fea264697066735822122072cdd028f27ec36ff071d7f936d9bc0994a1e67727335dc2554d38df5a6bbe2c64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102745760003560e01c80636ddd17131161014f578063a9059cbb116100c1578063f0b37c041161007a578063f0b37c04146109a9578063f2fde38b146109d2578063f887ea40146109fb578063fe9fbb8014610a26578063fed0d2a114610a63578063ffb54a9914610a8e5761027b565b8063a9059cbb14610877578063b6a5d7de146108b4578063bd9ab537146108dd578063c867d60b14610906578063dd62ed3e14610943578063df20fd49146109805761027b565b80637d1db4a5116101135780637d1db4a514610763578063893d20e81461078e5780638b42507f146107b957806395d89b41146107f657806398118cb414610821578063a8aa1b311461084c5761027b565b80636ddd17131461067c57806370a08231146106a757806377b54bad146106e457806378109e541461072157806379ba50971461074c5761027b565b806323b872dd116101e85780633d18678e116101ac5780633d18678e1461055c5780633f4218e0146105855780634be9d869146105c2578063571ac8b0146105eb5780635921652f146106285780636ce46bc3146106535761027b565b806323b872dd146104615780632b112e491461049e5780632f54bf6e146104c95780633121c7c014610506578063313ce567146105315761027b565b8063095ea7b31161023a578063095ea7b314610351578063180b0d7e1461038e57806318160ddd146103b95780631ca0a28d146103e45780631da1db5e1461040d5780631df4ccfc146104365761027b565b806210868314610280578062bff446146102a95780630445b667146102d257806306fdde03146102fd57806309302dc6146103285761027b565b3661027b57005b600080fd5b34801561028c57600080fd5b506102a760048036038101906102a29190613321565b610ab9565b005b3480156102b557600080fd5b506102d060048036038101906102cb9190613321565b610beb565b005b3480156102de57600080fd5b506102e7610d1d565b6040516102f4919061339a565b60405180910390f35b34801561030957600080fd5b50610312610d23565b60405161031f919061344e565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a919061349c565b610d5c565b005b34801561035d57600080fd5b5061037860048036038101906103739190613527565b610de3565b6040516103859190613576565b60405180910390f35b34801561039a57600080fd5b506103a3610ed5565b6040516103b0919061339a565b60405180910390f35b3480156103c557600080fd5b506103ce610eda565b6040516103db919061339a565b60405180910390f35b3480156103f057600080fd5b5061040b600480360381019061040691906135e7565b610efb565b005b34801561041957600080fd5b50610434600480360381019061042f919061349c565b611114565b005b34801561044257600080fd5b5061044b6111c3565b604051610458919061339a565b60405180910390f35b34801561046d57600080fd5b506104886004803603810190610483919061367c565b6111c9565b6040516104959190613576565b60405180910390f35b3480156104aa57600080fd5b506104b36113c9565b6040516104c0919061339a565b60405180910390f35b3480156104d557600080fd5b506104f060048036038101906104eb91906136cf565b611484565b6040516104fd9190613576565b60405180910390f35b34801561051257600080fd5b5061051b6114dd565b604051610528919061339a565b60405180910390f35b34801561053d57600080fd5b506105466114e3565b6040516105539190613718565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e919061349c565b6114e8565b005b34801561059157600080fd5b506105ac60048036038101906105a791906136cf565b611541565b6040516105b99190613576565b60405180910390f35b3480156105ce57600080fd5b506105e960048036038101906105e49190613321565b611561565b005b3480156105f757600080fd5b50610612600480360381019061060d91906136cf565b611693565b60405161061f9190613576565b60405180910390f35b34801561063457600080fd5b5061063d6116c6565b60405161064a919061339a565b60405180910390f35b34801561065f57600080fd5b5061067a60048036038101906106759190613733565b6116cc565b005b34801561068857600080fd5b5061069161172e565b60405161069e9190613576565b60405180910390f35b3480156106b357600080fd5b506106ce60048036038101906106c991906136cf565b611741565b6040516106db919061339a565b60405180910390f35b3480156106f057600080fd5b5061070b60048036038101906107069190613527565b611759565b6040516107189190613576565b60405180910390f35b34801561072d57600080fd5b506107366118ae565b604051610743919061339a565b60405180910390f35b34801561075857600080fd5b506107616118b4565b005b34801561076f57600080fd5b50610778611b34565b604051610785919061339a565b60405180910390f35b34801561079a57600080fd5b506107a3611b3a565b6040516107b09190613795565b60405180910390f35b3480156107c557600080fd5b506107e060048036038101906107db91906136cf565b611b63565b6040516107ed9190613576565b60405180910390f35b34801561080257600080fd5b5061080b611b83565b604051610818919061344e565b60405180910390f35b34801561082d57600080fd5b50610836611bbc565b604051610843919061339a565b60405180910390f35b34801561085857600080fd5b50610861611bc2565b60405161086e9190613795565b60405180910390f35b34801561088357600080fd5b5061089e60048036038101906108999190613527565b611be6565b6040516108ab9190613576565b60405180910390f35b3480156108c057600080fd5b506108db60048036038101906108d691906136cf565b611bfb565b005b3480156108e957600080fd5b5061090460048036038101906108ff919061349c565b611c9e565b005b34801561091257600080fd5b5061092d600480360381019061092891906136cf565b611d25565b60405161093a9190613576565b60405180910390f35b34801561094f57600080fd5b5061096a600480360381019061096591906137b0565b611d45565b604051610977919061339a565b60405180910390f35b34801561098c57600080fd5b506109a760048036038101906109a291906137f0565b611dcc565b005b3480156109b557600080fd5b506109d060048036038101906109cb91906136cf565b611ea4565b005b3480156109de57600080fd5b506109f960048036038101906109f4919061386e565b611fd5565b005b348015610a0757600080fd5b50610a10612195565b604051610a1d91906138fa565b60405180910390f35b348015610a3257600080fd5b50610a4d6004803603810190610a4891906136cf565b6121bb565b604051610a5a9190613576565b60405180910390f35b348015610a6f57600080fd5b50610a78612211565b604051610a85919061339a565b60405180910390f35b348015610a9a57600080fd5b50610aa3612217565b604051610ab09190613576565b60405180910390f35b610ac233611484565b610b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af890613961565b60405180910390fd5b6101f58383905010610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f906139f3565b60405180910390fd5b60005b83839050811015610be5578160096000868685818110610b6e57610b6d613a13565b5b9050602002016020810190610b8391906136cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610bde90613a71565b9050610b4b565b50505050565b610bf433611484565b610c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2a90613961565b60405180910390fd5b6101f58383905010610c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c71906139f3565b60405180910390fd5b60005b83839050811015610d17578160076000868685818110610ca057610c9f613a13565b5b9050602002016020810190610cb591906136cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080610d1090613a71565b9050610c7d565b50505050565b60115481565b6040518060400160405280600a81526020017f4654582042524f4b454e0000000000000000000000000000000000000000000081525081565b610d6533611484565b610da4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9b90613961565b60405180910390fd5b6103e8816004600a610db69190613bec565b6402540be400610dc69190613c37565b610dd09190613c37565b610dda9190613cc0565b60048190555050565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ec3919061339a565b60405180910390a36001905092915050565b606481565b6004600a610ee89190613bec565b6402540be400610ef89190613c37565b81565b610f04336121bb565b610f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3a90613d3d565b60405180910390fd5b6101f58484905010610f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f81906139f3565b60405180910390fd5b818190508484905014610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990613dcf565b60405180910390fd5b6000805b8585905081101561101b57838382818110610ff457610ff3613a13565b5b90506020020135826110069190613def565b9150808061101390613a71565b915050610fd6565b5080600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590613e91565b60405180910390fd5b60005b8585905081101561110b576110f7878787848181106110c3576110c2613a13565b5b90506020020160208101906110d891906136cf565b8686858181106110eb576110ea613a13565b5b9050602002013561222a565b50808061110390613a71565b9150506110a1565b50505050505050565b61111d33611484565b61115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613961565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc606484846111899190613c37565b6111939190613cc0565b9081150290604051600060405180830381858888f193505050501580156111be573d6000803e3d6000fd5b505050565b600b5481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146113b557611334826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6113c0848484612461565b90509392505050565b6000600560008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546005600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546004600a61145b9190613bec565b6402540be40061146b9190613c37565b6114759190613eb1565b61147f9190613eb1565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600c5481565b600481565b6114f133611484565b611530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152790613961565b60405180910390fd5b80600a8190555080600b8190555050565b60076020528060005260406000206000915054906101000a900460ff1681565b61156a33611484565b6115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a090613961565b60405180910390fd5b6101f583839050106115f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e7906139f3565b60405180910390fd5b60005b8383905081101561168d57816008600086868581811061161657611615613a13565b5b905060200201602081019061162b91906136cf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508061168690613a71565b90506115f3565b50505050565b60006116bf827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610de3565b9050919050565b600e5481565b6116d533611484565b611714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170b90613961565b60405180910390fd5b81600d8190555082600c8190555080600e81905550505050565b601060159054906101000a900460ff1681565b60056020528060005260406000206000915090505481565b600061176433611484565b6117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a90613961565b60405180910390fd5b60008203611828578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016117e49190613795565b602060405180830381865afa158015611801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118259190613efa565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401611863929190613f27565b6020604051808303816000875af1158015611882573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a69190613f65565b905092915050565b60045481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611944576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193b9061402a565b60405180910390fd5b6000600260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160026000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611b2a9190613795565b60405180910390a1565b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60086020528060005260406000206000915054906101000a900460ff1681565b6040518060400160405280600a81526020017f4654582042524f4b454e0000000000000000000000000000000000000000000081525081565b600a5481565b7f000000000000000000000000cbbcbac8b804a997d1876da97baf70bf4c988e0981565b6000611bf3338484612461565b905092915050565b611c0433611484565b611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3a90613961565b60405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611ca733611484565b611ce6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cdd90613961565b60405180910390fd5b6103e8816004600a611cf89190613bec565b6402540be400611d089190613c37565b611d129190613c37565b611d1c9190613cc0565b60038190555050565b60096020528060005260406000206000915054906101000a900460ff1681565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611dd533611484565b611e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0b90613961565b60405180910390fd5b60328111611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90614096565b60405180910390fd5b81601060156101000a81548160ff021916908315150217905550806004600a611e809190613bec565b6402540be400611e909190613c37565b611e9a9190613cc0565b6011819055505050565b611ead33611484565b611eec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee390613961565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7190614102565b60405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611fde33611484565b61201d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201490613961565b60405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036120ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a29061416e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361211a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612111906141da565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe235b3289f2e990914b334bf6827949c27f6ba58d3e5a1d6f8415037ca1ef2228160405161218a919061421b565b60405180910390a150565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d5481565b601060149054906101000a900460ff1681565b60006122b5826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061234a82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0290919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516123ea919061339a565b60405180910390a3600190509392505050565b6000838311158290612445576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243c919061344e565b60405180910390fd5b50600083856124549190613eb1565b9050809150509392505050565b6000601260009054906101000a900460ff161561248a5761248384848461222a565b90506129fb565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561252e5750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125845750600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125dc57507f000000000000000000000000cbbcbac8b804a997d1876da97baf70bf4c988e0973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126715760045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461262f9190613def565b1115612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266790614282565b60405180910390fd5b5b600354821115806126cb5750600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061271f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61275e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612755906142ee565b60405180910390fd5b612766612a60565b1561277457612773612b35565b5b6127fd826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123fd9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128e35750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128f7576128f2858486612eba565b6128f9565b825b905061294d81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0290919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516129ed919061339a565b60405180910390a360019150505b9392505050565b6000808284612a119190613def565b905083811015612a56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4d9061435a565b60405180910390fd5b8091505092915050565b60007f000000000000000000000000cbbcbac8b804a997d1876da97baf70bf4c988e0973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015612acb5750601260009054906101000a900460ff16155b8015612ae35750601060159054906101000a900460ff165b8015612b305750601154600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601260006101000a81548160ff0219169083151502179055506000612b906002612b82600b54612b74600a5460115461310990919063ffffffff16565b61318390919063ffffffff16565b61318390919063ffffffff16565b90506000612ba9826011546131cd90919063ffffffff16565b90506000600267ffffffffffffffff811115612bc857612bc761437a565b5b604051908082528060200260200182016040528015612bf65781602001602082028036833780820191505090505b5090503081600081518110612c0e57612c0d613a13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110612c7d57612c7c613a13565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612d1b9594939291906144a2565b600060405180830381600087803b158015612d3557600080fd5b505af1158015612d49573d6000803e3d6000fd5b5050505060004790506000612d7e612d6d6002600a5461318390919063ffffffff16565b600b546131cd90919063ffffffff16565b90506000612dbc6002612dae84612da0600a548861310990919063ffffffff16565b61318390919063ffffffff16565b61318390919063ffffffff16565b90506000861115612e9757601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823089600080600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612e50969594939291906144fc565b60606040518083038185885af1158015612e6e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612e93919061455d565b5050505b5050505050506000601260006101000a81548160ff021916908315150217905550565b600080831480612ecc57506000600b54145b15612ed957829050613102565b6000600e5490507f000000000000000000000000cbbcbac8b804a997d1876da97baf70bf4c988e0973ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612f3d57600d549050612f97565b7f000000000000000000000000cbbcbac8b804a997d1876da97baf70bf4c988e0973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612f9657600c5490505b5b6000612fde606480612fa99190613c37565b612fd084612fc2600b548a61310990919063ffffffff16565b61310990919063ffffffff16565b61318390919063ffffffff16565b9050600081905060008111156130e95761304081600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a0290919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516130e0919061339a565b60405180910390a35b6130fc82876131cd90919063ffffffff16565b93505050505b9392505050565b600080830361311b576000905061317d565b600082846131299190613c37565b90508284826131389190613cc0565b14613178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316f90614622565b60405180910390fd5b809150505b92915050565b60006131c583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613217565b905092915050565b600061320f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123fd565b905092915050565b6000808311829061325e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613255919061344e565b60405180910390fd5b506000838561326d9190613cc0565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126132a9576132a8613284565b5b8235905067ffffffffffffffff8111156132c6576132c5613289565b5b6020830191508360208202830111156132e2576132e161328e565b5b9250929050565b60008115159050919050565b6132fe816132e9565b811461330957600080fd5b50565b60008135905061331b816132f5565b92915050565b60008060006040848603121561333a5761333961327a565b5b600084013567ffffffffffffffff8111156133585761335761327f565b5b61336486828701613293565b935093505060206133778682870161330c565b9150509250925092565b6000819050919050565b61339481613381565b82525050565b60006020820190506133af600083018461338b565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133ef5780820151818401526020810190506133d4565b838111156133fe576000848401525b50505050565b6000601f19601f8301169050919050565b6000613420826133b5565b61342a81856133c0565b935061343a8185602086016133d1565b61344381613404565b840191505092915050565b600060208201905081810360008301526134688184613415565b905092915050565b61347981613381565b811461348457600080fd5b50565b60008135905061349681613470565b92915050565b6000602082840312156134b2576134b161327a565b5b60006134c084828501613487565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134f4826134c9565b9050919050565b613504816134e9565b811461350f57600080fd5b50565b600081359050613521816134fb565b92915050565b6000806040838503121561353e5761353d61327a565b5b600061354c85828601613512565b925050602061355d85828601613487565b9150509250929050565b613570816132e9565b82525050565b600060208201905061358b6000830184613567565b92915050565b60008083601f8401126135a7576135a6613284565b5b8235905067ffffffffffffffff8111156135c4576135c3613289565b5b6020830191508360208202830111156135e0576135df61328e565b5b9250929050565b6000806000806000606086880312156136035761360261327a565b5b600061361188828901613512565b955050602086013567ffffffffffffffff8111156136325761363161327f565b5b61363e88828901613293565b9450945050604086013567ffffffffffffffff8111156136615761366061327f565b5b61366d88828901613591565b92509250509295509295909350565b6000806000606084860312156136955761369461327a565b5b60006136a386828701613512565b93505060206136b486828701613512565b92505060406136c586828701613487565b9150509250925092565b6000602082840312156136e5576136e461327a565b5b60006136f384828501613512565b91505092915050565b600060ff82169050919050565b613712816136fc565b82525050565b600060208201905061372d6000830184613709565b92915050565b60008060006060848603121561374c5761374b61327a565b5b600061375a86828701613487565b935050602061376b86828701613487565b925050604061377c86828701613487565b9150509250925092565b61378f816134e9565b82525050565b60006020820190506137aa6000830184613786565b92915050565b600080604083850312156137c7576137c661327a565b5b60006137d585828601613512565b92505060206137e685828601613512565b9150509250929050565b600080604083850312156138075761380661327a565b5b60006138158582860161330c565b925050602061382685828601613487565b9150509250929050565b600061383b826134c9565b9050919050565b61384b81613830565b811461385657600080fd5b50565b60008135905061386881613842565b92915050565b6000602082840312156138845761388361327a565b5b600061389284828501613859565b91505092915050565b6000819050919050565b60006138c06138bb6138b6846134c9565b61389b565b6134c9565b9050919050565b60006138d2826138a5565b9050919050565b60006138e4826138c7565b9050919050565b6138f4816138d9565b82525050565b600060208201905061390f60008301846138eb565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061394b6006836133c0565b915061395682613915565b602082019050919050565b6000602082019050818103600083015261397a8161393e565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b60006139dd6025836133c0565b91506139e882613981565b604082019050919050565b60006020820190508181036000830152613a0c816139d0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a7c82613381565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613aae57613aad613a42565b5b600182019050919050565b60008160011c9050919050565b6000808291508390505b6001851115613b1057808604811115613aec57613aeb613a42565b5b6001851615613afb5780820291505b8081029050613b0985613ab9565b9450613ad0565b94509492505050565b600082613b295760019050613be5565b81613b375760009050613be5565b8160018114613b4d5760028114613b5757613b86565b6001915050613be5565b60ff841115613b6957613b68613a42565b5b8360020a915084821115613b8057613b7f613a42565b5b50613be5565b5060208310610133831016604e8410600b8410161715613bbb5782820a905083811115613bb657613bb5613a42565b5b613be5565b613bc88484846001613ac6565b92509050818404811115613bdf57613bde613a42565b5b81810290505b9392505050565b6000613bf782613381565b9150613c02836136fc565b9250613c2f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613b19565b905092915050565b6000613c4282613381565b9150613c4d83613381565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613c8657613c85613a42565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ccb82613381565b9150613cd683613381565b925082613ce657613ce5613c91565b5b828204905092915050565b7f21415554484f52495a4544000000000000000000000000000000000000000000600082015250565b6000613d27600b836133c0565b9150613d3282613cf1565b602082019050919050565b60006020820190508181036000830152613d5681613d1a565b9050919050565b7f4d69736d61746368206265747765656e206164647265737320616e6420746f6b60008201527f656e20636f756e74000000000000000000000000000000000000000000000000602082015250565b6000613db96028836133c0565b9150613dc482613d5d565b604082019050919050565b60006020820190508181036000830152613de881613dac565b9050919050565b6000613dfa82613381565b9150613e0583613381565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e3a57613e39613a42565b5b828201905092915050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b6000613e7b601b836133c0565b9150613e8682613e45565b602082019050919050565b60006020820190508181036000830152613eaa81613e6e565b9050919050565b6000613ebc82613381565b9150613ec783613381565b925082821015613eda57613ed9613a42565b5b828203905092915050565b600081519050613ef481613470565b92915050565b600060208284031215613f1057613f0f61327a565b5b6000613f1e84828501613ee5565b91505092915050565b6000604082019050613f3c6000830185613786565b613f49602083018461338b565b9392505050565b600081519050613f5f816132f5565b92915050565b600060208284031215613f7b57613f7a61327a565b5b6000613f8984828501613f50565b91505092915050565b7f596f75206d757374206265206e6f6d696e6174656420617320706f74656e746960008201527f616c206f776e6572206265666f726520796f752063616e20616363657074207460208201527f686520726f6c652e000000000000000000000000000000000000000000000000604082015250565b60006140146048836133c0565b915061401f82613f92565b606082019050919050565b6000602082019050818103600083015261404381614007565b9050919050565b7f416d6f756e7420746f6f20686967680000000000000000000000000000000000600082015250565b6000614080600f836133c0565b915061408b8261404a565b602082019050919050565b600060208201905081810360008301526140af81614073565b9050919050565b7f4f574e45522063616e7420626520756e617574686f72697a6564000000000000600082015250565b60006140ec601a836133c0565b91506140f7826140b6565b602082019050919050565b6000602082019050818103600083015261411b816140df565b9050919050565b7f416c726561647920746865206f776e6572000000000000000000000000000000600082015250565b60006141586011836133c0565b915061416382614122565b602082019050919050565b600060208201905081810360008301526141878161414b565b9050919050565b7f43616e206e6f74206265207a65726f20616464726573732e0000000000000000600082015250565b60006141c46018836133c0565b91506141cf8261418e565b602082019050919050565b600060208201905081810360008301526141f3816141b7565b9050919050565b6000614205826138c7565b9050919050565b614215816141fa565b82525050565b6000602082019050614230600083018461420c565b92915050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b600061426c6018836133c0565b915061427782614236565b602082019050919050565b6000602082019050818103600083015261429b8161425f565b9050919050565b7f4d6178205458204c696d69742045786365656465640000000000000000000000600082015250565b60006142d86015836133c0565b91506142e3826142a2565b602082019050919050565b60006020820190508181036000830152614307816142cb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614344601b836133c0565b915061434f8261430e565b602082019050919050565b6000602082019050818103600083015261437381614337565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b60006143ce6143c96143c4846143a9565b61389b565b613381565b9050919050565b6143de816143b3565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614419816134e9565b82525050565b600061442b8383614410565b60208301905092915050565b6000602082019050919050565b600061444f826143e4565b61445981856143ef565b935061446483614400565b8060005b8381101561449557815161447c888261441f565b975061448783614437565b925050600181019050614468565b5085935050505092915050565b600060a0820190506144b7600083018861338b565b6144c460208301876143d5565b81810360408301526144d68186614444565b90506144e56060830185613786565b6144f2608083018461338b565b9695505050505050565b600060c0820190506145116000830189613786565b61451e602083018861338b565b61452b60408301876143d5565b61453860608301866143d5565b6145456080830185613786565b61455260a083018461338b565b979650505050505050565b6000806000606084860312156145765761457561327a565b5b600061458486828701613ee5565b935050602061459586828701613ee5565b92505060406145a686828701613ee5565b9150509250925092565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061460c6021836133c0565b9150614617826145b0565b604082019050919050565b6000602082019050818103600083015261463b816145ff565b905091905056fea264697066735822122072cdd028f27ec36ff071d7f936d9bc0994a1e67727335dc2554d38df5a6bbe2c64736f6c634300080f0033

Deployed Bytecode Sourcemap

4333:9962:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12592:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11980:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5655:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4586:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7733:174;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6837:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5287:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4729:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13661:629;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10410:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5241:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7355:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13514:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2606:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5340:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4686;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13116:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5036:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12282:302;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7061:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5423:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12910:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5618:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4914:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10625:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4855:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3101:368;;;;;;;;;;;;;:::i;:::-;;4801:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6612:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5087:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4635:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5203:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5540:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7191:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2337:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7913:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5142:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6696:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13265:237;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2439:159;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2832:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5509:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2717:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5381:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5578:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12592:310;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12726:3:::1;12707:9;;:16;;:22;12699:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12786:9;12781:114;12803:9;;:16;;12799:1;:20;12781:114;;;12877:6;12841:19;:33;12861:9;;12871:1;12861:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12841:33;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12821:3;;;;:::i;:::-;;;12781:114;;;;12592:310:::0;;;:::o;11980:294::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12106:3:::1;12087:9;;:16;;:22;12079:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12166:9;12161:106;12183:9;;:16;;12179:1;:20;12161:106;;;12249:6;12221:11;:25;12233:9;;12243:1;12233:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12221:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;12201:3;;;;:::i;:::-;;;12161:106;;;;11980:294:::0;;;:::o;5655:49::-;;;;:::o;4586:42::-;;;;;;;;;;;;;;;;;;;:::o;7733:174::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7895:4:::1;7867:23;4719:1;4780:2;:12;;;;:::i;:::-;4767:10;:25;;;;:::i;:::-;7853:37;;;;:::i;:::-;7852:47;;;;:::i;:::-;7834:15;:65;;;;7733:174:::0;:::o;6837:216::-;6912:4;6964:6;6929:11;:23;6941:10;6929:23;;;;;;;;;;;;;;;:32;6953:7;6929:32;;;;;;;;;;;;;;;:41;;;;7007:7;6986:37;;6995:10;6986:37;;;7016:6;6986:37;;;;;;:::i;:::-;;;;;;;;7041:4;7034:11;;6837:216;;;;:::o;5287:44::-;5328:3;5287:44;:::o;4729:63::-;4719:1;4780:2;:12;;;;:::i;:::-;4767:10;:25;;;;:::i;:::-;4729:63;:::o;13661:629::-;2278:24;2291:10;2278:12;:24::i;:::-;2270:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13813:3:::1;13794:9;;:16;;:22;13786:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13896:6;;:13;;13876:9;;:16;;:33;13868:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13966:12;13999:6:::0;13995:90:::1;14013:9;;:16;;14009:1;:20;13995:90;;;14064:6;;14071:1;14064:9;;;;;;;:::i;:::-;;;;;;;;14057:4;:16;;;;:::i;:::-;14050:23;;14031:3;;;;;:::i;:::-;;;;13995:90;;;;14124:4;14105:9;:15;14115:4;14105:15;;;;;;;;;;;;;;;;:23;;14097:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;14177:6;14173:110;14191:9;;:16;;14187:1;:20;14173:110;;;14228:43;14243:4;14248:9;;14258:1;14248:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;14261:6;;14268:1;14261:9;;;;;;;:::i;:::-;;;;;;;;14228:14;:43::i;:::-;;14209:3;;;;;:::i;:::-;;;;14173:110;;;;13775:515;13661:629:::0;;;;;:::o;10410:207::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10493:17:::1;10513:21;10493:41;;10553:10;10545:28;;:64;10605:3;10586:16;10574:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;10545:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10482:135;10410:207:::0;:::o;5241:38::-;;;;:::o;7355:370::-;7455:4;7510:17;7475:11;:19;7487:6;7475:19;;;;;;;;;;;;;;;:31;7495:10;7475:31;;;;;;;;;;;;;;;;:52;7472:186;;7577:69;7613:6;7577:69;;;;;;;;;;;;;;;;;:11;:19;7589:6;7577:19;;;;;;;;;;;;;;;:31;7597:10;7577:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;7543:11;:19;7555:6;7543:19;;;;;;;;;;;;;;;:31;7563:10;7543:31;;;;;;;;;;;;;;;:103;;;;7472:186;7677:40;7691:6;7699:9;7710:6;7677:13;:40::i;:::-;7670:47;;7355:370;;;;;:::o;13514:137::-;13567:7;13627:9;:15;4535:42;13627:15;;;;;;;;;;;;;;;;13609:9;:15;4462:42;13609:15;;;;;;;;;;;;;;;;4719:1;4780:2;:12;;;;:::i;:::-;4767:10;:25;;;;:::i;:::-;13595:29;;;;:::i;:::-;:47;;;;:::i;:::-;13587:56;;13514:137;:::o;2606:103::-;2661:4;2696:5;;;;;;;;;;;2685:16;;:7;:16;;;2678:23;;2606:103;;;:::o;5340:34::-;;;;:::o;4686:::-;4719:1;4686:34;:::o;13116:141::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13201:13:::1;13186:12;:28;;;;13236:13;13225:8;:24;;;;13116:141:::0;:::o;5036:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;12282:302::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;12412:3:::1;12393:9;;:16;;:22;12385:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12472:9;12467:110;12489:9;;:16;;12485:1;:20;12467:110;;;12559:6;12527:15;:29;12543:9;;12553:1;12543:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12527:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12507:3;;;;:::i;:::-;;;12467:110;;;;12282:302:::0;;;:::o;7061:122::-;7116:4;7140:35;7148:7;7157:17;7140:7;:35::i;:::-;7133:42;;7061:122;;;:::o;5423:39::-;;;;:::o;12910:198::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13026:5:::1;13009:14;:22;;;;13058:4;13042:13;:20;;;;13094:6;13073:18;:27;;;;12910:198:::0;;;:::o;5618:30::-;;;;;;;;;;;;;:::o;4914:45::-;;;;;;;;;;;;;;;;;:::o;10625:284::-;10716:12;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10754:1:::1;10744:6;:11:::0;10741:95:::1;;10786:12;10780:29;;;10818:4;10780:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10771:53;;10741:95;10859:12;10853:28;;;10882:10;10894:6;10853:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10846:55;;10625:284:::0;;;;:::o;4855:50::-;;;;:::o;3101:368::-;3168:14;;;;;;;;;;;3154:28;;:10;:28;;;3146:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;3294:5;3270:14;:21;3285:5;;;;;;;;;;;3270:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;3343:4;3310:14;:30;3325:14;;;;;;;;;;;3310:30;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;3366:14;;;;;;;;;;;3358:5;;:22;;;;;;;;;;;;;;;;;;3416:1;3391:14;;:27;;;;;;;;;;;;;;;;;;3434;3455:5;;;;;;;;;;3434:27;;;;;;:::i;:::-;;;;;;;;3101:368::o;4801:47::-;;;;:::o;6612:78::-;6664:7;6682:5;;;;;;;;;;;6675:12;;6612:78;:::o;5087:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;4635:44::-;;;;;;;;;;;;;;;;;;;:::o;5203:31::-;;;;:::o;5540:29::-;;;:::o;7191:156::-;7271:4;7295:44;7309:10;7321:9;7332:6;7295:13;:44::i;:::-;7288:51;;7191:156;;;;:::o;2337:94::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2419:4:::1;2397:14;:19;2412:3;2397:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2337:94:::0;:::o;7913:169::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8070:4:::1;8041:24;4719:1;4780:2;:12;;;;:::i;:::-;4767:10;:25;;;;:::i;:::-;8027:38;;;;:::i;:::-;8026:48;;;;:::i;:::-;8011:12;:63;;;;7913:169:::0;:::o;5142:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;6696:133::-;6780:7;6798:11;:19;6810:6;6798:19;;;;;;;;;;;;;;;:28;6818:7;6798:28;;;;;;;;;;;;;;;;6791:35;;6696:133;;;;:::o;13265:237::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13384:2:::1;13369:12;:17;13361:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;13433:8;13419:11;;:22;;;;;;;;;;;;;;;;;;13482:12;4719:1;4780:2;:12;;;;:::i;:::-;4767:10;:25;;;;:::i;:::-;13468:26;;;;:::i;:::-;13452:13;:42;;;;13265:237:::0;;:::o;2439:159::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2516:5:::1;::::0;::::1;;;;;;;;2509:12;;:3;:12;;::::0;2501:51:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2585:5;2563:14;:19;2578:3;2563:19;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2439:159:::0;:::o;2832:261::-;2188:19;2196:10;2188:7;:19::i;:::-;2180:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2923:5:::1;::::0;::::1;;;;;;;;2916:12;;:3;:12;;::::0;2908:42:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2984:1;2969:17;;:3;:17;;::::0;2961:54:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3043:3;3026:14;;:20;;;;;;;;;;;;;;;;;;3062:23;3081:3;3062:23;;;;;;:::i;:::-;;;;;;;;2832:261:::0;:::o;5509:24::-;;;;;;;;;;;;;:::o;2717:107::-;2773:4;2797:14;:19;2812:3;2797:19;;;;;;;;;;;;;;;;;;;;;;;;;2790:26;;2717:107;;;:::o;5381:35::-;;;;:::o;5578:31::-;;;;;;;;;;;;;:::o;9076:330::-;9169:4;9206:53;9228:6;9206:53;;;;;;;;;;;;;;;;;:9;:17;9216:6;9206:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9186:9;:17;9196:6;9186:17;;;;;;;;;;;;;;;:73;;;;9293:32;9318:6;9293:9;:20;9303:9;9293:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;9270:9;:20;9280:9;9270:20;;;;;;;;;;;;;;;:55;;;;9358:9;9341:35;;9350:6;9341:35;;;9369:6;9341:35;;;;;;:::i;:::-;;;;;;;;9394:4;9387:11;;9076:330;;;;;:::o;422:192::-;508:7;541:1;536;:6;;544:12;528:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;568:9;584:1;580;:5;;;;:::i;:::-;568:17;;605:1;598:8;;;422:192;;;;;:::o;8090:974::-;8182:4;8202:6;;;;;;;;;;;8199:63;;;8218:41;8233:6;8241:9;8252:6;8218:14;:41::i;:::-;8211:48;;;;8199:63;8279:14;:22;8294:6;8279:22;;;;;;;;;;;;;;;;;;;;;;;;;8278:23;:55;;;;;8306:19;:27;8326:6;8306:27;;;;;;;;;;;;;;;;;;;;;;;;;8305:28;8278:55;:90;;;;;8338:19;:30;8358:9;8338:30;;;;;;;;;;;;;;;;;;;;;;;;;8337:31;8278:90;:111;;;;;8385:4;8372:17;;:9;:17;;;;8278:111;8274:230;;;8449:15;;8438:6;8415:9;:20;8425:9;8415:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;8414:50;;8406:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;8274:230;8535:12;;8525:6;:22;;8524:51;;;;8552:15;:23;8568:6;8552:23;;;;;;;;;;;;;;;;;;;;;;;;;8524:51;:81;;;;8579:15;:26;8595:9;8579:26;;;;;;;;;;;;;;;;;;;;;;;;;8524:81;8516:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;8647:16;:14;:16::i;:::-;8644:35;;;8666:10;:8;:10::i;:::-;8644:35;8711:53;8733:6;8711:53;;;;;;;;;;;;;;;;;:9;:17;8721:6;8711:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;8691:9;:17;8701:6;8691:17;;;;;;;;;;;;;;;:73;;;;8777:22;8803:11;:19;8815:6;8803:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;8826:11;:22;8838:9;8826:22;;;;;;;;;;;;;;;;;;;;;;;;;8803:45;8802:93;;8861:34;8869:6;8877;8885:9;8861:7;:34::i;:::-;8802:93;;;8852:6;8802:93;8777:118;;8931:40;8956:14;8931:9;:20;8941:9;8931:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;8908:9;:20;8918:9;8908:20;;;;;;;;;;;;;;;:63;;;;9008:9;8991:43;;9000:6;8991:43;;;9019:14;8991:43;;;;;;:::i;:::-;;;;;;;;9052:4;9045:11;;;8090:974;;;;;;:::o;93:181::-;151:7;171:9;187:1;183;:5;;;;:::i;:::-;171:17;;212:1;207;:6;;199:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;265:1;258:8;;;93:181;;;;:::o;10205:197::-;10254:4;10292;10278:18;;:10;:18;;;;:38;;;;;10310:6;;;;;;;;;;;10309:7;10278:38;:62;;;;;10329:11;;;;;;;;;;;10278:62;:116;;;;;10381:13;;10353:9;:24;10371:4;10353:24;;;;;;;;;;;;;;;;:41;;10278:116;10271:123;;10205:197;:::o;10917:1053::-;5762:4;5753:6;;:13;;;;;;;;;;;;;;;;;;10966:23:::1;10992:52;11042:1;10992:45;11028:8;;10992:31;11010:12;;10992:13;;:17;;:31;;;;:::i;:::-;:35;;:45;;;;:::i;:::-;:49;;:52;;;;:::i;:::-;10966:78;;11055:20;11078:34;11096:15;11078:13;;:17;;:34;;;;:::i;:::-;11055:57;;11125:21;11163:1;11149:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11125:40;;11194:4;11176;11181:1;11176:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11220:4;11210;11215:1;11210:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11237:6;;;;;;;;;;;:57;;;11309:12;11336:1;11352:4;11379;11399:15;11237:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11438:17;11458:21;11438:41;;11492:19;11514:33;11527:19;11544:1;11527:12;;:16;;:19;;;;:::i;:::-;11514:8;;:12;;:33;;;;:::i;:::-;11492:55;;11568:26;11597:51;11646:1;11597:44;11629:11;11597:27;11611:12;;11597:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;:48;;:51;;;;:::i;:::-;11568:80;;11690:1;11672:15;:19;11669:294;;;11707:6;;;;;;;;;;;:22;;;11737:18;11783:4;11807:15;11841:1;11861::::0;11881:21:::1;;;;;;;;;;;11921:15;11707:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11669:294;10955:1015;;;;;;5780:5:::0;5771:6;;:14;;;;;;;;;;;;;;;;;;10917:1053::o;9414:783::-;9500:7;9533:1;9523:6;:11;:28;;;;9550:1;9538:8;;:13;9523:28;9520:72;;;9574:6;9567:13;;;;9520:72;9604:18;9625;;9604:39;;9672:4;9659:17;;:9;:17;;;9656:154;;9706:14;;9693:27;;9656:154;;;9751:4;9741:14;;:6;:14;;;9738:72;;9785:13;;9772:26;;9738:72;9656:154;9822:17;9842:62;9900:3;5328;9883:20;;;;:::i;:::-;9842:36;9867:10;9842:20;9853:8;;9842:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;9822:82;;9915:22;9940:9;9915:34;;9982:1;9965:14;:18;9962:187;;;10026:44;10055:14;10026:9;:24;10044:4;10026:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;9999:9;:24;10017:4;9999:24;;;;;;;;;;;;;;;:71;;;;10115:4;10090:47;;10099:6;10090:47;;;10122:14;10090:47;;;;;;:::i;:::-;;;;;;;;9962:187;10168:21;10179:9;10168:6;:10;;:21;;;;:::i;:::-;10161:28;;;;;9414:783;;;;;;:::o;620:250::-;678:7;707:1;702;:6;698:47;;732:1;725:8;;;;698:47;757:9;773:1;769;:5;;;;:::i;:::-;757:17;;802:1;797;793;:5;;;;:::i;:::-;:10;785:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;861:1;854:8;;;620:250;;;;;:::o;876:132::-;934:7;961:39;965:1;968;961:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;954:46;;876:132;;;;:::o;280:136::-;338:7;365:43;369:1;372;365:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;358:50;;280:136;;;;:::o;1014:189::-;1100:7;1132:1;1128;:5;1135:12;1120:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1159:9;1175:1;1171;:5;;;;:::i;:::-;1159:17;;1194:1;1187:8;;;1014:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:77::-;2392:7;2421:5;2410:16;;2355:77;;;:::o;2438:118::-;2525:24;2543:5;2525:24;:::i;:::-;2520:3;2513:37;2438:118;;:::o;2562:222::-;2655:4;2693:2;2682:9;2678:18;2670:26;;2706:71;2774:1;2763:9;2759:17;2750:6;2706:71;:::i;:::-;2562:222;;;;:::o;2790:99::-;2842:6;2876:5;2870:12;2860:22;;2790:99;;;:::o;2895:169::-;2979:11;3013:6;3008:3;3001:19;3053:4;3048:3;3044:14;3029:29;;2895:169;;;;:::o;3070:307::-;3138:1;3148:113;3162:6;3159:1;3156:13;3148:113;;;3247:1;3242:3;3238:11;3232:18;3228:1;3223:3;3219:11;3212:39;3184:2;3181:1;3177:10;3172:15;;3148:113;;;3279:6;3276:1;3273:13;3270:101;;;3359:1;3350:6;3345:3;3341:16;3334:27;3270:101;3119:258;3070:307;;;:::o;3383:102::-;3424:6;3475:2;3471:7;3466:2;3459:5;3455:14;3451:28;3441:38;;3383:102;;;:::o;3491:364::-;3579:3;3607:39;3640:5;3607:39;:::i;:::-;3662:71;3726:6;3721:3;3662:71;:::i;:::-;3655:78;;3742:52;3787:6;3782:3;3775:4;3768:5;3764:16;3742:52;:::i;:::-;3819:29;3841:6;3819:29;:::i;:::-;3814:3;3810:39;3803:46;;3583:272;3491:364;;;;:::o;3861:313::-;3974:4;4012:2;4001:9;3997:18;3989:26;;4061:9;4055:4;4051:20;4047:1;4036:9;4032:17;4025:47;4089:78;4162:4;4153:6;4089:78;:::i;:::-;4081:86;;3861:313;;;;:::o;4180:122::-;4253:24;4271:5;4253:24;:::i;:::-;4246:5;4243:35;4233:63;;4292:1;4289;4282:12;4233:63;4180:122;:::o;4308:139::-;4354:5;4392:6;4379:20;4370:29;;4408:33;4435:5;4408:33;:::i;:::-;4308:139;;;;:::o;4453:329::-;4512:6;4561:2;4549:9;4540:7;4536:23;4532:32;4529:119;;;4567:79;;:::i;:::-;4529:119;4687:1;4712:53;4757:7;4748:6;4737:9;4733:22;4712:53;:::i;:::-;4702:63;;4658:117;4453:329;;;;:::o;4788:126::-;4825:7;4865:42;4858:5;4854:54;4843:65;;4788:126;;;:::o;4920:96::-;4957:7;4986:24;5004:5;4986:24;:::i;:::-;4975:35;;4920:96;;;:::o;5022:122::-;5095:24;5113:5;5095:24;:::i;:::-;5088:5;5085:35;5075:63;;5134:1;5131;5124:12;5075:63;5022:122;:::o;5150:139::-;5196:5;5234:6;5221:20;5212:29;;5250:33;5277:5;5250:33;:::i;:::-;5150:139;;;;:::o;5295:474::-;5363:6;5371;5420:2;5408:9;5399:7;5395:23;5391:32;5388:119;;;5426:79;;:::i;:::-;5388:119;5546:1;5571:53;5616:7;5607:6;5596:9;5592:22;5571:53;:::i;:::-;5561:63;;5517:117;5673:2;5699:53;5744:7;5735:6;5724:9;5720:22;5699:53;:::i;:::-;5689:63;;5644:118;5295:474;;;;;:::o;5775:109::-;5856:21;5871:5;5856:21;:::i;:::-;5851:3;5844:34;5775:109;;:::o;5890:210::-;5977:4;6015:2;6004:9;6000:18;5992:26;;6028:65;6090:1;6079:9;6075:17;6066:6;6028:65;:::i;:::-;5890:210;;;;:::o;6123:568::-;6196:8;6206:6;6256:3;6249:4;6241:6;6237:17;6233:27;6223:122;;6264:79;;:::i;:::-;6223:122;6377:6;6364:20;6354:30;;6407:18;6399:6;6396:30;6393:117;;;6429:79;;:::i;:::-;6393:117;6543:4;6535:6;6531:17;6519:29;;6597:3;6589:4;6581:6;6577:17;6567:8;6563:32;6560:41;6557:128;;;6604:79;;:::i;:::-;6557:128;6123:568;;;;;:::o;6697:1079::-;6828:6;6836;6844;6852;6860;6909:2;6897:9;6888:7;6884:23;6880:32;6877:119;;;6915:79;;:::i;:::-;6877:119;7035:1;7060:53;7105:7;7096:6;7085:9;7081:22;7060:53;:::i;:::-;7050:63;;7006:117;7190:2;7179:9;7175:18;7162:32;7221:18;7213:6;7210:30;7207:117;;;7243:79;;:::i;:::-;7207:117;7356:80;7428:7;7419:6;7408:9;7404:22;7356:80;:::i;:::-;7338:98;;;;7133:313;7513:2;7502:9;7498:18;7485:32;7544:18;7536:6;7533:30;7530:117;;;7566:79;;:::i;:::-;7530:117;7679:80;7751:7;7742:6;7731:9;7727:22;7679:80;:::i;:::-;7661:98;;;;7456:313;6697:1079;;;;;;;;:::o;7782:619::-;7859:6;7867;7875;7924:2;7912:9;7903:7;7899:23;7895:32;7892:119;;;7930:79;;:::i;:::-;7892:119;8050:1;8075:53;8120:7;8111:6;8100:9;8096:22;8075:53;:::i;:::-;8065:63;;8021:117;8177:2;8203:53;8248:7;8239:6;8228:9;8224:22;8203:53;:::i;:::-;8193:63;;8148:118;8305:2;8331:53;8376:7;8367:6;8356:9;8352:22;8331:53;:::i;:::-;8321:63;;8276:118;7782:619;;;;;:::o;8407:329::-;8466:6;8515:2;8503:9;8494:7;8490:23;8486:32;8483:119;;;8521:79;;:::i;:::-;8483:119;8641:1;8666:53;8711:7;8702:6;8691:9;8687:22;8666:53;:::i;:::-;8656:63;;8612:117;8407:329;;;;:::o;8742:86::-;8777:7;8817:4;8810:5;8806:16;8795:27;;8742:86;;;:::o;8834:112::-;8917:22;8933:5;8917:22;:::i;:::-;8912:3;8905:35;8834:112;;:::o;8952:214::-;9041:4;9079:2;9068:9;9064:18;9056:26;;9092:67;9156:1;9145:9;9141:17;9132:6;9092:67;:::i;:::-;8952:214;;;;:::o;9172:619::-;9249:6;9257;9265;9314:2;9302:9;9293:7;9289:23;9285:32;9282:119;;;9320:79;;:::i;:::-;9282:119;9440:1;9465:53;9510:7;9501:6;9490:9;9486:22;9465:53;:::i;:::-;9455:63;;9411:117;9567:2;9593:53;9638:7;9629:6;9618:9;9614:22;9593:53;:::i;:::-;9583:63;;9538:118;9695:2;9721:53;9766:7;9757:6;9746:9;9742:22;9721:53;:::i;:::-;9711:63;;9666:118;9172:619;;;;;:::o;9797:118::-;9884:24;9902:5;9884:24;:::i;:::-;9879:3;9872:37;9797:118;;:::o;9921:222::-;10014:4;10052:2;10041:9;10037:18;10029:26;;10065:71;10133:1;10122:9;10118:17;10109:6;10065:71;:::i;:::-;9921:222;;;;:::o;10149:474::-;10217:6;10225;10274:2;10262:9;10253:7;10249:23;10245:32;10242:119;;;10280:79;;:::i;:::-;10242:119;10400:1;10425:53;10470:7;10461:6;10450:9;10446:22;10425:53;:::i;:::-;10415:63;;10371:117;10527:2;10553:53;10598:7;10589:6;10578:9;10574:22;10553:53;:::i;:::-;10543:63;;10498:118;10149:474;;;;;:::o;10629:468::-;10694:6;10702;10751:2;10739:9;10730:7;10726:23;10722:32;10719:119;;;10757:79;;:::i;:::-;10719:119;10877:1;10902:50;10944:7;10935:6;10924:9;10920:22;10902:50;:::i;:::-;10892:60;;10848:114;11001:2;11027:53;11072:7;11063:6;11052:9;11048:22;11027:53;:::i;:::-;11017:63;;10972:118;10629:468;;;;;:::o;11103:104::-;11148:7;11177:24;11195:5;11177:24;:::i;:::-;11166:35;;11103:104;;;:::o;11213:138::-;11294:32;11320:5;11294:32;:::i;:::-;11287:5;11284:43;11274:71;;11341:1;11338;11331:12;11274:71;11213:138;:::o;11357:155::-;11411:5;11449:6;11436:20;11427:29;;11465:41;11500:5;11465:41;:::i;:::-;11357:155;;;;:::o;11518:345::-;11585:6;11634:2;11622:9;11613:7;11609:23;11605:32;11602:119;;;11640:79;;:::i;:::-;11602:119;11760:1;11785:61;11838:7;11829:6;11818:9;11814:22;11785:61;:::i;:::-;11775:71;;11731:125;11518:345;;;;:::o;11869:60::-;11897:3;11918:5;11911:12;;11869:60;;;:::o;11935:142::-;11985:9;12018:53;12036:34;12045:24;12063:5;12045:24;:::i;:::-;12036:34;:::i;:::-;12018:53;:::i;:::-;12005:66;;11935:142;;;:::o;12083:126::-;12133:9;12166:37;12197:5;12166:37;:::i;:::-;12153:50;;12083:126;;;:::o;12215:144::-;12283:9;12316:37;12347:5;12316:37;:::i;:::-;12303:50;;12215:144;;;:::o;12365:167::-;12470:55;12519:5;12470:55;:::i;:::-;12465:3;12458:68;12365:167;;:::o;12538:258::-;12649:4;12687:2;12676:9;12672:18;12664:26;;12700:89;12786:1;12775:9;12771:17;12762:6;12700:89;:::i;:::-;12538:258;;;;:::o;12802:156::-;12942:8;12938:1;12930:6;12926:14;12919:32;12802:156;:::o;12964:365::-;13106:3;13127:66;13191:1;13186:3;13127:66;:::i;:::-;13120:73;;13202:93;13291:3;13202:93;:::i;:::-;13320:2;13315:3;13311:12;13304:19;;12964:365;;;:::o;13335:419::-;13501:4;13539:2;13528:9;13524:18;13516:26;;13588:9;13582:4;13578:20;13574:1;13563:9;13559:17;13552:47;13616:131;13742:4;13616:131;:::i;:::-;13608:139;;13335:419;;;:::o;13760:224::-;13900:34;13896:1;13888:6;13884:14;13877:58;13969:7;13964:2;13956:6;13952:15;13945:32;13760:224;:::o;13990:366::-;14132:3;14153:67;14217:2;14212:3;14153:67;:::i;:::-;14146:74;;14229:93;14318:3;14229:93;:::i;:::-;14347:2;14342:3;14338:12;14331:19;;13990:366;;;:::o;14362:419::-;14528:4;14566:2;14555:9;14551:18;14543:26;;14615:9;14609:4;14605:20;14601:1;14590:9;14586:17;14579:47;14643:131;14769:4;14643:131;:::i;:::-;14635:139;;14362:419;;;:::o;14787:180::-;14835:77;14832:1;14825:88;14932:4;14929:1;14922:15;14956:4;14953:1;14946:15;14973:180;15021:77;15018:1;15011:88;15118:4;15115:1;15108:15;15142:4;15139:1;15132:15;15159:233;15198:3;15221:24;15239:5;15221:24;:::i;:::-;15212:33;;15267:66;15260:5;15257:77;15254:103;;15337:18;;:::i;:::-;15254:103;15384:1;15377:5;15373:13;15366:20;;15159:233;;;:::o;15398:102::-;15440:8;15487:5;15484:1;15480:13;15459:34;;15398:102;;;:::o;15506:848::-;15567:5;15574:4;15598:6;15589:15;;15622:5;15613:14;;15636:712;15657:1;15647:8;15644:15;15636:712;;;15752:4;15747:3;15743:14;15737:4;15734:24;15731:50;;;15761:18;;:::i;:::-;15731:50;15811:1;15801:8;15797:16;15794:451;;;16226:4;16219:5;16215:16;16206:25;;15794:451;16276:4;16270;16266:15;16258:23;;16306:32;16329:8;16306:32;:::i;:::-;16294:44;;15636:712;;;15506:848;;;;;;;:::o;16360:1073::-;16414:5;16605:8;16595:40;;16626:1;16617:10;;16628:5;;16595:40;16654:4;16644:36;;16671:1;16662:10;;16673:5;;16644:36;16740:4;16788:1;16783:27;;;;16824:1;16819:191;;;;16733:277;;16783:27;16801:1;16792:10;;16803:5;;;16819:191;16864:3;16854:8;16851:17;16848:43;;;16871:18;;:::i;:::-;16848:43;16920:8;16917:1;16913:16;16904:25;;16955:3;16948:5;16945:14;16942:40;;;16962:18;;:::i;:::-;16942:40;16995:5;;;16733:277;;17119:2;17109:8;17106:16;17100:3;17094:4;17091:13;17087:36;17069:2;17059:8;17056:16;17051:2;17045:4;17042:12;17038:35;17022:111;17019:246;;;17175:8;17169:4;17165:19;17156:28;;17210:3;17203:5;17200:14;17197:40;;;17217:18;;:::i;:::-;17197:40;17250:5;;17019:246;17290:42;17328:3;17318:8;17312:4;17309:1;17290:42;:::i;:::-;17275:57;;;;17364:4;17359:3;17355:14;17348:5;17345:25;17342:51;;;17373:18;;:::i;:::-;17342:51;17422:4;17415:5;17411:16;17402:25;;16360:1073;;;;;;:::o;17439:281::-;17497:5;17521:23;17539:4;17521:23;:::i;:::-;17513:31;;17565:25;17581:8;17565:25;:::i;:::-;17553:37;;17609:104;17646:66;17636:8;17630:4;17609:104;:::i;:::-;17600:113;;17439:281;;;;:::o;17726:348::-;17766:7;17789:20;17807:1;17789:20;:::i;:::-;17784:25;;17823:20;17841:1;17823:20;:::i;:::-;17818:25;;18011:1;17943:66;17939:74;17936:1;17933:81;17928:1;17921:9;17914:17;17910:105;17907:131;;;18018:18;;:::i;:::-;17907:131;18066:1;18063;18059:9;18048:20;;17726:348;;;;:::o;18080:180::-;18128:77;18125:1;18118:88;18225:4;18222:1;18215:15;18249:4;18246:1;18239:15;18266:185;18306:1;18323:20;18341:1;18323:20;:::i;:::-;18318:25;;18357:20;18375:1;18357:20;:::i;:::-;18352:25;;18396:1;18386:35;;18401:18;;:::i;:::-;18386:35;18443:1;18440;18436:9;18431:14;;18266:185;;;;:::o;18457:161::-;18597:13;18593:1;18585:6;18581:14;18574:37;18457:161;:::o;18624:366::-;18766:3;18787:67;18851:2;18846:3;18787:67;:::i;:::-;18780:74;;18863:93;18952:3;18863:93;:::i;:::-;18981:2;18976:3;18972:12;18965:19;;18624:366;;;:::o;18996:419::-;19162:4;19200:2;19189:9;19185:18;19177:26;;19249:9;19243:4;19239:20;19235:1;19224:9;19220:17;19213:47;19277:131;19403:4;19277:131;:::i;:::-;19269:139;;18996:419;;;:::o;19421:227::-;19561:34;19557:1;19549:6;19545:14;19538:58;19630:10;19625:2;19617:6;19613:15;19606:35;19421:227;:::o;19654:366::-;19796:3;19817:67;19881:2;19876:3;19817:67;:::i;:::-;19810:74;;19893:93;19982:3;19893:93;:::i;:::-;20011:2;20006:3;20002:12;19995:19;;19654:366;;;:::o;20026:419::-;20192:4;20230:2;20219:9;20215:18;20207:26;;20279:9;20273:4;20269:20;20265:1;20254:9;20250:17;20243:47;20307:131;20433:4;20307:131;:::i;:::-;20299:139;;20026:419;;;:::o;20451:305::-;20491:3;20510:20;20528:1;20510:20;:::i;:::-;20505:25;;20544:20;20562:1;20544:20;:::i;:::-;20539:25;;20698:1;20630:66;20626:74;20623:1;20620:81;20617:107;;;20704:18;;:::i;:::-;20617:107;20748:1;20745;20741:9;20734:16;;20451:305;;;;:::o;20762:177::-;20902:29;20898:1;20890:6;20886:14;20879:53;20762:177;:::o;20945:366::-;21087:3;21108:67;21172:2;21167:3;21108:67;:::i;:::-;21101:74;;21184:93;21273:3;21184:93;:::i;:::-;21302:2;21297:3;21293:12;21286:19;;20945:366;;;:::o;21317:419::-;21483:4;21521:2;21510:9;21506:18;21498:26;;21570:9;21564:4;21560:20;21556:1;21545:9;21541:17;21534:47;21598:131;21724:4;21598:131;:::i;:::-;21590:139;;21317:419;;;:::o;21742:191::-;21782:4;21802:20;21820:1;21802:20;:::i;:::-;21797:25;;21836:20;21854:1;21836:20;:::i;:::-;21831:25;;21875:1;21872;21869:8;21866:34;;;21880:18;;:::i;:::-;21866:34;21925:1;21922;21918:9;21910:17;;21742:191;;;;:::o;21939:143::-;21996:5;22027:6;22021:13;22012:22;;22043:33;22070:5;22043:33;:::i;:::-;21939:143;;;;:::o;22088:351::-;22158:6;22207:2;22195:9;22186:7;22182:23;22178:32;22175:119;;;22213:79;;:::i;:::-;22175:119;22333:1;22358:64;22414:7;22405:6;22394:9;22390:22;22358:64;:::i;:::-;22348:74;;22304:128;22088:351;;;;:::o;22445:332::-;22566:4;22604:2;22593:9;22589:18;22581:26;;22617:71;22685:1;22674:9;22670:17;22661:6;22617:71;:::i;:::-;22698:72;22766:2;22755:9;22751:18;22742:6;22698:72;:::i;:::-;22445:332;;;;;:::o;22783:137::-;22837:5;22868:6;22862:13;22853:22;;22884:30;22908:5;22884:30;:::i;:::-;22783:137;;;;:::o;22926:345::-;22993:6;23042:2;23030:9;23021:7;23017:23;23013:32;23010:119;;;23048:79;;:::i;:::-;23010:119;23168:1;23193:61;23246:7;23237:6;23226:9;23222:22;23193:61;:::i;:::-;23183:71;;23139:125;22926:345;;;;:::o;23277:296::-;23417:34;23413:1;23405:6;23401:14;23394:58;23486:34;23481:2;23473:6;23469:15;23462:59;23555:10;23550:2;23542:6;23538:15;23531:35;23277:296;:::o;23579:366::-;23721:3;23742:67;23806:2;23801:3;23742:67;:::i;:::-;23735:74;;23818:93;23907:3;23818:93;:::i;:::-;23936:2;23931:3;23927:12;23920:19;;23579:366;;;:::o;23951:419::-;24117:4;24155:2;24144:9;24140:18;24132:26;;24204:9;24198:4;24194:20;24190:1;24179:9;24175:17;24168:47;24232:131;24358:4;24232:131;:::i;:::-;24224:139;;23951:419;;;:::o;24376:165::-;24516:17;24512:1;24504:6;24500:14;24493:41;24376:165;:::o;24547:366::-;24689:3;24710:67;24774:2;24769:3;24710:67;:::i;:::-;24703:74;;24786:93;24875:3;24786:93;:::i;:::-;24904:2;24899:3;24895:12;24888:19;;24547:366;;;:::o;24919:419::-;25085:4;25123:2;25112:9;25108:18;25100:26;;25172:9;25166:4;25162:20;25158:1;25147:9;25143:17;25136:47;25200:131;25326:4;25200:131;:::i;:::-;25192:139;;24919:419;;;:::o;25344:176::-;25484:28;25480:1;25472:6;25468:14;25461:52;25344:176;:::o;25526:366::-;25668:3;25689:67;25753:2;25748:3;25689:67;:::i;:::-;25682:74;;25765:93;25854:3;25765:93;:::i;:::-;25883:2;25878:3;25874:12;25867:19;;25526:366;;;:::o;25898:419::-;26064:4;26102:2;26091:9;26087:18;26079:26;;26151:9;26145:4;26141:20;26137:1;26126:9;26122:17;26115:47;26179:131;26305:4;26179:131;:::i;:::-;26171:139;;25898:419;;;:::o;26323:167::-;26463:19;26459:1;26451:6;26447:14;26440:43;26323:167;:::o;26496:366::-;26638:3;26659:67;26723:2;26718:3;26659:67;:::i;:::-;26652:74;;26735:93;26824:3;26735:93;:::i;:::-;26853:2;26848:3;26844:12;26837:19;;26496:366;;;:::o;26868:419::-;27034:4;27072:2;27061:9;27057:18;27049:26;;27121:9;27115:4;27111:20;27107:1;27096:9;27092:17;27085:47;27149:131;27275:4;27149:131;:::i;:::-;27141:139;;26868:419;;;:::o;27293:174::-;27433:26;27429:1;27421:6;27417:14;27410:50;27293:174;:::o;27473:366::-;27615:3;27636:67;27700:2;27695:3;27636:67;:::i;:::-;27629:74;;27712:93;27801:3;27712:93;:::i;:::-;27830:2;27825:3;27821:12;27814:19;;27473:366;;;:::o;27845:419::-;28011:4;28049:2;28038:9;28034:18;28026:26;;28098:9;28092:4;28088:20;28084:1;28073:9;28069:17;28062:47;28126:131;28252:4;28126:131;:::i;:::-;28118:139;;27845:419;;;:::o;28270:134::-;28328:9;28361:37;28392:5;28361:37;:::i;:::-;28348:50;;28270:134;;;:::o;28410:147::-;28505:45;28544:5;28505:45;:::i;:::-;28500:3;28493:58;28410:147;;:::o;28563:238::-;28664:4;28702:2;28691:9;28687:18;28679:26;;28715:79;28791:1;28780:9;28776:17;28767:6;28715:79;:::i;:::-;28563:238;;;;:::o;28807:174::-;28947:26;28943:1;28935:6;28931:14;28924:50;28807:174;:::o;28987:366::-;29129:3;29150:67;29214:2;29209:3;29150:67;:::i;:::-;29143:74;;29226:93;29315:3;29226:93;:::i;:::-;29344:2;29339:3;29335:12;29328:19;;28987:366;;;:::o;29359:419::-;29525:4;29563:2;29552:9;29548:18;29540:26;;29612:9;29606:4;29602:20;29598:1;29587:9;29583:17;29576:47;29640:131;29766:4;29640:131;:::i;:::-;29632:139;;29359:419;;;:::o;29784:171::-;29924:23;29920:1;29912:6;29908:14;29901:47;29784:171;:::o;29961:366::-;30103:3;30124:67;30188:2;30183:3;30124:67;:::i;:::-;30117:74;;30200:93;30289:3;30200:93;:::i;:::-;30318:2;30313:3;30309:12;30302:19;;29961:366;;;:::o;30333:419::-;30499:4;30537:2;30526:9;30522:18;30514:26;;30586:9;30580:4;30576:20;30572:1;30561:9;30557:17;30550:47;30614:131;30740:4;30614:131;:::i;:::-;30606:139;;30333:419;;;:::o;30758:177::-;30898:29;30894:1;30886:6;30882:14;30875:53;30758:177;:::o;30941:366::-;31083:3;31104:67;31168:2;31163:3;31104:67;:::i;:::-;31097:74;;31180:93;31269:3;31180:93;:::i;:::-;31298:2;31293:3;31289:12;31282:19;;30941:366;;;:::o;31313:419::-;31479:4;31517:2;31506:9;31502:18;31494:26;;31566:9;31560:4;31556:20;31552:1;31541:9;31537:17;31530:47;31594:131;31720:4;31594:131;:::i;:::-;31586:139;;31313:419;;;:::o;31738:180::-;31786:77;31783:1;31776:88;31883:4;31880:1;31873:15;31907:4;31904:1;31897:15;31924:85;31969:7;31998:5;31987:16;;31924:85;;;:::o;32015:158::-;32073:9;32106:61;32124:42;32133:32;32159:5;32133:32;:::i;:::-;32124:42;:::i;:::-;32106:61;:::i;:::-;32093:74;;32015:158;;;:::o;32179:147::-;32274:45;32313:5;32274:45;:::i;:::-;32269:3;32262:58;32179:147;;:::o;32332:114::-;32399:6;32433:5;32427:12;32417:22;;32332:114;;;:::o;32452:184::-;32551:11;32585:6;32580:3;32573:19;32625:4;32620:3;32616:14;32601:29;;32452:184;;;;:::o;32642:132::-;32709:4;32732:3;32724:11;;32762:4;32757:3;32753:14;32745:22;;32642:132;;;:::o;32780:108::-;32857:24;32875:5;32857:24;:::i;:::-;32852:3;32845:37;32780:108;;:::o;32894:179::-;32963:10;32984:46;33026:3;33018:6;32984:46;:::i;:::-;33062:4;33057:3;33053:14;33039:28;;32894:179;;;;:::o;33079:113::-;33149:4;33181;33176:3;33172:14;33164:22;;33079:113;;;:::o;33228:732::-;33347:3;33376:54;33424:5;33376:54;:::i;:::-;33446:86;33525:6;33520:3;33446:86;:::i;:::-;33439:93;;33556:56;33606:5;33556:56;:::i;:::-;33635:7;33666:1;33651:284;33676:6;33673:1;33670:13;33651:284;;;33752:6;33746:13;33779:63;33838:3;33823:13;33779:63;:::i;:::-;33772:70;;33865:60;33918:6;33865:60;:::i;:::-;33855:70;;33711:224;33698:1;33695;33691:9;33686:14;;33651:284;;;33655:14;33951:3;33944:10;;33352:608;;;33228:732;;;;:::o;33966:831::-;34229:4;34267:3;34256:9;34252:19;34244:27;;34281:71;34349:1;34338:9;34334:17;34325:6;34281:71;:::i;:::-;34362:80;34438:2;34427:9;34423:18;34414:6;34362:80;:::i;:::-;34489:9;34483:4;34479:20;34474:2;34463:9;34459:18;34452:48;34517:108;34620:4;34611:6;34517:108;:::i;:::-;34509:116;;34635:72;34703:2;34692:9;34688:18;34679:6;34635:72;:::i;:::-;34717:73;34785:3;34774:9;34770:19;34761:6;34717:73;:::i;:::-;33966:831;;;;;;;;:::o;34803:807::-;35052:4;35090:3;35079:9;35075:19;35067:27;;35104:71;35172:1;35161:9;35157:17;35148:6;35104:71;:::i;:::-;35185:72;35253:2;35242:9;35238:18;35229:6;35185:72;:::i;:::-;35267:80;35343:2;35332:9;35328:18;35319:6;35267:80;:::i;:::-;35357;35433:2;35422:9;35418:18;35409:6;35357:80;:::i;:::-;35447:73;35515:3;35504:9;35500:19;35491:6;35447:73;:::i;:::-;35530;35598:3;35587:9;35583:19;35574:6;35530:73;:::i;:::-;34803:807;;;;;;;;;:::o;35616:663::-;35704:6;35712;35720;35769:2;35757:9;35748:7;35744:23;35740:32;35737:119;;;35775:79;;:::i;:::-;35737:119;35895:1;35920:64;35976:7;35967:6;35956:9;35952:22;35920:64;:::i;:::-;35910:74;;35866:128;36033:2;36059:64;36115:7;36106:6;36095:9;36091:22;36059:64;:::i;:::-;36049:74;;36004:129;36172:2;36198:64;36254:7;36245:6;36234:9;36230:22;36198:64;:::i;:::-;36188:74;;36143:129;35616:663;;;;;:::o;36285:220::-;36425:34;36421:1;36413:6;36409:14;36402:58;36494:3;36489:2;36481:6;36477:15;36470:28;36285:220;:::o;36511:366::-;36653:3;36674:67;36738:2;36733:3;36674:67;:::i;:::-;36667:74;;36750:93;36839:3;36750:93;:::i;:::-;36868:2;36863:3;36859:12;36852:19;;36511:366;;;:::o;36883:419::-;37049:4;37087:2;37076:9;37072:18;37064:26;;37136:9;37130:4;37126:20;37122:1;37111:9;37107:17;37100:47;37164:131;37290:4;37164:131;:::i;:::-;37156:139;;36883:419;;;:::o

Swarm Source

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