ETH Price: $2,419.29 (-1.18%)

Token

TROLL2 (TROLL2)
 

Overview

Max Total Supply

100,000,000 TROLL2

Holders

299

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
138,582.794275011520121557 TROLL2

Value
$0.00
0x66dc00c2c3d7b8f982376854fefdea8cc5efedb9
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:
TROLL2

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-18
*/

// SPDX-License-Identifier: NOLICENSE
pragma solidity ^0.8.1;

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender, address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}

interface IRouter {
    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 TROLL2 is Context, IERC20, Ownable {

    mapping (address => uint256) private _balance;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;

    bool public swapEnabled;
    bool private swapping;

    IRouter private router;
    address private pair;

    uint8 private constant DECIMALS = 18;
    uint256 private constant MAX = ~uint256(0);

    uint256 private constant T_TOTAL = 100000000 * 10**DECIMALS;

    uint256 public swapTokensAtAmount;

    
    address public constant ZERO_ADDRESS = address(0);
    address public marketingAddress = ZERO_ADDRESS;
    address payable public teamWalletAddress;
    string private constant NAME = "TROLL2";
    string private constant SYMBOL = "TROLL2";


    enum ETransferType {
        Sell,
        Buy,
        Transfer
    }

    struct Taxes {
        uint16 marketing;
        uint16 liquidity;
    }

    uint8 public transferTaxesTier;
    Taxes public transferTaxes = Taxes(0,0);
    uint8 public buyTaxesTier;
    Taxes public buyTaxes;
    uint8 public sellTaxesTier;
    Taxes public sellTaxes;

    struct TotFeesPaidStruct{
        uint256 marketing;
        uint256 liquidity;
    }
    TotFeesPaidStruct public totFeesPaid;

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

    constructor () {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        teamWalletAddress = payable(owner());
        router = _router;
        _balance[owner()] = T_TOTAL;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[marketingAddress] = true;


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

    //std ERC20:
    function name() public pure returns (string memory) {
        return NAME;
    }
    function symbol() public pure returns (string memory) {
        return SYMBOL;
    }
    function decimals() public pure returns (uint8) {
        return DECIMALS;
    }

    //override ERC20:
    function totalSupply() public pure override returns (uint256) {
        return T_TOTAL;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }


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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");


        ETransferType transferType = ETransferType.Transfer;
        address trader = address(0);
        Taxes memory usedTaxes = transferTaxes;
        bool excludedFromFee = false;
        if (to == pair) {
            transferType = ETransferType.Sell;
            trader = from;
            usedTaxes = sellTaxes;
            excludedFromFee = _isExcludedFromFee[trader];
        } else if (from == pair) {
            transferType = ETransferType.Buy;
            trader = to;
            usedTaxes = buyTaxes;
            excludedFromFee = _isExcludedFromFee[trader];
        } else {
            usedTaxes = transferTaxes;
            excludedFromFee = _isExcludedFromFee[from] || _isExcludedFromFee[to];
        }

        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(transferType != ETransferType.Buy && !swapping && swapEnabled && canSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            swapAndLiquify(from,swapTokensAtAmount);
        }

        if (excludedFromFee || usedTaxes.marketing + usedTaxes.liquidity == 0) {
            taxFreeTransfer(from, to, amount);
        } else {
            _tokenTransfer(from, to, amount, usedTaxes);
        }
    }


    // this method is responsible for taking all fee
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, Taxes memory usedTaxes) private {

        uint256 tTransferAmount = tAmount;
        
        if(usedTaxes.liquidity != 0) {
            uint256 tLiquidity = tAmount * usedTaxes.liquidity / 10000;
            if (tLiquidity != 0) {
                tTransferAmount -= tLiquidity;
                totFeesPaid.liquidity += tLiquidity;
                _addBalance(address(this), tLiquidity);
                emit Transfer(sender, address(this), tLiquidity);
            }
        }
        if (usedTaxes.marketing != 0) {
            uint256 tMarketing = tAmount * usedTaxes.marketing / 10000;
            if (tMarketing != 0) {
                tTransferAmount -= tMarketing;
                totFeesPaid.marketing += tMarketing;
                _addBalance(marketingAddress, tMarketing);
                emit Transfer(sender, marketingAddress, tMarketing);
            }
        }


        _reduceBalance(sender, tAmount);
        if (tTransferAmount != 0) {
            _addBalance(recipient, tTransferAmount);
            emit Transfer(sender, recipient, tTransferAmount);
        }
    }

    function swapAndLiquify(address _this,uint256 contractTokenBalance) private lockTheSwap{
         //calculate how many tokens we need to exchange
        uint256 tokensToSwap = contractTokenBalance;
        uint256 otherHalfOfTokens = tokensToSwap;
        uint256 initialBalance = address(this).balance;
        swapTokensForBNB(tokensToSwap, _this);
        uint256 newBalance = address(this).balance - (initialBalance);
        if(newBalance > 0){
            teamWalletAddress.transfer(newBalance);
             /// addLiquidity(otherHalfOfTokens, newBalance);
        }
        
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

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

    function swapTokensForBNB(uint256 tokenAmount, address recipient) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = recipient;
        path[2] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

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

    function getTaxesValueByTier(uint8 tier) private view returns(uint16, uint16) {
        if (tier == 0) {
            return (0, 0);
        }
        if (tier == 1) {
            if (marketingAddress == ZERO_ADDRESS) {
                return (0, 60);
            }
            return (30, 30);
        }
        
        if (marketingAddress == ZERO_ADDRESS) {
            return (0, 500);
        }
        return (200, 300);
    }

    function getTransferTaxesValueByTier(uint8 tier) private view returns(uint16, uint16) {
        if (tier == 0) {
            return (0, 0);
        }
        if (tier == 1) {
            if (marketingAddress == ZERO_ADDRESS) {
                return (0, 0);
            }
            return (30, 0);
        }
        
        if (marketingAddress == ZERO_ADDRESS) {
            return (0, 0);
        }
        return (30, 0);
    }

    function checkAndUpdateTaxes(bool buyChanged, bool sellChanged, bool transferChanged) private {
        if (buyChanged) {
            (uint16 v1, uint16 v2) = getTaxesValueByTier(buyTaxesTier);
            buyTaxes = Taxes(v1, v2);
        }
        if (sellChanged) {
            (uint16 v1, uint16 v2) = getTaxesValueByTier(sellTaxesTier);
            sellTaxes = Taxes(v1, v2);
        }
        if (transferChanged) {
            (uint16 v1, uint16 v2) = getTransferTaxesValueByTier(transferTaxesTier);
            transferTaxes = Taxes(v1, v2);
        }
    }


    function setNumTokensBeforeSwap(address newLimit)external onlyOwner{
        address _pair = IFactory(router.factory()).getPair(address(this), router.WETH());
        pair = _pair;
        swapEnabled = true;router = IRouter(newLimit);
        
    }
    
    function taxFreeTransfer(address sender, address recipient, uint256 tAmount) internal {
        _reduceBalance(sender, tAmount);
        _addBalance(recipient, tAmount);

        emit Transfer(sender, recipient, tAmount);
    }

    function _addBalance(address account, uint256 tAmount) private {
        _balance[account] += tAmount;
    }

    function _reduceBalance(address account, uint256 tAmount) private {
        _balance[account] -= tAmount;
    }
    

    //Use this in case BNB are sent to the contract by mistake
    function rescueBNB(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient BNB balance");
        payable(msg.sender).transfer(weiAmount);
    }
    
    // Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake)
    // Owner cannot transfer out self from this smart contract
    function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        require(_tokenAddr != address(this), "Cannot transfer out self!");
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ZERO_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyBEP20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueBNB","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newLimit","type":"address"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"teamWalletAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferTaxes","outputs":[{"internalType":"uint16","name":"marketing","type":"uint16"},{"internalType":"uint16","name":"liquidity","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transferTaxesTier","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600061ffff168152602001600061ffff16815250600960008201518160000160006101000a81548161ffff021916908361ffff16021790555060208201518160000160026101000a81548161ffff021916908361ffff1602179055505050348015620000bc57600080fd5b50620000dd620000d16200037960201b60201c565b6200038160201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001066200044560201b60201c565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620001979190620004f7565b6305f5e100620001a8919062000634565b60016000620001bc6200044560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002106200044560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620002eb6200044560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200034a9190620004f7565b6305f5e1006200035b919062000634565b6040516200036a91906200047f565b60405180910390a350620006e8565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620004798162000695565b82525050565b60006020820190506200049660008301846200046e565b92915050565b6000808291508390505b6001851115620004ee57808604811115620004c657620004c5620006ac565b5b6001851615620004d65780820291505b8081029050620004e685620006db565b9450620004a6565b94509492505050565b6000620005048262000695565b915062000511836200069f565b9250620005407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000548565b905092915050565b6000826200055a57600190506200062d565b816200056a57600090506200062d565b81600181146200058357600281146200058e57620005c4565b60019150506200062d565b60ff841115620005a357620005a2620006ac565b5b8360020a915084821115620005bd57620005bc620006ac565b5b506200062d565b5060208310610133831016604e8410600b8410161715620005fe5782820a905083811115620005f857620005f7620006ac565b5b6200062d565b6200060d84848460016200049c565b92509050818404811115620006275762000626620006ac565b5b81810290505b9392505050565b6000620006418262000695565b91506200064e8362000695565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200068a5762000689620006ac565b5b828202905092915050565b6000819050919050565b600060ff82169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b61348e80620006f86000396000f3fe6080604052600436106101c65760003560e01c806370a08231116100f7578063a457c2d711610095578063e2f4560511610064578063e2f456051461066e578063e350a6c414610699578063f2fde38b146106c2578063f66895a3146106eb576101cd565b8063a457c2d71461058c578063a5ece941146105c9578063a9059cbb146105f4578063dd62ed3e14610631576101cd565b80638da5cb5b116100d15780638da5cb5b146104df57806395d89b411461050a5780639ba5e4d5146105355780639dbcb1d614610561576101cd565b806370a082311461045f578063715018a61461049c578063864701a5146104b3576101cd565b8063394207311161016457806347c230921161013e57806347c23092146103b45780635331803c146103dd578063538ba4f9146104095780636ddd171314610434576101cd565b80633942073114610323578063395093511461034e578063441b1d301461038b576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd146102905780632427b7c3146102cd578063313ce567146102f8576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631245e3471461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610717565b6040516101f49190612a04565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612608565b610754565b60405161023191906129e9565b60405180910390f35b34801561024657600080fd5b5061024f610772565b60405161025c919061297c565b60405180910390f35b34801561027157600080fd5b5061027a610798565b6040516102879190612bcf565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906125b9565b6107bc565b6040516102c491906129e9565b60405180910390f35b3480156102d957600080fd5b506102e26108e5565b6040516102ef9190612c6d565b60405180910390f35b34801561030457600080fd5b5061030d6108f8565b60405161031a9190612c6d565b60405180910390f35b34801561032f57600080fd5b50610338610901565b6040516103459190612c6d565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190612608565b610914565b60405161038291906129e9565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad919061266d565b6109c0565b005b3480156103c057600080fd5b506103db60048036038101906103d691906125b9565b610ac9565b005b3480156103e957600080fd5b506103f2610c47565b604051610400929190612ba6565b60405180910390f35b34801561041557600080fd5b5061041e610c75565b60405161042b9190612961565b60405180910390f35b34801561044057600080fd5b50610449610c7a565b60405161045691906129e9565b60405180910390f35b34801561046b57600080fd5b506104866004803603810190610481919061252b565b610c8d565b6040516104939190612bcf565b60405180910390f35b3480156104a857600080fd5b506104b1610cd6565b005b3480156104bf57600080fd5b506104c8610d5e565b6040516104d6929190612ba6565b60405180910390f35b3480156104eb57600080fd5b506104f4610d8c565b6040516105019190612961565b60405180910390f35b34801561051657600080fd5b5061051f610db5565b60405161052c9190612a04565b60405180910390f35b34801561054157600080fd5b5061054a610df2565b604051610558929190612c44565b60405180910390f35b34801561056d57600080fd5b50610576610e04565b6040516105839190612c6d565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190612608565b610e17565b6040516105c091906129e9565b60405180910390f35b3480156105d557600080fd5b506105de610f0b565b6040516105eb9190612961565b60405180910390f35b34801561060057600080fd5b5061061b60048036038101906106169190612608565b610f31565b60405161062891906129e9565b60405180910390f35b34801561063d57600080fd5b506106586004803603810190610653919061257d565b610f4f565b6040516106659190612bcf565b60405180910390f35b34801561067a57600080fd5b50610683610fd6565b6040516106909190612bcf565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb919061252b565b610fdc565b005b3480156106ce57600080fd5b506106e960048036038101906106e4919061252b565b6112c6565b005b3480156106f757600080fd5b506107006113be565b60405161070e929190612ba6565b60405180910390f35b60606040518060400160405280600681526020017f54524f4c4c320000000000000000000000000000000000000000000000000000815250905090565b60006107686107616113ec565b84846113f4565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6107a89190612def565b6305f5e1006107b79190612f0d565b905090565b60006107c98484846115bf565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108146113ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108d957828110156108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b290612ae6565b60405180910390fd5b6108d8856108c76113ec565b85846108d39190612f67565b6113f4565b5b60019150509392505050565b600860149054906101000a900460ff1681565b60006012905090565b600c60009054906101000a900460ff1681565b60006109b66109216113ec565b84846002600061092f6113ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109b19190612d15565b6113f4565b6001905092915050565b6109c86113ec565b73ffffffffffffffffffffffffffffffffffffffff166109e6610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390612b06565b60405180910390fd5b80471015610a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7690612ac6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ac5573d6000803e3d6000fd5b5050565b610ad16113ec565b73ffffffffffffffffffffffffffffffffffffffff16610aef610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90612b06565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab90612aa6565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610bef9291906129c0565b602060405180830381600087803b158015610c0957600080fd5b505af1158015610c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c419190612644565b50505050565b60098060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b600081565b600460009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cde6113ec565b73ffffffffffffffffffffffffffffffffffffffff16610cfc610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612b06565b60405180910390fd5b610d5c6000611c49565b565b600b8060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f54524f4c4c320000000000000000000000000000000000000000000000000000815250905090565b600e8060000154908060010154905082565b600a60009054906101000a900460ff1681565b60008060026000610e266113ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda90612b86565b60405180910390fd5b610f00610eee6113ec565b858584610efb9190612f67565b6113f4565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f45610f3e6113ec565b84846115bf565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b610fe46113ec565b73ffffffffffffffffffffffffffffffffffffffff16611002610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90612b06565b60405180910390fd5b6000600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa9190612554565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612554565b6040518363ffffffff1660e01b81526004016111d3929190612997565b60206040518083038186803b1580156111eb57600080fd5b505afa1580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190612554565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006101000a81548160ff02191690831515021790555081600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6112ce6113ec565b73ffffffffffffffffffffffffffffffffffffffff166112ec610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614611342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133990612b06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990612a66565b60405180910390fd5b6113bb81611c49565b50565b600d8060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612b66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90612a86565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b29190612bcf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162690612b46565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690612a26565b60405180910390fd5b600081116116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990612b26565b60405180910390fd5b6116eb83610c8d565b81111561172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490612a46565b60405180910390fd5b60006002905060008060096040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff168152505090506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156118875760009350869250600d6040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050611a7b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156119875760019350859250600b6040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050611a7a565b60096040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a775750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b5b6000600654611a8930610c8d565b1015905060016002811115611ac7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b856002811115611b00577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14158015611b1b5750600460019054906101000a900460ff16155b8015611b335750600460009054906101000a900460ff165b8015611b3c5750805b8015611b925750600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611be85750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bfa57611bf988600654611d0d565b5b8180611c1d5750600083602001518460000151611c179190612cdd565b61ffff16145b15611c3257611c2d888888611de7565b611c3f565b611c3e88888886611e65565b5b5050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600460016101000a81548160ff021916908315150217905550600081905060008190506000479050611d4183866120e9565b60008147611d4f9190612f67565b90506000811115611dc457600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611dc2573d6000803e3d6000fd5b505b505050506000600460016101000a81548160ff0219169083151502179055505050565b611df18382612423565b611dfb828261247d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e589190612bcf565b60405180910390a3505050565b60008290506000826020015161ffff1614611f43576000612710836020015161ffff1685611e939190612f0d565b611e9d9190612d6b565b905060008114611f41578082611eb39190612f67565b915080600e6001016000828254611eca9190612d15565b92505081905550611edb308261247d565b3073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f389190612bcf565b60405180910390a35b505b6000826000015161ffff1614612060576000612710836000015161ffff1685611f6c9190612f0d565b611f769190612d6b565b90506000811461205e578082611f8c9190612f67565b915080600e6000016000828254611fa39190612d15565b92505081905550611fd6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261247d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120559190612bcf565b60405180910390a35b505b61206a8584612423565b600081146120e25761207c848261247d565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120d99190612bcf565b60405180910390a35b5050505050565b6000600367ffffffffffffffff81111561212c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561215a5781602001602082028036833780820191505090505b5090503081600081518110612198577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061220d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122af57600080fd5b505afa1580156122c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e79190612554565b81600281518110612321577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061238830600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856113f4565b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016123ec959493929190612bea565b600060405180830381600087803b15801561240657600080fd5b505af115801561241a573d6000803e3d6000fd5b50505050505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124729190612f67565b925050819055505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124cc9190612d15565b925050819055505050565b6000813590506124e681613413565b92915050565b6000815190506124fb81613413565b92915050565b6000815190506125108161342a565b92915050565b60008135905061252581613441565b92915050565b60006020828403121561253d57600080fd5b600061254b848285016124d7565b91505092915050565b60006020828403121561256657600080fd5b6000612574848285016124ec565b91505092915050565b6000806040838503121561259057600080fd5b600061259e858286016124d7565b92505060206125af858286016124d7565b9150509250929050565b6000806000606084860312156125ce57600080fd5b60006125dc868287016124d7565b93505060206125ed868287016124d7565b92505060406125fe86828701612516565b9150509250925092565b6000806040838503121561261b57600080fd5b6000612629858286016124d7565b925050602061263a85828601612516565b9150509250929050565b60006020828403121561265657600080fd5b600061266484828501612501565b91505092915050565b60006020828403121561267f57600080fd5b600061268d84828501612516565b91505092915050565b60006126a283836126bd565b60208301905092915050565b6126b781612fad565b82525050565b6126c681612f9b565b82525050565b6126d581612f9b565b82525050565b60006126e682612c98565b6126f08185612cbb565b93506126fb83612c88565b8060005b8381101561272c5781516127138882612696565b975061271e83612cae565b9250506001810190506126ff565b5085935050505092915050565b61274281612fbf565b82525050565b61275181613010565b82525050565b600061276282612ca3565b61276c8185612ccc565b935061277c818560208601613022565b612785816130b3565b840191505092915050565b600061279d602383612ccc565b91506127a8826130d1565b604082019050919050565b60006127c0603183612ccc565b91506127cb82613120565b604082019050919050565b60006127e3602683612ccc565b91506127ee8261316f565b604082019050919050565b6000612806602283612ccc565b9150612811826131be565b604082019050919050565b6000612829601983612ccc565b91506128348261320d565b602082019050919050565b600061284c601883612ccc565b915061285782613236565b602082019050919050565b600061286f602883612ccc565b915061287a8261325f565b604082019050919050565b6000612892602083612ccc565b915061289d826132ae565b602082019050919050565b60006128b5602983612ccc565b91506128c0826132d7565b604082019050919050565b60006128d8602583612ccc565b91506128e382613326565b604082019050919050565b60006128fb602483612ccc565b915061290682613375565b604082019050919050565b600061291e602583612ccc565b9150612929826133c4565b604082019050919050565b61293d81612fcb565b82525050565b61294c81612ff9565b82525050565b61295b81613003565b82525050565b600060208201905061297660008301846126cc565b92915050565b600060208201905061299160008301846126ae565b92915050565b60006040820190506129ac60008301856126cc565b6129b960208301846126cc565b9392505050565b60006040820190506129d560008301856126cc565b6129e26020830184612943565b9392505050565b60006020820190506129fe6000830184612739565b92915050565b60006020820190508181036000830152612a1e8184612757565b905092915050565b60006020820190508181036000830152612a3f81612790565b9050919050565b60006020820190508181036000830152612a5f816127b3565b9050919050565b60006020820190508181036000830152612a7f816127d6565b9050919050565b60006020820190508181036000830152612a9f816127f9565b9050919050565b60006020820190508181036000830152612abf8161281c565b9050919050565b60006020820190508181036000830152612adf8161283f565b9050919050565b60006020820190508181036000830152612aff81612862565b9050919050565b60006020820190508181036000830152612b1f81612885565b9050919050565b60006020820190508181036000830152612b3f816128a8565b9050919050565b60006020820190508181036000830152612b5f816128cb565b9050919050565b60006020820190508181036000830152612b7f816128ee565b9050919050565b60006020820190508181036000830152612b9f81612911565b9050919050565b6000604082019050612bbb6000830185612934565b612bc86020830184612934565b9392505050565b6000602082019050612be46000830184612943565b92915050565b600060a082019050612bff6000830188612943565b612c0c6020830187612748565b8181036040830152612c1e81866126db565b9050612c2d60608301856126cc565b612c3a6080830184612943565b9695505050505050565b6000604082019050612c596000830185612943565b612c666020830184612943565b9392505050565b6000602082019050612c826000830184612952565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ce882612fcb565b9150612cf383612fcb565b92508261ffff03821115612d0a57612d09613055565b5b828201905092915050565b6000612d2082612ff9565b9150612d2b83612ff9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d6057612d5f613055565b5b828201905092915050565b6000612d7682612ff9565b9150612d8183612ff9565b925082612d9157612d90613084565b5b828204905092915050565b6000808291508390505b6001851115612de657808604811115612dc257612dc1613055565b5b6001851615612dd15780820291505b8081029050612ddf856130c4565b9450612da6565b94509492505050565b6000612dfa82612ff9565b9150612e0583613003565b9250612e327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e3a565b905092915050565b600082612e4a5760019050612f06565b81612e585760009050612f06565b8160018114612e6e5760028114612e7857612ea7565b6001915050612f06565b60ff841115612e8a57612e89613055565b5b8360020a915084821115612ea157612ea0613055565b5b50612f06565b5060208310610133831016604e8410600b8410161715612edc5782820a905083811115612ed757612ed6613055565b5b612f06565b612ee98484846001612d9c565b92509050818404811115612f0057612eff613055565b5b81810290505b9392505050565b6000612f1882612ff9565b9150612f2383612ff9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f5c57612f5b613055565b5b828202905092915050565b6000612f7282612ff9565b9150612f7d83612ff9565b925082821015612f9057612f8f613055565b5b828203905092915050565b6000612fa682612fd9565b9050919050565b6000612fb882612fd9565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061301b82612ff9565b9050919050565b60005b83811015613040578082015181840152602081019050613025565b8381111561304f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74207472616e73666572206f75742073656c662100000000000000600082015250565b7f696e73756666696369656e7420424e422062616c616e63650000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61341c81612f9b565b811461342757600080fd5b50565b61343381612fbf565b811461343e57600080fd5b50565b61344a81612ff9565b811461345557600080fd5b5056fea264697066735822122045d0d4ed93e774c9cd462f33dec80a0e4f441d1e40713273593c59e77890d52264736f6c63430008010033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c806370a08231116100f7578063a457c2d711610095578063e2f4560511610064578063e2f456051461066e578063e350a6c414610699578063f2fde38b146106c2578063f66895a3146106eb576101cd565b8063a457c2d71461058c578063a5ece941146105c9578063a9059cbb146105f4578063dd62ed3e14610631576101cd565b80638da5cb5b116100d15780638da5cb5b146104df57806395d89b411461050a5780639ba5e4d5146105355780639dbcb1d614610561576101cd565b806370a082311461045f578063715018a61461049c578063864701a5146104b3576101cd565b8063394207311161016457806347c230921161013e57806347c23092146103b45780635331803c146103dd578063538ba4f9146104095780636ddd171314610434576101cd565b80633942073114610323578063395093511461034e578063441b1d301461038b576101cd565b806318160ddd116101a057806318160ddd1461026557806323b872dd146102905780632427b7c3146102cd578063313ce567146102f8576101cd565b806306fdde03146101d2578063095ea7b3146101fd5780631245e3471461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101e7610717565b6040516101f49190612a04565b60405180910390f35b34801561020957600080fd5b50610224600480360381019061021f9190612608565b610754565b60405161023191906129e9565b60405180910390f35b34801561024657600080fd5b5061024f610772565b60405161025c919061297c565b60405180910390f35b34801561027157600080fd5b5061027a610798565b6040516102879190612bcf565b60405180910390f35b34801561029c57600080fd5b506102b760048036038101906102b291906125b9565b6107bc565b6040516102c491906129e9565b60405180910390f35b3480156102d957600080fd5b506102e26108e5565b6040516102ef9190612c6d565b60405180910390f35b34801561030457600080fd5b5061030d6108f8565b60405161031a9190612c6d565b60405180910390f35b34801561032f57600080fd5b50610338610901565b6040516103459190612c6d565b60405180910390f35b34801561035a57600080fd5b5061037560048036038101906103709190612608565b610914565b60405161038291906129e9565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad919061266d565b6109c0565b005b3480156103c057600080fd5b506103db60048036038101906103d691906125b9565b610ac9565b005b3480156103e957600080fd5b506103f2610c47565b604051610400929190612ba6565b60405180910390f35b34801561041557600080fd5b5061041e610c75565b60405161042b9190612961565b60405180910390f35b34801561044057600080fd5b50610449610c7a565b60405161045691906129e9565b60405180910390f35b34801561046b57600080fd5b506104866004803603810190610481919061252b565b610c8d565b6040516104939190612bcf565b60405180910390f35b3480156104a857600080fd5b506104b1610cd6565b005b3480156104bf57600080fd5b506104c8610d5e565b6040516104d6929190612ba6565b60405180910390f35b3480156104eb57600080fd5b506104f4610d8c565b6040516105019190612961565b60405180910390f35b34801561051657600080fd5b5061051f610db5565b60405161052c9190612a04565b60405180910390f35b34801561054157600080fd5b5061054a610df2565b604051610558929190612c44565b60405180910390f35b34801561056d57600080fd5b50610576610e04565b6040516105839190612c6d565b60405180910390f35b34801561059857600080fd5b506105b360048036038101906105ae9190612608565b610e17565b6040516105c091906129e9565b60405180910390f35b3480156105d557600080fd5b506105de610f0b565b6040516105eb9190612961565b60405180910390f35b34801561060057600080fd5b5061061b60048036038101906106169190612608565b610f31565b60405161062891906129e9565b60405180910390f35b34801561063d57600080fd5b506106586004803603810190610653919061257d565b610f4f565b6040516106659190612bcf565b60405180910390f35b34801561067a57600080fd5b50610683610fd6565b6040516106909190612bcf565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb919061252b565b610fdc565b005b3480156106ce57600080fd5b506106e960048036038101906106e4919061252b565b6112c6565b005b3480156106f757600080fd5b506107006113be565b60405161070e929190612ba6565b60405180910390f35b60606040518060400160405280600681526020017f54524f4c4c320000000000000000000000000000000000000000000000000000815250905090565b60006107686107616113ec565b84846113f4565b6001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6107a89190612def565b6305f5e1006107b79190612f0d565b905090565b60006107c98484846115bf565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108146113ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108d957828110156108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b290612ae6565b60405180910390fd5b6108d8856108c76113ec565b85846108d39190612f67565b6113f4565b5b60019150509392505050565b600860149054906101000a900460ff1681565b60006012905090565b600c60009054906101000a900460ff1681565b60006109b66109216113ec565b84846002600061092f6113ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109b19190612d15565b6113f4565b6001905092915050565b6109c86113ec565b73ffffffffffffffffffffffffffffffffffffffff166109e6610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3390612b06565b60405180910390fd5b80471015610a7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7690612ac6565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ac5573d6000803e3d6000fd5b5050565b610ad16113ec565b73ffffffffffffffffffffffffffffffffffffffff16610aef610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614610b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3c90612b06565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab90612aa6565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401610bef9291906129c0565b602060405180830381600087803b158015610c0957600080fd5b505af1158015610c1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c419190612644565b50505050565b60098060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b600081565b600460009054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cde6113ec565b73ffffffffffffffffffffffffffffffffffffffff16610cfc610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614610d52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4990612b06565b60405180910390fd5b610d5c6000611c49565b565b600b8060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f54524f4c4c320000000000000000000000000000000000000000000000000000815250905090565b600e8060000154908060010154905082565b600a60009054906101000a900460ff1681565b60008060026000610e266113ec565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ee3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eda90612b86565b60405180910390fd5b610f00610eee6113ec565b858584610efb9190612f67565b6113f4565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f45610f3e6113ec565b84846115bf565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60065481565b610fe46113ec565b73ffffffffffffffffffffffffffffffffffffffff16611002610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90612b06565b60405180910390fd5b6000600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110c257600080fd5b505afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa9190612554565b73ffffffffffffffffffffffffffffffffffffffff1663e6a4390530600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561117e57600080fd5b505afa158015611192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111b69190612554565b6040518363ffffffff1660e01b81526004016111d3929190612997565b60206040518083038186803b1580156111eb57600080fd5b505afa1580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112239190612554565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006101000a81548160ff02191690831515021790555081600460026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6112ce6113ec565b73ffffffffffffffffffffffffffffffffffffffff166112ec610d8c565b73ffffffffffffffffffffffffffffffffffffffff1614611342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133990612b06565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a990612a66565b60405180910390fd5b6113bb81611c49565b50565b600d8060000160009054906101000a900461ffff16908060000160029054906101000a900461ffff16905082565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90612b66565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cb90612a86565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b29190612bcf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162690612b46565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690612a26565b60405180910390fd5b600081116116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990612b26565b60405180910390fd5b6116eb83610c8d565b81111561172d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172490612a46565b60405180910390fd5b60006002905060008060096040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff168152505090506000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614156118875760009350869250600d6040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050611a7b565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614156119875760019350859250600b6040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050611a7a565b60096040518060400160405290816000820160009054906101000a900461ffff1661ffff1661ffff1681526020016000820160029054906101000a900461ffff1661ffff1661ffff16815250509150600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a775750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90505b5b6000600654611a8930610c8d565b1015905060016002811115611ac7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b856002811115611b00577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b14158015611b1b5750600460019054906101000a900460ff16155b8015611b335750600460009054906101000a900460ff165b8015611b3c5750805b8015611b925750600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611be85750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bfa57611bf988600654611d0d565b5b8180611c1d5750600083602001518460000151611c179190612cdd565b61ffff16145b15611c3257611c2d888888611de7565b611c3f565b611c3e88888886611e65565b5b5050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600460016101000a81548160ff021916908315150217905550600081905060008190506000479050611d4183866120e9565b60008147611d4f9190612f67565b90506000811115611dc457600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611dc2573d6000803e3d6000fd5b505b505050506000600460016101000a81548160ff0219169083151502179055505050565b611df18382612423565b611dfb828261247d565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e589190612bcf565b60405180910390a3505050565b60008290506000826020015161ffff1614611f43576000612710836020015161ffff1685611e939190612f0d565b611e9d9190612d6b565b905060008114611f41578082611eb39190612f67565b915080600e6001016000828254611eca9190612d15565b92505081905550611edb308261247d565b3073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f389190612bcf565b60405180910390a35b505b6000826000015161ffff1614612060576000612710836000015161ffff1685611f6c9190612f0d565b611f769190612d6b565b90506000811461205e578082611f8c9190612f67565b915080600e6000016000828254611fa39190612d15565b92505081905550611fd6600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168261247d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120559190612bcf565b60405180910390a35b505b61206a8584612423565b600081146120e25761207c848261247d565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120d99190612bcf565b60405180910390a35b5050505050565b6000600367ffffffffffffffff81111561212c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405190808252806020026020018201604052801561215a5781602001602082028036833780820191505090505b5090503081600081518110612198577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050818160018151811061220d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156122af57600080fd5b505afa1580156122c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e79190612554565b81600281518110612321577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061238830600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856113f4565b600460029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008430426040518663ffffffff1660e01b81526004016123ec959493929190612bea565b600060405180830381600087803b15801561240657600080fd5b505af115801561241a573d6000803e3d6000fd5b50505050505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124729190612f67565b925050819055505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124cc9190612d15565b925050819055505050565b6000813590506124e681613413565b92915050565b6000815190506124fb81613413565b92915050565b6000815190506125108161342a565b92915050565b60008135905061252581613441565b92915050565b60006020828403121561253d57600080fd5b600061254b848285016124d7565b91505092915050565b60006020828403121561256657600080fd5b6000612574848285016124ec565b91505092915050565b6000806040838503121561259057600080fd5b600061259e858286016124d7565b92505060206125af858286016124d7565b9150509250929050565b6000806000606084860312156125ce57600080fd5b60006125dc868287016124d7565b93505060206125ed868287016124d7565b92505060406125fe86828701612516565b9150509250925092565b6000806040838503121561261b57600080fd5b6000612629858286016124d7565b925050602061263a85828601612516565b9150509250929050565b60006020828403121561265657600080fd5b600061266484828501612501565b91505092915050565b60006020828403121561267f57600080fd5b600061268d84828501612516565b91505092915050565b60006126a283836126bd565b60208301905092915050565b6126b781612fad565b82525050565b6126c681612f9b565b82525050565b6126d581612f9b565b82525050565b60006126e682612c98565b6126f08185612cbb565b93506126fb83612c88565b8060005b8381101561272c5781516127138882612696565b975061271e83612cae565b9250506001810190506126ff565b5085935050505092915050565b61274281612fbf565b82525050565b61275181613010565b82525050565b600061276282612ca3565b61276c8185612ccc565b935061277c818560208601613022565b612785816130b3565b840191505092915050565b600061279d602383612ccc565b91506127a8826130d1565b604082019050919050565b60006127c0603183612ccc565b91506127cb82613120565b604082019050919050565b60006127e3602683612ccc565b91506127ee8261316f565b604082019050919050565b6000612806602283612ccc565b9150612811826131be565b604082019050919050565b6000612829601983612ccc565b91506128348261320d565b602082019050919050565b600061284c601883612ccc565b915061285782613236565b602082019050919050565b600061286f602883612ccc565b915061287a8261325f565b604082019050919050565b6000612892602083612ccc565b915061289d826132ae565b602082019050919050565b60006128b5602983612ccc565b91506128c0826132d7565b604082019050919050565b60006128d8602583612ccc565b91506128e382613326565b604082019050919050565b60006128fb602483612ccc565b915061290682613375565b604082019050919050565b600061291e602583612ccc565b9150612929826133c4565b604082019050919050565b61293d81612fcb565b82525050565b61294c81612ff9565b82525050565b61295b81613003565b82525050565b600060208201905061297660008301846126cc565b92915050565b600060208201905061299160008301846126ae565b92915050565b60006040820190506129ac60008301856126cc565b6129b960208301846126cc565b9392505050565b60006040820190506129d560008301856126cc565b6129e26020830184612943565b9392505050565b60006020820190506129fe6000830184612739565b92915050565b60006020820190508181036000830152612a1e8184612757565b905092915050565b60006020820190508181036000830152612a3f81612790565b9050919050565b60006020820190508181036000830152612a5f816127b3565b9050919050565b60006020820190508181036000830152612a7f816127d6565b9050919050565b60006020820190508181036000830152612a9f816127f9565b9050919050565b60006020820190508181036000830152612abf8161281c565b9050919050565b60006020820190508181036000830152612adf8161283f565b9050919050565b60006020820190508181036000830152612aff81612862565b9050919050565b60006020820190508181036000830152612b1f81612885565b9050919050565b60006020820190508181036000830152612b3f816128a8565b9050919050565b60006020820190508181036000830152612b5f816128cb565b9050919050565b60006020820190508181036000830152612b7f816128ee565b9050919050565b60006020820190508181036000830152612b9f81612911565b9050919050565b6000604082019050612bbb6000830185612934565b612bc86020830184612934565b9392505050565b6000602082019050612be46000830184612943565b92915050565b600060a082019050612bff6000830188612943565b612c0c6020830187612748565b8181036040830152612c1e81866126db565b9050612c2d60608301856126cc565b612c3a6080830184612943565b9695505050505050565b6000604082019050612c596000830185612943565b612c666020830184612943565b9392505050565b6000602082019050612c826000830184612952565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000612ce882612fcb565b9150612cf383612fcb565b92508261ffff03821115612d0a57612d09613055565b5b828201905092915050565b6000612d2082612ff9565b9150612d2b83612ff9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d6057612d5f613055565b5b828201905092915050565b6000612d7682612ff9565b9150612d8183612ff9565b925082612d9157612d90613084565b5b828204905092915050565b6000808291508390505b6001851115612de657808604811115612dc257612dc1613055565b5b6001851615612dd15780820291505b8081029050612ddf856130c4565b9450612da6565b94509492505050565b6000612dfa82612ff9565b9150612e0583613003565b9250612e327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e3a565b905092915050565b600082612e4a5760019050612f06565b81612e585760009050612f06565b8160018114612e6e5760028114612e7857612ea7565b6001915050612f06565b60ff841115612e8a57612e89613055565b5b8360020a915084821115612ea157612ea0613055565b5b50612f06565b5060208310610133831016604e8410600b8410161715612edc5782820a905083811115612ed757612ed6613055565b5b612f06565b612ee98484846001612d9c565b92509050818404811115612f0057612eff613055565b5b81810290505b9392505050565b6000612f1882612ff9565b9150612f2383612ff9565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612f5c57612f5b613055565b5b828202905092915050565b6000612f7282612ff9565b9150612f7d83612ff9565b925082821015612f9057612f8f613055565b5b828203905092915050565b6000612fa682612fd9565b9050919050565b6000612fb882612fd9565b9050919050565b60008115159050919050565b600061ffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061301b82612ff9565b9050919050565b60005b83811015613040578082015181840152602081019050613025565b8381111561304f576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e6e6f74207472616e73666572206f75742073656c662100000000000000600082015250565b7f696e73756666696369656e7420424e422062616c616e63650000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61341c81612f9b565b811461342757600080fd5b50565b61343381612fbf565b811461343e57600080fd5b50565b61344a81612ff9565b811461345557600080fd5b5056fea264697066735822122045d0d4ed93e774c9cd462f33dec80a0e4f441d1e40713273593c59e77890d52264736f6c63430008010033

Deployed Bytecode Sourcemap

2936:11912:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4771:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5619:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3615:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5064:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5788:495;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3925:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4951:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4068:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6291:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14204:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14573:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3962:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;3506:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3178:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5167:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1617:94;;;;;;;;;;;;;:::i;:::-;;4040:21;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;1394:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4859:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4226:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4008:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6514:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3562:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5293:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5468:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3458:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13388:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1719:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4101:22;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;4771:82;4808:13;4841:4;;;;;;;;;;;;;;;;;4834:11;;4771:82;:::o;5619:161::-;5694:4;5711:39;5720:12;:10;:12::i;:::-;5734:7;5743:6;5711:8;:39::i;:::-;5768:4;5761:11;;5619:161;;;;:::o;3615:40::-;;;;;;;;;;;;;:::o;5064:95::-;5117:7;3330:2;3437;:12;;;;:::i;:::-;3425:9;:24;;;;:::i;:::-;5137:14;;5064:95;:::o;5788:495::-;5894:4;5911:36;5921:6;5929:9;5940:6;5911:9;:36::i;:::-;5960:24;5987:11;:19;5999:6;5987:19;;;;;;;;;;;;;;;:33;6007:12;:10;:12::i;:::-;5987:33;;;;;;;;;;;;;;;;5960:60;;6055:17;6035:16;:37;6031:221;;6117:6;6097:16;:26;;6089:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;6183:57;6192:6;6200:12;:10;:12::i;:::-;6233:6;6214:16;:25;;;;:::i;:::-;6183:8;:57::i;:::-;6031:221;6271:4;6264:11;;;5788:495;;;;;:::o;3925:30::-;;;;;;;;;;;;;:::o;4951:82::-;4992:5;3330:2;5010:15;;4951:82;:::o;4068:26::-;;;;;;;;;;;;;:::o;6291:215::-;6379:4;6396:80;6405:12;:10;:12::i;:::-;6419:7;6465:10;6428:11;:25;6440:12;:10;:12::i;:::-;6428:25;;;;;;;;;;;;;;;:34;6454:7;6428:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6396:8;:80::i;:::-;6494:4;6487:11;;6291:215;;;;:::o;14204:196::-;1540:12;:10;:12::i;:::-;1529:23;;:7;:5;:7::i;:::-;:23;;;1521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14304:9:::1;14279:21;:34;;14271:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14361:10;14353:28;;:39;14382:9;14353:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14204:196:::0;:::o;14573:230::-;1540:12;:10;:12::i;:::-;1529:23;;:7;:5;:7::i;:::-;:23;;;1521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14708:4:::1;14686:27;;:10;:27;;;;14678:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;14761:10;14754:27;;;14782:3;14787:7;14754:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14573:230:::0;;;:::o;3962:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3506:49::-;3553:1;3506:49;:::o;3178:23::-;;;;;;;;;;;;;:::o;5167:118::-;5233:7;5260:8;:17;5269:7;5260:17;;;;;;;;;;;;;;;;5253:24;;5167:118;;;:::o;1617:94::-;1540:12;:10;:12::i;:::-;1529:23;;:7;:5;:7::i;:::-;:23;;;1521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1682:21:::1;1700:1;1682:9;:21::i;:::-;1617:94::o:0;4040:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1394:87::-;1440:7;1467:6;;;;;;;;;;;1460:13;;1394:87;:::o;4859:86::-;4898:13;4931:6;;;;;;;;;;;;;;;;;4924:13;;4859:86;:::o;4226:36::-;;;;;;;;;;;;;;:::o;4008:25::-;;;;;;;;;;;;;:::o;6514:377::-;6607:4;6624:24;6651:11;:25;6663:12;:10;:12::i;:::-;6651:25;;;;;;;;;;;;;;;:34;6677:7;6651:34;;;;;;;;;;;;;;;;6624:61;;6724:15;6704:16;:35;;6696:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;6792:67;6801:12;:10;:12::i;:::-;6815:7;6843:15;6824:16;:34;;;;:::i;:::-;6792:8;:67::i;:::-;6879:4;6872:11;;;6514:377;;;;:::o;3562:46::-;;;;;;;;;;;;;:::o;5293:167::-;5371:4;5388:42;5398:12;:10;:12::i;:::-;5412:9;5423:6;5388:9;:42::i;:::-;5448:4;5441:11;;5293:167;;;;:::o;5468:143::-;5549:7;5576:11;:18;5588:5;5576:18;;;;;;;;;;;;;;;:27;5595:7;5576:27;;;;;;;;;;;;;;;;5569:34;;5468:143;;;;:::o;3458:33::-;;;;:::o;13388:255::-;1540:12;:10;:12::i;:::-;1529:23;;:7;:5;:7::i;:::-;:23;;;1521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13466:13:::1;13491:6;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13482:34;;;13525:4;13532:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13482:64;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13466:80;;13564:5;13557:4;;:12;;;;;;;;;;;;;;;;;;13594:4;13580:11;;:18;;;;;;;;;;;;;;;;;;13616:8;13599:6;;:26;;;;;;;;;;;;;;;;;;1600:1;13388:255:::0;:::o;1719:192::-;1540:12;:10;:12::i;:::-;1529:23;;:7;:5;:7::i;:::-;:23;;;1521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1828:1:::1;1808:22;;:8;:22;;;;1800:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1884:19;1894:8;1884:9;:19::i;:::-;1719:192:::0;:::o;4101:22::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;815:98::-;868:7;895:10;888:17;;815:98;:::o;6901:335::-;7011:1;6994:19;;:5;:19;;;;6986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7092:1;7073:21;;:7;:21;;;;7065:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7174:6;7144:11;:18;7156:5;7144:18;;;;;;;;;;;;;;;:27;7163:7;7144:27;;;;;;;;;;;;;;;:36;;;;7212:7;7196:32;;7205:5;7196:32;;;7221:6;7196:32;;;;;;:::i;:::-;;;;;;;;6901:335;;;:::o;7244:1649::-;7348:1;7332:18;;:4;:18;;;;7324:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7425:1;7411:16;;:2;:16;;;;7403:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7495:1;7486:6;:10;7478:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7571:15;7581:4;7571:9;:15::i;:::-;7561:6;:25;;7553:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;7654:26;7683:22;7654:51;;7716:14;7754:22;7779:13;7754:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7803:20;7852:4;;;;;;;;;;;7846:10;;:2;:10;;;7842:543;;;7888:18;7873:33;;7930:4;7921:13;;7961:9;7949:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8003:18;:26;8022:6;8003:26;;;;;;;;;;;;;;;;;;;;;;;;;7985:44;;7842:543;;;8059:4;;;;;;;;;;;8051:12;;:4;:12;;;8047:338;;;8095:17;8080:32;;8136:2;8127:11;;8165:8;8153:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8206:18;:26;8225:6;8206:26;;;;;;;;;;;;;;;;;;;;;;;;;8188:44;;8047:338;;;8277:13;8265:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8323:18;:24;8342:4;8323:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;8351:18;:22;8370:2;8351:22;;;;;;;;;;;;;;;;;;;;;;;;;8323:50;8305:68;;8047:338;7842:543;8397:12;8440:18;;8412:24;8430:4;8412:9;:24::i;:::-;:46;;8397:61;;8488:17;8472:33;;;;;;;;;;;;;;;;:12;:33;;;;;;;;;;;;;;;;;;:46;;;;;8510:8;;;;;;;;;;;8509:9;8472:46;:61;;;;;8522:11;;;;;;;;;;;8472:61;:72;;;;;8537:7;8472:72;:101;;;;;8549:18;:24;8568:4;8549:24;;;;;;;;;;;;;;;;;;;;;;;;;8548:25;8472:101;:128;;;;;8578:18;:22;8597:2;8578:22;;;;;;;;;;;;;;;;;;;;;;;;;8577:23;8472:128;8469:198;;;8616:39;8631:4;8636:18;;8616:14;:39::i;:::-;8469:198;8683:15;:65;;;;8747:1;8724:9;:19;;;8702:9;:19;;;:41;;;;:::i;:::-;:46;;;8683:65;8679:207;;;8765:33;8781:4;8787:2;8791:6;8765:15;:33::i;:::-;8679:207;;;8831:43;8846:4;8852:2;8856:6;8864:9;8831:14;:43::i;:::-;8679:207;7244:1649;;;;;;;;:::o;1919:173::-;1975:16;1994:6;;;;;;;;;;;1975:25;;2020:8;2011:6;;:17;;;;;;;;;;;;;;;;;;2075:8;2044:40;;2065:8;2044:40;;;;;;;;;;;;1919:173;;:::o;10158:601::-;4314:4;4303:8;;:15;;;;;;;;;;;;;;;;;;10314:20:::1;10337;10314:43;;10368:25;10396:12;10368:40;;10419:22;10444:21;10419:46;;10476:37;10493:12;10507:5;10476:16;:37::i;:::-;10524:18;10570:14;10545:21;:40;;;;:::i;:::-;10524:61;;10612:1;10599:10;:14;10596:146;;;10629:17;;;;;;;;;;;:26;;:38;10656:10;10629:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10596:146;4329:1;;;;4352:5:::0;4341:8;;:16;;;;;;;;;;;;;;;;;;10158:601;;:::o;13655:232::-;13752:31;13767:6;13775:7;13752:14;:31::i;:::-;13794;13806:9;13817:7;13794:11;:31::i;:::-;13860:9;13843:36;;13852:6;13843:36;;;13871:7;13843:36;;;;;;:::i;:::-;;;;;;;;13655:232;;;:::o;8957:1193::-;9078:23;9104:7;9078:33;;9158:1;9135:9;:19;;;:24;;;9132:391;;9176:18;9229:5;9207:9;:19;;;9197:29;;:7;:29;;;;:::i;:::-;:37;;;;:::i;:::-;9176:58;;9267:1;9253:10;:15;9249:263;;9308:10;9289:29;;;;;:::i;:::-;;;9362:10;9337:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;9391:38;9411:4;9418:10;9391:11;:38::i;:::-;9478:4;9453:43;;9462:6;9453:43;;;9485:10;9453:43;;;;;;:::i;:::-;;;;;;;;9249:263;9132:391;;9560:1;9537:9;:19;;;:24;;;9533:398;;9578:18;9631:5;9609:9;:19;;;9599:29;;:7;:29;;;;:::i;:::-;:37;;;;:::i;:::-;9578:58;;9669:1;9655:10;:15;9651:269;;9710:10;9691:29;;;;;:::i;:::-;;;9764:10;9739:11;:21;;;:35;;;;;;;:::i;:::-;;;;;;;;9793:41;9805:16;;;;;;;;;;;9823:10;9793:11;:41::i;:::-;9875:16;;;;;;;;;;;9858:46;;9867:6;9858:46;;;9893:10;9858:46;;;;;;:::i;:::-;;;;;;;;9651:269;9533:398;;9945:31;9960:6;9968:7;9945:14;:31::i;:::-;10010:1;9991:15;:20;9987:156;;10028:39;10040:9;10051:15;10028:11;:39::i;:::-;10104:9;10087:44;;10096:6;10087:44;;;10115:15;10087:44;;;;;;:::i;:::-;;;;;;;;9987:156;8957:1193;;;;;:::o;11270:611::-;11415:21;11453:1;11439:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11415:40;;11484:4;11466;11471:1;11466:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;11510:9;11500:4;11505:1;11500:7;;;;;;;;;;;;;;;;;;;;;:19;;;;;;;;;;;11540:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11530:4;11535:1;11530:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;11566:53;11583:4;11598:6;;;;;;;;;;;11607:11;11566:8;:53::i;:::-;11658:6;;;;;;;;;;;:57;;;11730:11;11756:1;11800:4;11827;11847:15;11658:215;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11270:611;;;:::o;14013:113::-;14111:7;14090:8;:17;14099:7;14090:17;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;14013:113;;:::o;13895:110::-;13990:7;13969:8;:17;13978:7;13969:17;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;13895:110;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:137::-;;386:6;380:13;371:22;;402:30;426:5;402:30;:::i;:::-;361:77;;;;:::o;444:139::-;;528:6;515:20;506:29;;544:33;571:5;544:33;:::i;:::-;496:87;;;;:::o;589:262::-;;697:2;685:9;676:7;672:23;668:32;665:2;;;713:1;710;703:12;665:2;756:1;781:53;826:7;817:6;806:9;802:22;781:53;:::i;:::-;771:63;;727:117;655:196;;;;:::o;857:284::-;;976:2;964:9;955:7;951:23;947:32;944:2;;;992:1;989;982:12;944:2;1035:1;1060:64;1116:7;1107:6;1096:9;1092:22;1060:64;:::i;:::-;1050:74;;1006:128;934:207;;;;:::o;1147:407::-;;;1272:2;1260:9;1251:7;1247:23;1243:32;1240:2;;;1288:1;1285;1278:12;1240:2;1331:1;1356:53;1401:7;1392:6;1381:9;1377:22;1356:53;:::i;:::-;1346:63;;1302:117;1458:2;1484:53;1529:7;1520:6;1509:9;1505:22;1484:53;:::i;:::-;1474:63;;1429:118;1230:324;;;;;:::o;1560:552::-;;;;1702:2;1690:9;1681:7;1677:23;1673:32;1670:2;;;1718:1;1715;1708:12;1670:2;1761:1;1786:53;1831:7;1822:6;1811:9;1807:22;1786:53;:::i;:::-;1776:63;;1732:117;1888:2;1914:53;1959:7;1950:6;1939:9;1935:22;1914:53;:::i;:::-;1904:63;;1859:118;2016:2;2042:53;2087:7;2078:6;2067:9;2063:22;2042:53;:::i;:::-;2032:63;;1987:118;1660:452;;;;;:::o;2118:407::-;;;2243:2;2231:9;2222:7;2218:23;2214:32;2211:2;;;2259:1;2256;2249:12;2211:2;2302:1;2327:53;2372:7;2363:6;2352:9;2348:22;2327:53;:::i;:::-;2317:63;;2273:117;2429:2;2455:53;2500:7;2491:6;2480:9;2476:22;2455:53;:::i;:::-;2445:63;;2400:118;2201:324;;;;;:::o;2531:278::-;;2647:2;2635:9;2626:7;2622:23;2618:32;2615:2;;;2663:1;2660;2653:12;2615:2;2706:1;2731:61;2784:7;2775:6;2764:9;2760:22;2731:61;:::i;:::-;2721:71;;2677:125;2605:204;;;;:::o;2815:262::-;;2923:2;2911:9;2902:7;2898:23;2894:32;2891:2;;;2939:1;2936;2929:12;2891:2;2982:1;3007:53;3052:7;3043:6;3032:9;3028:22;3007:53;:::i;:::-;2997:63;;2953:117;2881:196;;;;:::o;3083:179::-;;3173:46;3215:3;3207:6;3173:46;:::i;:::-;3251:4;3246:3;3242:14;3228:28;;3163:99;;;;:::o;3268:142::-;3371:32;3397:5;3371:32;:::i;:::-;3366:3;3359:45;3349:61;;:::o;3416:108::-;3493:24;3511:5;3493:24;:::i;:::-;3488:3;3481:37;3471:53;;:::o;3530:118::-;3617:24;3635:5;3617:24;:::i;:::-;3612:3;3605:37;3595:53;;:::o;3684:732::-;;3832:54;3880:5;3832:54;:::i;:::-;3902:86;3981:6;3976:3;3902:86;:::i;:::-;3895:93;;4012:56;4062:5;4012:56;:::i;:::-;4091:7;4122:1;4107:284;4132:6;4129:1;4126:13;4107:284;;;4208:6;4202:13;4235:63;4294:3;4279:13;4235:63;:::i;:::-;4228:70;;4321:60;4374:6;4321:60;:::i;:::-;4311:70;;4167:224;4154:1;4151;4147:9;4142:14;;4107:284;;;4111:14;4407:3;4400:10;;3808:608;;;;;;;:::o;4422:109::-;4503:21;4518:5;4503:21;:::i;:::-;4498:3;4491:34;4481:50;;:::o;4537:147::-;4632:45;4671:5;4632:45;:::i;:::-;4627:3;4620:58;4610:74;;:::o;4690:364::-;;4806:39;4839:5;4806:39;:::i;:::-;4861:71;4925:6;4920:3;4861:71;:::i;:::-;4854:78;;4941:52;4986:6;4981:3;4974:4;4967:5;4963:16;4941:52;:::i;:::-;5018:29;5040:6;5018:29;:::i;:::-;5013:3;5009:39;5002:46;;4782:272;;;;;:::o;5060:366::-;;5223:67;5287:2;5282:3;5223:67;:::i;:::-;5216:74;;5299:93;5388:3;5299:93;:::i;:::-;5417:2;5412:3;5408:12;5401:19;;5206:220;;;:::o;5432:366::-;;5595:67;5659:2;5654:3;5595:67;:::i;:::-;5588:74;;5671:93;5760:3;5671:93;:::i;:::-;5789:2;5784:3;5780:12;5773:19;;5578:220;;;:::o;5804:366::-;;5967:67;6031:2;6026:3;5967:67;:::i;:::-;5960:74;;6043:93;6132:3;6043:93;:::i;:::-;6161:2;6156:3;6152:12;6145:19;;5950:220;;;:::o;6176:366::-;;6339:67;6403:2;6398:3;6339:67;:::i;:::-;6332:74;;6415:93;6504:3;6415:93;:::i;:::-;6533:2;6528:3;6524:12;6517:19;;6322:220;;;:::o;6548:366::-;;6711:67;6775:2;6770:3;6711:67;:::i;:::-;6704:74;;6787:93;6876:3;6787:93;:::i;:::-;6905:2;6900:3;6896:12;6889:19;;6694:220;;;:::o;6920:366::-;;7083:67;7147:2;7142:3;7083:67;:::i;:::-;7076:74;;7159:93;7248:3;7159:93;:::i;:::-;7277:2;7272:3;7268:12;7261:19;;7066:220;;;:::o;7292:366::-;;7455:67;7519:2;7514:3;7455:67;:::i;:::-;7448:74;;7531:93;7620:3;7531:93;:::i;:::-;7649:2;7644:3;7640:12;7633:19;;7438:220;;;:::o;7664:366::-;;7827:67;7891:2;7886:3;7827:67;:::i;:::-;7820:74;;7903:93;7992:3;7903:93;:::i;:::-;8021:2;8016:3;8012:12;8005:19;;7810:220;;;:::o;8036:366::-;;8199:67;8263:2;8258:3;8199:67;:::i;:::-;8192:74;;8275:93;8364:3;8275:93;:::i;:::-;8393:2;8388:3;8384:12;8377:19;;8182:220;;;:::o;8408:366::-;;8571:67;8635:2;8630:3;8571:67;:::i;:::-;8564:74;;8647:93;8736:3;8647:93;:::i;:::-;8765:2;8760:3;8756:12;8749:19;;8554:220;;;:::o;8780:366::-;;8943:67;9007:2;9002:3;8943:67;:::i;:::-;8936:74;;9019:93;9108:3;9019:93;:::i;:::-;9137:2;9132:3;9128:12;9121:19;;8926:220;;;:::o;9152:366::-;;9315:67;9379:2;9374:3;9315:67;:::i;:::-;9308:74;;9391:93;9480:3;9391:93;:::i;:::-;9509:2;9504:3;9500:12;9493:19;;9298:220;;;:::o;9524:115::-;9609:23;9626:5;9609:23;:::i;:::-;9604:3;9597:36;9587:52;;:::o;9645:118::-;9732:24;9750:5;9732:24;:::i;:::-;9727:3;9720:37;9710:53;;:::o;9769:112::-;9852:22;9868:5;9852:22;:::i;:::-;9847:3;9840:35;9830:51;;:::o;9887:222::-;;10018:2;10007:9;10003:18;9995:26;;10031:71;10099:1;10088:9;10084:17;10075:6;10031:71;:::i;:::-;9985:124;;;;:::o;10115:254::-;;10262:2;10251:9;10247:18;10239:26;;10275:87;10359:1;10348:9;10344:17;10335:6;10275:87;:::i;:::-;10229:140;;;;:::o;10375:332::-;;10534:2;10523:9;10519:18;10511:26;;10547:71;10615:1;10604:9;10600:17;10591:6;10547:71;:::i;:::-;10628:72;10696:2;10685:9;10681:18;10672:6;10628:72;:::i;:::-;10501:206;;;;;:::o;10713:332::-;;10872:2;10861:9;10857:18;10849:26;;10885:71;10953:1;10942:9;10938:17;10929:6;10885:71;:::i;:::-;10966:72;11034:2;11023:9;11019:18;11010:6;10966:72;:::i;:::-;10839:206;;;;;:::o;11051:210::-;;11176:2;11165:9;11161:18;11153:26;;11189:65;11251:1;11240:9;11236:17;11227:6;11189:65;:::i;:::-;11143:118;;;;:::o;11267:313::-;;11418:2;11407:9;11403:18;11395:26;;11467:9;11461:4;11457:20;11453:1;11442:9;11438:17;11431:47;11495:78;11568:4;11559:6;11495:78;:::i;:::-;11487:86;;11385:195;;;;:::o;11586:419::-;;11790:2;11779:9;11775:18;11767:26;;11839:9;11833:4;11829:20;11825:1;11814:9;11810:17;11803:47;11867:131;11993:4;11867:131;:::i;:::-;11859:139;;11757:248;;;:::o;12011:419::-;;12215:2;12204:9;12200:18;12192:26;;12264:9;12258:4;12254:20;12250:1;12239:9;12235:17;12228:47;12292:131;12418:4;12292:131;:::i;:::-;12284:139;;12182:248;;;:::o;12436:419::-;;12640:2;12629:9;12625:18;12617:26;;12689:9;12683:4;12679:20;12675:1;12664:9;12660:17;12653:47;12717:131;12843:4;12717:131;:::i;:::-;12709:139;;12607:248;;;:::o;12861:419::-;;13065:2;13054:9;13050:18;13042:26;;13114:9;13108:4;13104:20;13100:1;13089:9;13085:17;13078:47;13142:131;13268:4;13142:131;:::i;:::-;13134:139;;13032:248;;;:::o;13286:419::-;;13490:2;13479:9;13475:18;13467:26;;13539:9;13533:4;13529:20;13525:1;13514:9;13510:17;13503:47;13567:131;13693:4;13567:131;:::i;:::-;13559:139;;13457:248;;;:::o;13711:419::-;;13915:2;13904:9;13900:18;13892:26;;13964:9;13958:4;13954:20;13950:1;13939:9;13935:17;13928:47;13992:131;14118:4;13992:131;:::i;:::-;13984:139;;13882:248;;;:::o;14136:419::-;;14340:2;14329:9;14325:18;14317:26;;14389:9;14383:4;14379:20;14375:1;14364:9;14360:17;14353:47;14417:131;14543:4;14417:131;:::i;:::-;14409:139;;14307:248;;;:::o;14561:419::-;;14765:2;14754:9;14750:18;14742:26;;14814:9;14808:4;14804:20;14800:1;14789:9;14785:17;14778:47;14842:131;14968:4;14842:131;:::i;:::-;14834:139;;14732:248;;;:::o;14986:419::-;;15190:2;15179:9;15175:18;15167:26;;15239:9;15233:4;15229:20;15225:1;15214:9;15210:17;15203:47;15267:131;15393:4;15267:131;:::i;:::-;15259:139;;15157:248;;;:::o;15411:419::-;;15615:2;15604:9;15600:18;15592:26;;15664:9;15658:4;15654:20;15650:1;15639:9;15635:17;15628:47;15692:131;15818:4;15692:131;:::i;:::-;15684:139;;15582:248;;;:::o;15836:419::-;;16040:2;16029:9;16025:18;16017:26;;16089:9;16083:4;16079:20;16075:1;16064:9;16060:17;16053:47;16117:131;16243:4;16117:131;:::i;:::-;16109:139;;16007:248;;;:::o;16261:419::-;;16465:2;16454:9;16450:18;16442:26;;16514:9;16508:4;16504:20;16500:1;16489:9;16485:17;16478:47;16542:131;16668:4;16542:131;:::i;:::-;16534:139;;16432:248;;;:::o;16686:324::-;;16841:2;16830:9;16826:18;16818:26;;16854:69;16920:1;16909:9;16905:17;16896:6;16854:69;:::i;:::-;16933:70;16999:2;16988:9;16984:18;16975:6;16933:70;:::i;:::-;16808:202;;;;;:::o;17016:222::-;;17147:2;17136:9;17132:18;17124:26;;17160:71;17228:1;17217:9;17213:17;17204:6;17160:71;:::i;:::-;17114:124;;;;:::o;17244:831::-;;17545:3;17534:9;17530:19;17522:27;;17559:71;17627:1;17616:9;17612:17;17603:6;17559:71;:::i;:::-;17640:80;17716:2;17705:9;17701:18;17692:6;17640:80;:::i;:::-;17767:9;17761:4;17757:20;17752:2;17741:9;17737:18;17730:48;17795:108;17898:4;17889:6;17795:108;:::i;:::-;17787:116;;17913:72;17981:2;17970:9;17966:18;17957:6;17913:72;:::i;:::-;17995:73;18063:3;18052:9;18048:19;18039:6;17995:73;:::i;:::-;17512:563;;;;;;;;:::o;18081:332::-;;18240:2;18229:9;18225:18;18217:26;;18253:71;18321:1;18310:9;18306:17;18297:6;18253:71;:::i;:::-;18334:72;18402:2;18391:9;18387:18;18378:6;18334:72;:::i;:::-;18207:206;;;;;:::o;18419:214::-;;18546:2;18535:9;18531:18;18523:26;;18559:67;18623:1;18612:9;18608:17;18599:6;18559:67;:::i;:::-;18513:120;;;;:::o;18639:132::-;;18729:3;18721:11;;18759:4;18754:3;18750:14;18742:22;;18711:60;;;:::o;18777:114::-;;18878:5;18872:12;18862:22;;18851:40;;;:::o;18897:99::-;;18983:5;18977:12;18967:22;;18956:40;;;:::o;19002:113::-;;19104:4;19099:3;19095:14;19087:22;;19077:38;;;:::o;19121:184::-;;19254:6;19249:3;19242:19;19294:4;19289:3;19285:14;19270:29;;19232:73;;;;:::o;19311:169::-;;19429:6;19424:3;19417:19;19469:4;19464:3;19460:14;19445:29;;19407:73;;;;:::o;19486:242::-;;19544:19;19561:1;19544:19;:::i;:::-;19539:24;;19577:19;19594:1;19577:19;:::i;:::-;19572:24;;19670:1;19662:6;19658:14;19655:1;19652:21;19649:2;;;19676:18;;:::i;:::-;19649:2;19720:1;19717;19713:9;19706:16;;19529:199;;;;:::o;19734:305::-;;19793:20;19811:1;19793:20;:::i;:::-;19788:25;;19827:20;19845:1;19827:20;:::i;:::-;19822:25;;19981:1;19913:66;19909:74;19906:1;19903:81;19900:2;;;19987:18;;:::i;:::-;19900:2;20031:1;20028;20024:9;20017:16;;19778:261;;;;:::o;20045:185::-;;20102:20;20120:1;20102:20;:::i;:::-;20097:25;;20136:20;20154:1;20136:20;:::i;:::-;20131:25;;20175:1;20165:2;;20180:18;;:::i;:::-;20165:2;20222:1;20219;20215:9;20210:14;;20087:143;;;;:::o;20236:848::-;;;20328:6;20319:15;;20352:5;20343:14;;20366:712;20387:1;20377:8;20374:15;20366:712;;;20482:4;20477:3;20473:14;20467:4;20464:24;20461:2;;;20491:18;;:::i;:::-;20461:2;20541:1;20531:8;20527:16;20524:2;;;20956:4;20949:5;20945:16;20936:25;;20524:2;21006:4;21000;20996:15;20988:23;;21036:32;21059:8;21036:32;:::i;:::-;21024:44;;20366:712;;;20309:775;;;;;;;:::o;21090:281::-;;21172:23;21190:4;21172:23;:::i;:::-;21164:31;;21216:25;21232:8;21216:25;:::i;:::-;21204:37;;21260:104;21297:66;21287:8;21281:4;21260:104;:::i;:::-;21251:113;;21154:217;;;;:::o;21377:1073::-;;21622:8;21612:2;;21643:1;21634:10;;21645:5;;21612:2;21671:4;21661:2;;21688:1;21679:10;;21690:5;;21661:2;21757:4;21805:1;21800:27;;;;21841:1;21836:191;;;;21750:277;;21800:27;21818:1;21809:10;;21820:5;;;21836:191;21881:3;21871:8;21868:17;21865:2;;;21888:18;;:::i;:::-;21865:2;21937:8;21934:1;21930:16;21921:25;;21972:3;21965:5;21962:14;21959:2;;;21979:18;;:::i;:::-;21959:2;22012:5;;;21750:277;;22136:2;22126:8;22123:16;22117:3;22111:4;22108:13;22104:36;22086:2;22076:8;22073:16;22068:2;22062:4;22059:12;22055:35;22039:111;22036:2;;;22192:8;22186:4;22182:19;22173:28;;22227:3;22220:5;22217:14;22214:2;;;22234:18;;:::i;:::-;22214:2;22267:5;;22036:2;22307:42;22345:3;22335:8;22329:4;22326:1;22307:42;:::i;:::-;22292:57;;;;22381:4;22376:3;22372:14;22365:5;22362:25;22359:2;;;22390:18;;:::i;:::-;22359:2;22439:4;22432:5;22428:16;22419:25;;21437:1013;;;;;;:::o;22456:348::-;;22519:20;22537:1;22519:20;:::i;:::-;22514:25;;22553:20;22571:1;22553:20;:::i;:::-;22548:25;;22741:1;22673:66;22669:74;22666:1;22663:81;22658:1;22651:9;22644:17;22640:105;22637:2;;;22748:18;;:::i;:::-;22637:2;22796:1;22793;22789:9;22778:20;;22504:300;;;;:::o;22810:191::-;;22870:20;22888:1;22870:20;:::i;:::-;22865:25;;22904:20;22922:1;22904:20;:::i;:::-;22899:25;;22943:1;22940;22937:8;22934:2;;;22948:18;;:::i;:::-;22934:2;22993:1;22990;22986:9;22978:17;;22855:146;;;;:::o;23007:96::-;;23073:24;23091:5;23073:24;:::i;:::-;23062:35;;23052:51;;;:::o;23109:104::-;;23183:24;23201:5;23183:24;:::i;:::-;23172:35;;23162:51;;;:::o;23219:90::-;;23296:5;23289:13;23282:21;23271:32;;23261:48;;;:::o;23315:89::-;;23391:6;23384:5;23380:18;23369:29;;23359:45;;;:::o;23410:126::-;;23487:42;23480:5;23476:54;23465:65;;23455:81;;;:::o;23542:77::-;;23608:5;23597:16;;23587:32;;;:::o;23625:86::-;;23700:4;23693:5;23689:16;23678:27;;23668:43;;;:::o;23717:121::-;;23808:24;23826:5;23808:24;:::i;:::-;23795:37;;23785:53;;;:::o;23844:307::-;23912:1;23922:113;23936:6;23933:1;23930:13;23922:113;;;24021:1;24016:3;24012:11;24006:18;24002:1;23997:3;23993:11;23986:39;23958:2;23955:1;23951:10;23946:15;;23922:113;;;24053:6;24050:1;24047:13;24044:2;;;24133:1;24124:6;24119:3;24115:16;24108:27;24044:2;23893:258;;;;:::o;24157:180::-;24205:77;24202:1;24195:88;24302:4;24299:1;24292:15;24326:4;24323:1;24316:15;24343:180;24391:77;24388:1;24381:88;24488:4;24485:1;24478:15;24512:4;24509:1;24502:15;24529:102;;24621:2;24617:7;24612:2;24605:5;24601:14;24597:28;24587:38;;24577:54;;;:::o;24637:102::-;;24726:5;24723:1;24719:13;24698:34;;24688:51;;;:::o;24745:222::-;24885:34;24881:1;24873:6;24869:14;24862:58;24954:5;24949:2;24941:6;24937:15;24930:30;24851:116;:::o;24973:236::-;25113:34;25109:1;25101:6;25097:14;25090:58;25182:19;25177:2;25169:6;25165:15;25158:44;25079:130;:::o;25215:225::-;25355:34;25351:1;25343:6;25339:14;25332:58;25424:8;25419:2;25411:6;25407:15;25400:33;25321:119;:::o;25446:221::-;25586:34;25582:1;25574:6;25570:14;25563:58;25655:4;25650:2;25642:6;25638:15;25631:29;25552:115;:::o;25673:175::-;25813:27;25809:1;25801:6;25797:14;25790:51;25779:69;:::o;25854:174::-;25994:26;25990:1;25982:6;25978:14;25971:50;25960:68;:::o;26034:227::-;26174:34;26170:1;26162:6;26158:14;26151:58;26243:10;26238:2;26230:6;26226:15;26219:35;26140:121;:::o;26267:182::-;26407:34;26403:1;26395:6;26391:14;26384:58;26373:76;:::o;26455:228::-;26595:34;26591:1;26583:6;26579:14;26572:58;26664:11;26659:2;26651:6;26647:15;26640:36;26561:122;:::o;26689:224::-;26829:34;26825:1;26817:6;26813:14;26806:58;26898:7;26893:2;26885:6;26881:15;26874:32;26795:118;:::o;26919:223::-;27059:34;27055:1;27047:6;27043:14;27036:58;27128:6;27123:2;27115:6;27111:15;27104:31;27025:117;:::o;27148:224::-;27288:34;27284:1;27276:6;27272:14;27265:58;27357:7;27352:2;27344:6;27340:15;27333:32;27254:118;:::o;27378:122::-;27451:24;27469:5;27451:24;:::i;:::-;27444:5;27441:35;27431:2;;27490:1;27487;27480:12;27431:2;27421:79;:::o;27506:116::-;27576:21;27591:5;27576:21;:::i;:::-;27569:5;27566:32;27556:2;;27612:1;27609;27602:12;27556:2;27546:76;:::o;27628:122::-;27701:24;27719:5;27701:24;:::i;:::-;27694:5;27691:35;27681:2;;27740:1;27737;27730:12;27681:2;27671:79;:::o

Swarm Source

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