ETH Price: $2,503.10 (-5.76%)

Token

Dextensor (TAOS)
 

Overview

Max Total Supply

928,001 TAOS

Holders

444

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
845.123891811 TAOS

Value
$0.00
0x1c2e6f14a73c4a399ebc19df4a6f637e29390b65
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:
TAOS

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-03-14
*/

/**
Telegram: https://t.me/Dextensor
Twitter: https://twitter.com/TAOS_ERC20
Gitbook: https://taos.gitbook.io/taos/
**/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IERC20 {
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

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 TAOS is IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    string private constant _name = unicode"Dextensor";
    string private constant _symbol = unicode"TAOS";
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000 * (10 ** _decimals);
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    uint256 public _maxTxAmount = ( _totalSupply * 150 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 150 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 150 ) / 10000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 1750;
    uint256 private developmentFee = 1750;
    uint256 private burnFee = 0;
    uint256 private totalFee = 3500;
    uint256 private sellFee = 3500;
    uint256 private transferFee = 7000;
    uint256 private denominator = 10000;
    address internal liquidity_receiver = 0x056F9c7A2397fB009138677815E260C1D2058131;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x056F9c7A2397fB009138677815E260C1D2058131; 
    address internal marketing_receiver = 0xAA0867f908D16c1825AB4eD564Fa563473285C40;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router; pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[development_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}
    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;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

    function shouldContractSwap(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= swapAmount && aboveThreshold;
    }

    function changeContractSwapConfig(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function setTAOSFees(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "");
    }

    function setTAOSTxLimit(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet");
    }

    function setisBot(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

    function setTAOSFeeAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function manualSwap() external onlyOwner {
        uint256 amount = balanceOf(address(this));
        if(amount > swapThreshold){amount = swapThreshold;}
        swapAndLiquify(amount);
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }

    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator.sub(uint256(100));}
        if(recipient == pair){return sellFee;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0) && getTotalFee(sender, recipient) > burnFee){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address.");
        require(recipient != address(0), "ERC20: transfer to the zero address.");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance.");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed.");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded.");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded."); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance."));
        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);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"changeContractSwapConfig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setTAOSFeeAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setTAOSFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTAOSTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000905565b620f424062000024919062000956565b6005556000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e860055462000078919062000956565b620000849190620009d0565b600b55620186a0600a6005546200009c919062000956565b620000a89190620009d0565b600c556127106096600554620000bf919062000956565b620000cb9190620009d0565b600d556127106096600554620000e2919062000956565b620000ee9190620009d0565b600e55612710609660055462000105919062000956565b620001119190620009d0565b600f5560006010556106d66011556106d66012556000601355610dac601455610dac601555611b5860165561271060175573056f9c7a2397fb009138677815e260c1d2058131601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073056f9c7a2397fb009138677815e260c1d2058131601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aa0867f908d16c1825ab4ed564fa563473285c40601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200024e57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000a72565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000386573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ac919062000a72565b6040518363ffffffff1660e01b8152600401620003cb92919062000ab5565b6020604051808303816000875af1158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000411919062000a72565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600554600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6005546040516200075b919062000af3565b60405180910390a3505062000b10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f957808604811115620007d157620007d06200076b565b5b6001851615620007e15780820291505b8081029050620007f1856200079a565b9450620007b1565b94509492505050565b600082620008145760019050620008e7565b81620008245760009050620008e7565b81600181146200083d576002811462000848576200087e565b6001915050620008e7565b60ff8411156200085d576200085c6200076b565b5b8360020a9150848211156200087757620008766200076b565b5b50620008e7565b5060208310610133831016604e8410600b8410161715620008b85782820a905083811115620008b257620008b16200076b565b5b620008e7565b620008c78484846001620007a7565b92509050818404811115620008e157620008e06200076b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200091282620008ee565b91506200091f83620008f8565b92506200094e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000802565b905092915050565b60006200096382620008ee565b91506200097083620008ee565b92508282026200098081620008ee565b915082820484148315176200099a57620009996200076b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009dd82620008ee565b9150620009ea83620008ee565b925082620009fd57620009fc620009a1565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a3a8262000a0d565b9050919050565b62000a4c8162000a2d565b811462000a5857600080fd5b50565b60008151905062000a6c8162000a41565b92915050565b60006020828403121562000a8b5762000a8a62000a08565b5b600062000a9b8482850162000a5b565b91505092915050565b62000aaf8162000a2d565b82525050565b600060408201905062000acc600083018562000aa4565b62000adb602083018462000aa4565b9392505050565b62000aed81620008ee565b82525050565b600060208201905062000b0a600083018462000ae2565b92915050565b613ac28062000b206000396000f3fe6080604052600436106101855760003560e01c80636ffac08c116100d15780638cd4426d1161008a578063a9059cbb11610064578063a9059cbb14610569578063dd045cf1146105a6578063dd62ed3e146105cf578063f2fde38b1461060c5761018c565b80638cd4426d146104ea57806395d89b4114610513578063a8aa1b311461053e5761018c565b80636ffac08c146103d857806370a082311461040157806378109e541461043e5780637cca52fe146104695780637d1db4a514610494578063893d20e8146104bf5761018c565b8063293230b81161013e5780633f4218e0116101185780633f4218e01461033257806348ff2b8b1461036f57806351bc3c851461039857806362ab2609146103af5761018c565b8063293230b8146102b35780632f54bf6e146102ca578063313ce567146103075761018c565b806306fdde0314610191578063095ea7b3146101bc5780630a2becf0146101f957806318160ddd14610222578063229b6a5e1461024d57806323b872dd146102765761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b39190612a73565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612b33565b610672565b6040516101f09190612b8e565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612ba9565b610689565b005b34801561022e57600080fd5b506102376108a1565b6040516102449190612c0b565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612cb7565b6108e2565b005b34801561028257600080fd5b5061029d60048036038101906102989190612d17565b6109cf565b6040516102aa9190612b8e565b60405180910390f35b3480156102bf57600080fd5b506102c8610a9a565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190612d6a565b610aff565b6040516102fe9190612b8e565b60405180910390f35b34801561031357600080fd5b5061031c610b58565b6040516103299190612db3565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190612d6a565b610b61565b6040516103669190612b8e565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612dce565b610b81565b005b3480156103a457600080fd5b506103ad610c24565b005b3480156103bb57600080fd5b506103d660048036038101906103d19190612e0e565b610c95565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612e61565b610d49565b005b34801561040d57600080fd5b5061042860048036038101906104239190612d6a565b610e6b565b6040516104359190612c0b565b60405180910390f35b34801561044a57600080fd5b50610453610eb4565b6040516104609190612c0b565b60405180910390f35b34801561047557600080fd5b5061047e610eba565b60405161048b9190612c0b565b60405180910390f35b3480156104a057600080fd5b506104a9610ec0565b6040516104b69190612c0b565b60405180910390f35b3480156104cb57600080fd5b506104d4610ec6565b6040516104e19190612f12565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c9190612b33565b610eef565b005b34801561051f57600080fd5b50610528611080565b6040516105359190612a73565b60405180910390f35b34801561054a57600080fd5b506105536110bd565b6040516105609190612f12565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190612b33565b6110e3565b60405161059d9190612b8e565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612e0e565b6110fa565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612f2d565b611275565b6040516106039190612c0b565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e9190612fab565b6112fc565b005b60606040518060400160405280600981526020017f44657874656e736f720000000000000000000000000000000000000000000000815250905090565b600061067f3384846113be565b6001905092915050565b61069233610aff565b6106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890613024565b60405180910390fd5b82601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006108dd6108b06000610e6b565b6108cf6108be61dead610e6b565b60055461158790919063ffffffff16565b61158790919063ffffffff16565b905090565b6108eb33610aff565b61092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092190613024565b60405180910390fd5b60005b838390508110156109c95781600460008686858181106109505761094f613044565b5b90506020020160208101906109659190612d6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109c1906130a2565b91505061092d565b50505050565b60006109dc84848461159d565b610a8f8433610a8a85604051806060016040528060298152602001613a6460299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e679092919063ffffffff16565b6113be565b600190509392505050565b610aa333610aff565b610ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad990613024565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60036020528060005260406000206000915054906101000a900460ff1681565b610b8a33610aff565b610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613024565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610c2d33610aff565b610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6390613024565b60405180910390fd5b6000610c7730610e6b565b9050600b54811115610c8957600b5490505b610c9281611ebc565b50565b610c9e33610aff565b610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490613024565b60405180910390fd5b82600a81905550610d0e620186a0610d008460055461212990919063ffffffff16565b61213f90919063ffffffff16565b600b81905550610d3e620186a0610d308360055461212990919063ffffffff16565b61213f90919063ffffffff16565b600c81905550505050565b610d5233610aff565b610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890613024565b60405180910390fd5b86601081905550856011819055508460138190555083601281905550826014819055508160158190555080601681905550610dd8600160175461213f90919063ffffffff16565b60145411158015610e005750610dfa600160175461213f90919063ffffffff16565b60155411155b8015610e235750610e1d600160175461213f90919063ffffffff16565b60165411155b610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990613110565b60405180910390fd5b50505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b600e5481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef833610aff565b610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90613024565b60405180910390fd5b6000610fd86064610fca848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f7b9190612f12565b602060405180830381865afa158015610f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbc9190613145565b61212990919063ffffffff16565b61213f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611037929190613172565b6020604051808303816000875af1158015611056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107a91906131b0565b50505050565b60606040518060400160405280600481526020017f54414f5300000000000000000000000000000000000000000000000000000000815250905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110f033848461159d565b6001905092915050565b61110333610aff565b611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990613024565b60405180910390fd5b600061116d61271061115f8660055461212990919063ffffffff16565b61213f90919063ffffffff16565b9050600061119a61271061118c8660055461212990919063ffffffff16565b61213f90919063ffffffff16565b905060006111c76127106111b98660055461212990919063ffffffff16565b61213f90919063ffffffff16565b905082600d8190555081600e8190555080600f81905550600061120f6103e861120160056111f36108a1565b61212990919063ffffffff16565b61213f90919063ffffffff16565b90508084101580156112215750808310155b801561122d5750808210155b61126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390613229565b60405180910390fd5b50505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61130533610aff565b611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b90613024565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516113b391906132a8565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142490613335565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611493906133c7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161157a9190612c0b565b60405180910390a3505050565b6000818361159591906133e7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361160c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116039061348d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361167b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116729061351f565b60405180910390fd5b61168483610e6b565b8111156116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd906135b1565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561176a5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117bf57600760149054906101000a900460ff166117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b59061361d565b60405180910390fd5b5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118635750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118bd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118f7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561199357600f5461195182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215590919063ffffffff16565b1115611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613689565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ad657600e5481111580611a425750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a965750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906136f5565b60405180910390fd5b5b600d5481111580611b305750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b845750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba906136f5565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c6a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c8a57600160086000828254611c829190613715565b925050819055505b611c9583838361216b565b15611cae57611ca5600b54611ebc565b60006008819055505b611d0081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461158790919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d4f84846122a5565b611d595781611d65565b611d64848484612353565b5b9050611db981600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e599190612c0b565b60405180910390a350505050565b6000838311158290611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea69190612a73565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611f2a6002611f1c601254611f0e601154611f00600160105461215590919063ffffffff16565b61215590919063ffffffff16565b61215590919063ffffffff16565b61212990919063ffffffff16565b90506000611f5582611f476010548661212990919063ffffffff16565b61213f90919063ffffffff16565b90506000611f6c828561158790919063ffffffff16565b90506000479050611f7c82612511565b6000611f91824761158790919063ffffffff16565b90506000611fbc611fad6010548861158790919063ffffffff16565b8361213f90919063ffffffff16565b90506000611fd56010548361212990919063ffffffff16565b90506000811115611feb57611fea8682612754565b5b600061201560115461200760028661212990919063ffffffff16565b61212990919063ffffffff16565b9050600081111561208a57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612088573d6000803e3d6000fd5b505b6000479050600081111561210257601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612100573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b600081836121379190613749565b905092915050565b6000818361214d91906137ba565b905092915050565b600081836121639190613715565b905092915050565b600080600c5483101590506000600b5461218430610e6b565b10159050600960009054906101000a900460ff161580156121b15750600760159054906101000a900460ff165b80156121c95750600760149054906101000a900460ff165b80156121d25750815b80156122285750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122815750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156122915750600a5460085410155b801561229a5750805b925050509392505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561234b5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806123608585612854565b11156125065760006123986123758686612854565b61238a6017548661213f90919063ffffffff16565b61212990919063ffffffff16565b90506123ec81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161248c9190612c0b565b60405180910390a360006013541180156124b057506013546124ae8686612854565b115b156124eb576124ea3061dead6124e56013546124d76017548961213f90919063ffffffff16565b61212990919063ffffffff16565b61159d565b5b6124fe818461158790919063ffffffff16565b91505061250a565b8190505b9392505050565b6000600267ffffffffffffffff81111561252e5761252d6137eb565b5b60405190808252806020026020018201604052801561255c5781602001602082028036833780820191505090505b509050308160008151811061257457612573613044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561261b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263f919061382f565b8160018151811061265357612652613044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126ba30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113be565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161271e959493929190613955565b600060405180830381600087803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b505050505050565b61278130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113be565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161280a969594939291906139af565b60606040518083038185885af1158015612828573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061284d9190613a10565b5050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128f75750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561291957612912606460175461158790919063ffffffff16565b90506129dd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129785760155490506129dd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129d75760145490506129dd565b60165490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a1d578082015181840152602081019050612a02565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a45826129e3565b612a4f81856129ee565b9350612a5f8185602086016129ff565b612a6881612a29565b840191505092915050565b60006020820190508181036000830152612a8d8184612a3a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aca82612a9f565b9050919050565b612ada81612abf565b8114612ae557600080fd5b50565b600081359050612af781612ad1565b92915050565b6000819050919050565b612b1081612afd565b8114612b1b57600080fd5b50565b600081359050612b2d81612b07565b92915050565b60008060408385031215612b4a57612b49612a95565b5b6000612b5885828601612ae8565b9250506020612b6985828601612b1e565b9150509250929050565b60008115159050919050565b612b8881612b73565b82525050565b6000602082019050612ba36000830184612b7f565b92915050565b600080600060608486031215612bc257612bc1612a95565b5b6000612bd086828701612ae8565b9350506020612be186828701612ae8565b9250506040612bf286828701612ae8565b9150509250925092565b612c0581612afd565b82525050565b6000602082019050612c206000830184612bfc565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c4b57612c4a612c26565b5b8235905067ffffffffffffffff811115612c6857612c67612c2b565b5b602083019150836020820283011115612c8457612c83612c30565b5b9250929050565b612c9481612b73565b8114612c9f57600080fd5b50565b600081359050612cb181612c8b565b92915050565b600080600060408486031215612cd057612ccf612a95565b5b600084013567ffffffffffffffff811115612cee57612ced612a9a565b5b612cfa86828701612c35565b93509350506020612d0d86828701612ca2565b9150509250925092565b600080600060608486031215612d3057612d2f612a95565b5b6000612d3e86828701612ae8565b9350506020612d4f86828701612ae8565b9250506040612d6086828701612b1e565b9150509250925092565b600060208284031215612d8057612d7f612a95565b5b6000612d8e84828501612ae8565b91505092915050565b600060ff82169050919050565b612dad81612d97565b82525050565b6000602082019050612dc86000830184612da4565b92915050565b60008060408385031215612de557612de4612a95565b5b6000612df385828601612ae8565b9250506020612e0485828601612ca2565b9150509250929050565b600080600060608486031215612e2757612e26612a95565b5b6000612e3586828701612b1e565b9350506020612e4686828701612b1e565b9250506040612e5786828701612b1e565b9150509250925092565b600080600080600080600060e0888a031215612e8057612e7f612a95565b5b6000612e8e8a828b01612b1e565b9750506020612e9f8a828b01612b1e565b9650506040612eb08a828b01612b1e565b9550506060612ec18a828b01612b1e565b9450506080612ed28a828b01612b1e565b93505060a0612ee38a828b01612b1e565b92505060c0612ef48a828b01612b1e565b91505092959891949750929550565b612f0c81612abf565b82525050565b6000602082019050612f276000830184612f03565b92915050565b60008060408385031215612f4457612f43612a95565b5b6000612f5285828601612ae8565b9250506020612f6385828601612ae8565b9150509250929050565b6000612f7882612a9f565b9050919050565b612f8881612f6d565b8114612f9357600080fd5b50565b600081359050612fa581612f7f565b92915050565b600060208284031215612fc157612fc0612a95565b5b6000612fcf84828501612f96565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061300e6006836129ee565b915061301982612fd8565b602082019050919050565b6000602082019050818103600083015261303d81613001565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130ad82612afd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130df576130de613073565b5b600182019050919050565b50565b60006130fa6000836129ee565b9150613105826130ea565b600082019050919050565b60006020820190508181036000830152613129816130ed565b9050919050565b60008151905061313f81612b07565b92915050565b60006020828403121561315b5761315a612a95565b5b600061316984828501613130565b91505092915050565b60006040820190506131876000830185612f03565b6131946020830184612bfc565b9392505050565b6000815190506131aa81612c8b565b92915050565b6000602082840312156131c6576131c5612a95565b5b60006131d48482850161319b565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c657400000000000000000000600082015250565b60006132136016836129ee565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b6000819050919050565b600061326e61326961326484612a9f565b613249565b612a9f565b9050919050565b600061328082613253565b9050919050565b600061329282613275565b9050919050565b6132a281613287565b82525050565b60006020820190506132bd6000830184613299565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061331f6024836129ee565b915061332a826132c3565b604082019050919050565b6000602082019050818103600083015261334e81613312565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133b16022836129ee565b91506133bc82613355565b604082019050919050565b600060208201905081810360008301526133e0816133a4565b9050919050565b60006133f282612afd565b91506133fd83612afd565b925082820390508181111561341557613414613073565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f64726573732e0000000000000000000000000000000000000000000000000000602082015250565b60006134776026836129ee565b91506134828261341b565b604082019050919050565b600060208201905081810360008301526134a68161346a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573732e00000000000000000000000000000000000000000000000000000000602082015250565b60006135096024836129ee565b9150613514826134ad565b604082019050919050565b60006020820190508181036000830152613538816134fc565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e63652e0000000000000000000000000000602082015250565b600061359b6032836129ee565b91506135a68261353f565b604082019050919050565b600060208201905081810360008301526135ca8161358e565b9050919050565b7f74726164696e67416c6c6f7765642e0000000000000000000000000000000000600082015250565b6000613607600f836129ee565b9150613612826135d1565b602082019050919050565b60006020820190508181036000830152613636816135fa565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613673601e836129ee565b915061367e8261363d565b602082019050919050565b600060208201905081810360008301526136a281613666565b9050919050565b7f5458204c696d69742045786365656465642e0000000000000000000000000000600082015250565b60006136df6012836129ee565b91506136ea826136a9565b602082019050919050565b6000602082019050818103600083015261370e816136d2565b9050919050565b600061372082612afd565b915061372b83612afd565b925082820190508082111561374357613742613073565b5b92915050565b600061375482612afd565b915061375f83612afd565b925082820261376d81612afd565b9150828204841483151761378457613783613073565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137c582612afd565b91506137d083612afd565b9250826137e0576137df61378b565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061382981612ad1565b92915050565b60006020828403121561384557613844612a95565b5b60006138538482850161381a565b91505092915050565b6000819050919050565b600061388161387c6138778461385c565b613249565b612afd565b9050919050565b61389181613866565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138cc81612abf565b82525050565b60006138de83836138c3565b60208301905092915050565b6000602082019050919050565b600061390282613897565b61390c81856138a2565b9350613917836138b3565b8060005b8381101561394857815161392f88826138d2565b975061393a836138ea565b92505060018101905061391b565b5085935050505092915050565b600060a08201905061396a6000830188612bfc565b6139776020830187613888565b818103604083015261398981866138f7565b90506139986060830185612f03565b6139a56080830184612bfc565b9695505050505050565b600060c0820190506139c46000830189612f03565b6139d16020830188612bfc565b6139de6040830187613888565b6139eb6060830186613888565b6139f86080830185612f03565b613a0560a0830184612bfc565b979650505050505050565b600080600060608486031215613a2957613a28612a95565b5b6000613a3786828701613130565b9350506020613a4886828701613130565b9250506040613a5986828701613130565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63652ea2646970667358221220143be01274cf070f405374c448c2a4ba3a4fd9c5411f1567e38b5b32f1dc271564736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80636ffac08c116100d15780638cd4426d1161008a578063a9059cbb11610064578063a9059cbb14610569578063dd045cf1146105a6578063dd62ed3e146105cf578063f2fde38b1461060c5761018c565b80638cd4426d146104ea57806395d89b4114610513578063a8aa1b311461053e5761018c565b80636ffac08c146103d857806370a082311461040157806378109e541461043e5780637cca52fe146104695780637d1db4a514610494578063893d20e8146104bf5761018c565b8063293230b81161013e5780633f4218e0116101185780633f4218e01461033257806348ff2b8b1461036f57806351bc3c851461039857806362ab2609146103af5761018c565b8063293230b8146102b35780632f54bf6e146102ca578063313ce567146103075761018c565b806306fdde0314610191578063095ea7b3146101bc5780630a2becf0146101f957806318160ddd14610222578063229b6a5e1461024d57806323b872dd146102765761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b39190612a73565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612b33565b610672565b6040516101f09190612b8e565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612ba9565b610689565b005b34801561022e57600080fd5b506102376108a1565b6040516102449190612c0b565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612cb7565b6108e2565b005b34801561028257600080fd5b5061029d60048036038101906102989190612d17565b6109cf565b6040516102aa9190612b8e565b60405180910390f35b3480156102bf57600080fd5b506102c8610a9a565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190612d6a565b610aff565b6040516102fe9190612b8e565b60405180910390f35b34801561031357600080fd5b5061031c610b58565b6040516103299190612db3565b60405180910390f35b34801561033e57600080fd5b5061035960048036038101906103549190612d6a565b610b61565b6040516103669190612b8e565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612dce565b610b81565b005b3480156103a457600080fd5b506103ad610c24565b005b3480156103bb57600080fd5b506103d660048036038101906103d19190612e0e565b610c95565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612e61565b610d49565b005b34801561040d57600080fd5b5061042860048036038101906104239190612d6a565b610e6b565b6040516104359190612c0b565b60405180910390f35b34801561044a57600080fd5b50610453610eb4565b6040516104609190612c0b565b60405180910390f35b34801561047557600080fd5b5061047e610eba565b60405161048b9190612c0b565b60405180910390f35b3480156104a057600080fd5b506104a9610ec0565b6040516104b69190612c0b565b60405180910390f35b3480156104cb57600080fd5b506104d4610ec6565b6040516104e19190612f12565b60405180910390f35b3480156104f657600080fd5b50610511600480360381019061050c9190612b33565b610eef565b005b34801561051f57600080fd5b50610528611080565b6040516105359190612a73565b60405180910390f35b34801561054a57600080fd5b506105536110bd565b6040516105609190612f12565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190612b33565b6110e3565b60405161059d9190612b8e565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612e0e565b6110fa565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612f2d565b611275565b6040516106039190612c0b565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e9190612fab565b6112fc565b005b60606040518060400160405280600981526020017f44657874656e736f720000000000000000000000000000000000000000000000815250905090565b600061067f3384846113be565b6001905092915050565b61069233610aff565b6106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890613024565b60405180910390fd5b82601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60006108dd6108b06000610e6b565b6108cf6108be61dead610e6b565b60055461158790919063ffffffff16565b61158790919063ffffffff16565b905090565b6108eb33610aff565b61092a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092190613024565b60405180910390fd5b60005b838390508110156109c95781600460008686858181106109505761094f613044565b5b90506020020160208101906109659190612d6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109c1906130a2565b91505061092d565b50505050565b60006109dc84848461159d565b610a8f8433610a8a85604051806060016040528060298152602001613a6460299139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e679092919063ffffffff16565b6113be565b600190509392505050565b610aa333610aff565b610ae2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad990613024565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60036020528060005260406000206000915054906101000a900460ff1681565b610b8a33610aff565b610bc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc090613024565b60405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610c2d33610aff565b610c6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6390613024565b60405180910390fd5b6000610c7730610e6b565b9050600b54811115610c8957600b5490505b610c9281611ebc565b50565b610c9e33610aff565b610cdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd490613024565b60405180910390fd5b82600a81905550610d0e620186a0610d008460055461212990919063ffffffff16565b61213f90919063ffffffff16565b600b81905550610d3e620186a0610d308360055461212990919063ffffffff16565b61213f90919063ffffffff16565b600c81905550505050565b610d5233610aff565b610d91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8890613024565b60405180910390fd5b86601081905550856011819055508460138190555083601281905550826014819055508160158190555080601681905550610dd8600160175461213f90919063ffffffff16565b60145411158015610e005750610dfa600160175461213f90919063ffffffff16565b60155411155b8015610e235750610e1d600160175461213f90919063ffffffff16565b60165411155b610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990613110565b60405180910390fd5b50505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600f5481565b600e5481565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef833610aff565b610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90613024565b60405180910390fd5b6000610fd86064610fca848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f7b9190612f12565b602060405180830381865afa158015610f98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fbc9190613145565b61212990919063ffffffff16565b61213f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611037929190613172565b6020604051808303816000875af1158015611056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061107a91906131b0565b50505050565b60606040518060400160405280600481526020017f54414f5300000000000000000000000000000000000000000000000000000000815250905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006110f033848461159d565b6001905092915050565b61110333610aff565b611142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161113990613024565b60405180910390fd5b600061116d61271061115f8660055461212990919063ffffffff16565b61213f90919063ffffffff16565b9050600061119a61271061118c8660055461212990919063ffffffff16565b61213f90919063ffffffff16565b905060006111c76127106111b98660055461212990919063ffffffff16565b61213f90919063ffffffff16565b905082600d8190555081600e8190555080600f81905550600061120f6103e861120160056111f36108a1565b61212990919063ffffffff16565b61213f90919063ffffffff16565b90508084101580156112215750808310155b801561122d5750808210155b61126c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126390613229565b60405180910390fd5b50505050505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61130533610aff565b611344576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133b90613024565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516113b391906132a8565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361142d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142490613335565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361149c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611493906133c7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161157a9190612c0b565b60405180910390a3505050565b6000818361159591906133e7565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361160c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116039061348d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361167b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116729061351f565b60405180910390fd5b61168483610e6b565b8111156116c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bd906135b1565b60405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561176a5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156117bf57600760149054906101000a900460ff166117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b59061361d565b60405180910390fd5b5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118635750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118bd5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118f7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561199357600f5461195182600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215590919063ffffffff16565b1115611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613689565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ad657600e5481111580611a425750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a965750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906136f5565b60405180910390fd5b5b600d5481111580611b305750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b845750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba906136f5565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c6a5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c8a57600160086000828254611c829190613715565b925050819055505b611c9583838361216b565b15611cae57611ca5600b54611ebc565b60006008819055505b611d0081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461158790919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d4f84846122a5565b611d595781611d65565b611d64848484612353565b5b9050611db981600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e599190612c0b565b60405180910390a350505050565b6000838311158290611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea69190612a73565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611f2a6002611f1c601254611f0e601154611f00600160105461215590919063ffffffff16565b61215590919063ffffffff16565b61215590919063ffffffff16565b61212990919063ffffffff16565b90506000611f5582611f476010548661212990919063ffffffff16565b61213f90919063ffffffff16565b90506000611f6c828561158790919063ffffffff16565b90506000479050611f7c82612511565b6000611f91824761158790919063ffffffff16565b90506000611fbc611fad6010548861158790919063ffffffff16565b8361213f90919063ffffffff16565b90506000611fd56010548361212990919063ffffffff16565b90506000811115611feb57611fea8682612754565b5b600061201560115461200760028661212990919063ffffffff16565b61212990919063ffffffff16565b9050600081111561208a57601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612088573d6000803e3d6000fd5b505b6000479050600081111561210257601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612100573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b600081836121379190613749565b905092915050565b6000818361214d91906137ba565b905092915050565b600081836121639190613715565b905092915050565b600080600c5483101590506000600b5461218430610e6b565b10159050600960009054906101000a900460ff161580156121b15750600760159054906101000a900460ff165b80156121c95750600760149054906101000a900460ff165b80156121d25750815b80156122285750600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122815750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156122915750600a5460085410155b801561229a5750805b925050509392505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561234b5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806123608585612854565b11156125065760006123986123758686612854565b61238a6017548661213f90919063ffffffff16565b61212990919063ffffffff16565b90506123ec81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461215590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161248c9190612c0b565b60405180910390a360006013541180156124b057506013546124ae8686612854565b115b156124eb576124ea3061dead6124e56013546124d76017548961213f90919063ffffffff16565b61212990919063ffffffff16565b61159d565b5b6124fe818461158790919063ffffffff16565b91505061250a565b8190505b9392505050565b6000600267ffffffffffffffff81111561252e5761252d6137eb565b5b60405190808252806020026020018201604052801561255c5781602001602082028036833780820191505090505b509050308160008151811061257457612573613044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561261b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263f919061382f565b8160018151811061265357612652613044565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506126ba30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113be565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161271e959493929190613955565b600060405180830381600087803b15801561273857600080fd5b505af115801561274c573d6000803e3d6000fd5b505050505050565b61278130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113be565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161280a969594939291906139af565b60606040518083038185885af1158015612828573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061284d9190613a10565b5050505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128f75750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561291957612912606460175461158790919063ffffffff16565b90506129dd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036129785760155490506129dd565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129d75760145490506129dd565b60165490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a1d578082015181840152602081019050612a02565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a45826129e3565b612a4f81856129ee565b9350612a5f8185602086016129ff565b612a6881612a29565b840191505092915050565b60006020820190508181036000830152612a8d8184612a3a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612aca82612a9f565b9050919050565b612ada81612abf565b8114612ae557600080fd5b50565b600081359050612af781612ad1565b92915050565b6000819050919050565b612b1081612afd565b8114612b1b57600080fd5b50565b600081359050612b2d81612b07565b92915050565b60008060408385031215612b4a57612b49612a95565b5b6000612b5885828601612ae8565b9250506020612b6985828601612b1e565b9150509250929050565b60008115159050919050565b612b8881612b73565b82525050565b6000602082019050612ba36000830184612b7f565b92915050565b600080600060608486031215612bc257612bc1612a95565b5b6000612bd086828701612ae8565b9350506020612be186828701612ae8565b9250506040612bf286828701612ae8565b9150509250925092565b612c0581612afd565b82525050565b6000602082019050612c206000830184612bfc565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612c4b57612c4a612c26565b5b8235905067ffffffffffffffff811115612c6857612c67612c2b565b5b602083019150836020820283011115612c8457612c83612c30565b5b9250929050565b612c9481612b73565b8114612c9f57600080fd5b50565b600081359050612cb181612c8b565b92915050565b600080600060408486031215612cd057612ccf612a95565b5b600084013567ffffffffffffffff811115612cee57612ced612a9a565b5b612cfa86828701612c35565b93509350506020612d0d86828701612ca2565b9150509250925092565b600080600060608486031215612d3057612d2f612a95565b5b6000612d3e86828701612ae8565b9350506020612d4f86828701612ae8565b9250506040612d6086828701612b1e565b9150509250925092565b600060208284031215612d8057612d7f612a95565b5b6000612d8e84828501612ae8565b91505092915050565b600060ff82169050919050565b612dad81612d97565b82525050565b6000602082019050612dc86000830184612da4565b92915050565b60008060408385031215612de557612de4612a95565b5b6000612df385828601612ae8565b9250506020612e0485828601612ca2565b9150509250929050565b600080600060608486031215612e2757612e26612a95565b5b6000612e3586828701612b1e565b9350506020612e4686828701612b1e565b9250506040612e5786828701612b1e565b9150509250925092565b600080600080600080600060e0888a031215612e8057612e7f612a95565b5b6000612e8e8a828b01612b1e565b9750506020612e9f8a828b01612b1e565b9650506040612eb08a828b01612b1e565b9550506060612ec18a828b01612b1e565b9450506080612ed28a828b01612b1e565b93505060a0612ee38a828b01612b1e565b92505060c0612ef48a828b01612b1e565b91505092959891949750929550565b612f0c81612abf565b82525050565b6000602082019050612f276000830184612f03565b92915050565b60008060408385031215612f4457612f43612a95565b5b6000612f5285828601612ae8565b9250506020612f6385828601612ae8565b9150509250929050565b6000612f7882612a9f565b9050919050565b612f8881612f6d565b8114612f9357600080fd5b50565b600081359050612fa581612f7f565b92915050565b600060208284031215612fc157612fc0612a95565b5b6000612fcf84828501612f96565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061300e6006836129ee565b915061301982612fd8565b602082019050919050565b6000602082019050818103600083015261303d81613001565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130ad82612afd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130df576130de613073565b5b600182019050919050565b50565b60006130fa6000836129ee565b9150613105826130ea565b600082019050919050565b60006020820190508181036000830152613129816130ed565b9050919050565b60008151905061313f81612b07565b92915050565b60006020828403121561315b5761315a612a95565b5b600061316984828501613130565b91505092915050565b60006040820190506131876000830185612f03565b6131946020830184612bfc565b9392505050565b6000815190506131aa81612c8b565b92915050565b6000602082840312156131c6576131c5612a95565b5b60006131d48482850161319b565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c657400000000000000000000600082015250565b60006132136016836129ee565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b6000819050919050565b600061326e61326961326484612a9f565b613249565b612a9f565b9050919050565b600061328082613253565b9050919050565b600061329282613275565b9050919050565b6132a281613287565b82525050565b60006020820190506132bd6000830184613299565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061331f6024836129ee565b915061332a826132c3565b604082019050919050565b6000602082019050818103600083015261334e81613312565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133b16022836129ee565b91506133bc82613355565b604082019050919050565b600060208201905081810360008301526133e0816133a4565b9050919050565b60006133f282612afd565b91506133fd83612afd565b925082820390508181111561341557613414613073565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f64726573732e0000000000000000000000000000000000000000000000000000602082015250565b60006134776026836129ee565b91506134828261341b565b604082019050919050565b600060208201905081810360008301526134a68161346a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573732e00000000000000000000000000000000000000000000000000000000602082015250565b60006135096024836129ee565b9150613514826134ad565b604082019050919050565b60006020820190508181036000830152613538816134fc565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e63652e0000000000000000000000000000602082015250565b600061359b6032836129ee565b91506135a68261353f565b604082019050919050565b600060208201905081810360008301526135ca8161358e565b9050919050565b7f74726164696e67416c6c6f7765642e0000000000000000000000000000000000600082015250565b6000613607600f836129ee565b9150613612826135d1565b602082019050919050565b60006020820190508181036000830152613636816135fa565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613673601e836129ee565b915061367e8261363d565b602082019050919050565b600060208201905081810360008301526136a281613666565b9050919050565b7f5458204c696d69742045786365656465642e0000000000000000000000000000600082015250565b60006136df6012836129ee565b91506136ea826136a9565b602082019050919050565b6000602082019050818103600083015261370e816136d2565b9050919050565b600061372082612afd565b915061372b83612afd565b925082820190508082111561374357613742613073565b5b92915050565b600061375482612afd565b915061375f83612afd565b925082820261376d81612afd565b9150828204841483151761378457613783613073565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006137c582612afd565b91506137d083612afd565b9250826137e0576137df61378b565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061382981612ad1565b92915050565b60006020828403121561384557613844612a95565b5b60006138538482850161381a565b91505092915050565b6000819050919050565b600061388161387c6138778461385c565b613249565b612afd565b9050919050565b61389181613866565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138cc81612abf565b82525050565b60006138de83836138c3565b60208301905092915050565b6000602082019050919050565b600061390282613897565b61390c81856138a2565b9350613917836138b3565b8060005b8381101561394857815161392f88826138d2565b975061393a836138ea565b92505060018101905061391b565b5085935050505092915050565b600060a08201905061396a6000830188612bfc565b6139776020830187613888565b818103604083015261398981866138f7565b90506139986060830185612f03565b6139a56080830184612bfc565b9695505050505050565b600060c0820190506139c46000830189612f03565b6139d16020830188612bfc565b6139de6040830187613888565b6139eb6060830186613888565b6139f86080830185612f03565b613a0560a0830184612bfc565b979650505050505050565b600080600060608486031215613a2957613a28612a95565b5b6000613a3786828701613130565b9350506020613a4886828701613130565b9250506040613a5986828701613130565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63652ea2646970667358221220143be01274cf070f405374c448c2a4ba3a4fd9c5411f1567e38b5b32f1dc271564736f6c63430008130033

Deployed Bytecode Sourcemap

4796:11391:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7245:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8126:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10343:337;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8265:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10151:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15531:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7468:67;;;;;;;;;;;;;:::i;:::-;;3700:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7395:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4990:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8012:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10688:195;;;;;;;;;;;;;:::i;:::-;;8816:320;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9144:465;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7625:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5799:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5730:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5663:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7541:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10891:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7318:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5327:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7734:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9617:526;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7879:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3793:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7245:67;7282:13;7305:5;;;;;;;;;;;;;;;;;7298:12;;7245:67;:::o;8126:133::-;8201:4;8208:37;8217:10;8229:7;8238:6;8208:8;:37::i;:::-;8253:4;8246:11;;8126:133;;;;:::o;10343:337::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10485:10:::1;10464:18;;:31;;;;;;;;;;;;;;;;;;10518:10;10497:18;;:31;;;;;;;;;;;;;;;;;;10553:12;10530:20;;:35;;;;;;;;;;;;;;;;;;10602:4;10576:11;:23;10588:10;10576:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10634:4;10608:11;:23;10620:10;10608:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10668:4;10640:11;:25;10652:12;10640:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10343:337:::0;;;:::o;8265:132::-;8318:7;8335:60;8373:21;8391:1;8373:9;:21::i;:::-;8335:33;8352:15;6372:42;8352:9;:15::i;:::-;8335:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8328:67;;8265:132;:::o;10151:184::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10248:6:::1;10244:84;10262:9;;:16;;10258:1;:20;10244:84;;;10317:8;10295:5;:19;10301:9;;10311:1;10301:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10295:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10280:3;;;;;:::i;:::-;;;;10244:84;;;;10151:184:::0;;;:::o;15531:310::-;15629:4;15646:36;15656:6;15664:9;15675:6;15646:9;:36::i;:::-;15693:118;15702:6;15710:10;15722:88;15758:6;15722:88;;;;;;;;;;;;;;;;;:11;:19;15734:6;15722:19;;;;;;;;;;;;;;;:31;15742:10;15722:31;;;;;;;;;;;;;;;;:35;;:88;;;;;:::i;:::-;15693:8;:118::i;:::-;15829:4;15822:11;;15531:310;;;;;:::o;7468:67::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7529:4:::1;7512:14;;:21;;;;;;;;;;;;;;;;;;7468:67::o:0;3700:87::-;3755:4;3780:5;;;;;;;;;;;3769:16;;:7;:16;;;3762:23;;3700:87;;;:::o;7395:67::-;7436:5;5233:1;7444:16;;7395:67;:::o;4990:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8012:108::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8110:8:::1;8086:11;:21;8098:8;8086:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8012:108:::0;;:::o;10688:195::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10740:14:::1;10757:24;10775:4;10757:9;:24::i;:::-;10740:41;;10804:13;;10795:6;:22;10792:51;;;10828:13;;10819:22;;10792:51;10853:22;10868:6;10853:14;:22::i;:::-;10729:154;10688:195::o:0;8816:320::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8963:11:::1;8950:10;:24;;;;8992:53;9037:6;8992:32;9009:14;8992:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8976:13;:69;;;;9074:54;9120:6;9074:33;9091:15;9074:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;9057:14;:71;;;;8816:320:::0;;;:::o;9144:465::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9334:10:::1;9319:12;:25;;;;9361:10;9346:12;:25;;;;9383:5;9373:7;:15;;;;9407:12;9390:14;:29;;;;9432:6;9421:8;:17;;;;9450:5;9440:7;:15;;;;9471:6;9457:11;:20;;;;9508:18;9524:1;9508:11;;:15;;:18;;;;:::i;:::-;9496:8;;:30;;:63;;;;;9541:18;9557:1;9541:11;;:15;;:18;;;;:::i;:::-;9530:7;;:29;;9496:63;:100;;;;;9578:18;9594:1;9578:11;;:15;;:18;;;;:::i;:::-;9563:11;;:33;;9496:100;9488:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;9144:465:::0;;;;;;;:::o;7625:103::-;7691:7;7708:9;:18;7718:7;7708:18;;;;;;;;;;;;;;;;7701:25;;7625:103;;;:::o;5799:63::-;;;;:::o;5730:62::-;;;;:::o;5663:60::-;;;;:::o;7541:78::-;7593:7;7611:5;;;;;;;;;;;7604:12;;7541:78;:::o;10891:242::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10977:15:::1;10995:63;11054:3;10995:54;11041:7;11002:8;10995:26;;;11030:4;10995:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10977:81;;11076:8;11069:25;;;11095:20;;;;;;;;;;;11117:7;11069:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10966:167;10891:242:::0;;:::o;7318:71::-;7357:13;7380:7;;;;;;;;;;;;;;;;;7373:14;;7318:71;:::o;5327:19::-;;;;;;;;;;;;;:::o;7734:139::-;7812:4;7819:40;7829:10;7841:9;7852:6;7819:9;:40::i;:::-;7867:4;7860:11;;7734:139;;;;:::o;9617:526::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9717:13:::1;9733:33;9760:5;9733:22;9750:4;9733:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9717:49;;9768:19;9790:34;9818:5;9790:23;9807:5;9790:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9768:56;;9826:17;9846:36;9876:5;9846:25;9863:7;9846:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9826:56;;9908:5;9893:12;:20;;;;9932:11;9915:14;:28;;;;9963:9;9945:15;:27;;;;9983:13;9999:30;10024:4;9999:20;10017:1;9999:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;9983:46;;10057:5;10048;:14;;:38;;;;;10081:5;10066:11;:20;;10048:38;:60;;;;;10103:5;10090:9;:18;;10048:60;10040:95;;;;;;;;;;;;:::i;:::-;;;;;;;;;9706:437;;;;9617:526:::0;;;:::o;7879:127::-;7960:7;7977:11;:18;7989:5;7977:18;;;;;;;;;;;;;;;:27;7996:7;7977:27;;;;;;;;;;;;;;;;7970:34;;7879:127;;;;:::o;3793:111::-;3659:19;3667:10;3659:7;:19::i;:::-;3651:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3867:3:::1;3859:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3877:25;3898:3;3877:25;;;;;;:::i;:::-;;;;;;;;3793:111:::0;:::o;15849:335::-;15959:1;15942:19;;:5;:19;;;15934:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16040:1;16021:21;;:7;:21;;;16013:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16122:6;16092:11;:18;16104:5;16092:18;;;;;;;;;;;;;;;:27;16111:7;16092:27;;;;;;;;;;;;;;;:36;;;;16160:7;16144:32;;16153:5;16144:32;;;16169:6;16144:32;;;;;;:::i;:::-;;;;;;;;15849:335;;;:::o;1439:98::-;1497:7;1528:1;1524;:5;;;;:::i;:::-;1517:12;;1439:98;;;;:::o;14084:1439::-;14199:1;14181:20;;:6;:20;;;14173:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14284:1;14263:23;;:9;:23;;;14255:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;14356:17;14366:6;14356:9;:17::i;:::-;14346:6;:27;;14338:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;14442:11;:19;14454:6;14442:19;;;;;;;;;;;;;;;;;;;;;;;;;14441:20;:47;;;;;14466:11;:22;14478:9;14466:22;;;;;;;;;;;;;;;;;;;;;;;;;14465:23;14441:47;14438:96;;;14498:14;;;;;;;;;;;14490:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14438:96;14548:11;:19;14560:6;14548:19;;;;;;;;;;;;;;;;;;;;;;;;;14547:20;:47;;;;;14572:11;:22;14584:9;14572:22;;;;;;;;;;;;;;;;;;;;;;;;;14571:23;14547:47;:77;;;;;14619:4;;;;;;;;;;;14598:26;;:9;:26;;;;14547:77;:107;;;;;6372:42;14628:26;;:9;:26;;;;14547:107;14544:220;;;14712:15;;14675:32;14700:6;14675:9;:20;14685:9;14675:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14674:53;;14666:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14544:220;14787:4;;;;;;;;;;;14777:14;;:6;:14;;;14774:125;;14811:14;;14801:6;:24;;:47;;;;14829:11;:19;14841:6;14829:19;;;;;;;;;;;;;;;;;;;;;;;;;14801:47;:73;;;;14852:11;:22;14864:9;14852:22;;;;;;;;;;;;;;;;;;;;;;;;;14801:73;14793:104;;;;;;;;;;;;:::i;:::-;;;;;;;;;14774:125;14927:12;;14917:6;:22;;:45;;;;14943:11;:19;14955:6;14943:19;;;;;;;;;;;;;;;;;;;;;;;;;14917:45;:71;;;;14966:11;:22;14978:9;14966:22;;;;;;;;;;;;;;;;;;;;;;;;;14917:71;14909:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;15039:4;;;;;;;;;;;15026:17;;:9;:17;;;:41;;;;;15048:11;:19;15060:6;15048:19;;;;;;;;;;;;;;;;;;;;;;;;;15047:20;15026:41;15023:71;;;15090:1;15069:9;;:23;;;;;;;:::i;:::-;;;;;;;;15023:71;15107:45;15126:6;15134:9;15145:6;15107:18;:45::i;:::-;15104:105;;;15154:29;15169:13;;15154:14;:29::i;:::-;15205:1;15185:9;:22;;;;15104:105;15239:29;15261:6;15239:9;:17;15249:6;15239:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;15219:9;:17;15229:6;15219:17;;;;;;;;;;;;;;;:49;;;;15279:22;15304:32;15318:6;15326:9;15304:13;:32::i;:::-;:78;;15376:6;15304:78;;;15339:34;15347:6;15355:9;15366:6;15339:7;:34::i;:::-;15304:78;15279:103;;15416:40;15441:14;15416:9;:20;15426:9;15416:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15393:9;:20;15403:9;15393:20;;;;;;;;;;;;;;;:63;;;;15489:9;15472:43;;15481:6;15472:43;;;15500:14;15472:43;;;;;;:::i;:::-;;;;;;;;14162:1361;14084:1439;;;:::o;1863:240::-;1983:7;2041:1;2036;:6;;2044:12;2028:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2083:1;2079;:5;2072:12;;1863:240;;;;;:::o;11141:1063::-;5902:4;5891:8;;:15;;;;;;;;;;;;;;;;;;11212:20:::1;11235:66;11299:1;11236:57;11278:14;;11236:37;11260:12;;11236:19;11253:1;11236:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;11235:63;;:66;;;;:::i;:::-;11212:89;;11312:32;11347:42;11376:12;11347:24;11358:12;;11347:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;11312:77;;11400:14;11417:36;11428:24;11417:6;:10;;:36;;;;:::i;:::-;11400:53;;11464:22;11489:21;11464:46;;11521:24;11538:6;11521:16;:24::i;:::-;11556:20;11579:41;11605:14;11579:21;:25;;:41;;;;:::i;:::-;11556:64;;11631:19;11652:48;11669:30;11686:12;;11669;:16;;:30;;;;:::i;:::-;11652:12;:16;;:48;;;;:::i;:::-;11631:69;;11711:29;11743;11759:12;;11743:11;:15;;:29;;;;:::i;:::-;11711:61;;11818:1;11786:21;:34;11783:103;;;11822:61;11835:24;11861:21;11822:12;:61::i;:::-;11783:103;11896:20;11919:36;11942:12;;11919:18;11935:1;11919:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11896:59;;11984:1;11969:12;:16;11966:73;;;11995:18;;;;;;;;;;;11987:36;;:50;12024:12;11987:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11966:73;12049:23;12075:21;12049:47;;12136:1;12110:15;:28;12107:90;;;12148:20;;;;;;;;;;;12140:38;;:55;12179:15;12140:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12107:90;11201:1003;;;;;;;;;5922:5:::0;5911:8;;:16;;;;;;;;;;;;;;;;;;11141:1063;:::o;1545:98::-;1603:7;1634:1;1630;:5;;;;:::i;:::-;1623:12;;1545:98;;;;:::o;1651:::-;1709:7;1740:1;1736;:5;;;;:::i;:::-;1729:12;;1651:98;;;;:::o;1333:::-;1391:7;1422:1;1418;:5;;;;:::i;:::-;1411:12;;1333:98;;;;:::o;8405:403::-;8507:4;8524:13;8550:14;;8540:6;:24;;8524:40;;8575:19;8625:13;;8597:24;8615:4;8597:9;:24::i;:::-;:41;;8575:63;;8657:8;;;;;;;;;;;8656:9;:24;;;;;8669:11;;;;;;;;;;;8656:24;:42;;;;;8684:14;;;;;;;;;;;8656:42;:54;;;;;8702:8;8656:54;:78;;;;;8715:11;:19;8727:6;8715:19;;;;;;;;;;;;;;;;;;;;;;;;;8714:20;8656:78;:99;;;;;8751:4;;;;;;;;;;;8738:17;;:9;:17;;;8656:99;:126;;;;;8772:10;;8759:9;;:23;;8656:126;:144;;;;;8786:14;8656:144;8649:151;;;;8405:403;;;;;:::o;13005:160::-;13086:4;13111:11;:19;13123:6;13111:19;;;;;;;;;;;;;;;;;;;;;;;;;13110:20;:47;;;;;13135:11;:22;13147:9;13135:22;;;;;;;;;;;;;;;;;;;;;;;;;13134:23;13110:47;13103:54;;13005:160;;;;:::o;13486:590::-;13572:7;13628:1;13595:30;13607:6;13615:9;13595:11;:30::i;:::-;:34;13592:462;;;13641:17;13661:59;13689:30;13701:6;13709:9;13689:11;:30::i;:::-;13661:23;13672:11;;13661:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13641:79;;13758:39;13787:9;13758;:24;13776:4;13758:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13731:9;:24;13749:4;13731:24;;;;;;;;;;;;;;;:66;;;;13838:4;13813:42;;13822:6;13813:42;;;13845:9;13813:42;;;;;;:::i;:::-;;;;;;;;13887:1;13869:7;;:20;:64;;;;;13926:7;;13893:30;13905:6;13913:9;13893:11;:30::i;:::-;:40;13869:64;13866:148;;;13935:77;13953:4;6372:42;13975:36;14003:7;;13975:23;13986:11;;13975:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13935:9;:77::i;:::-;13866:148;14031:21;14042:9;14031:6;:10;;:21;;;;:::i;:::-;14024:28;;;;;13592:462;14062:6;14055:13;;13486:590;;;;;;:::o;12563:434::-;12629:21;12667:1;12653:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12629:40;;12698:4;12680;12685:1;12680:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12724:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12714:4;12719:1;12714:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12748:53;12765:4;12780:6;;;;;;;;;;;12789:11;12748:8;:53::i;:::-;12812:6;;;;;;;;;;;:57;;;12884:11;12910:1;12926:4;12953;12973:15;12812:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12618:379;12563:434;:::o;12212:343::-;12293:53;12310:4;12325:6;;;;;;;;;;;12334:11;12293:8;:53::i;:::-;12357:6;;;;;;;;;;;:22;;;12387:9;12420:4;12440:11;12466:1;12482;12498:18;;;;;;;;;;;12531:15;12357:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12212:343;;:::o;13173:305::-;13252:7;13275:5;:13;13281:6;13275:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;13292:5;:16;13298:9;13292:16;;;;;;;;;;;;;;;;;;;;;;;;;13275:33;13272:76;;;13317:29;13341:3;13317:11;;:15;;:29;;;;:::i;:::-;13310:36;;;;13272:76;13374:4;;;;;;;;;;;13361:17;;:9;:17;;;13358:38;;13387:7;;13380:14;;;;13358:38;13419:4;;;;;;;;;;;13409:14;;:6;:14;;;13406:36;;13432:8;;13425:15;;;;13406:36;13459:11;;13452:18;;13173:305;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:619::-;3523:6;3531;3539;3588:2;3576:9;3567:7;3563:23;3559:32;3556:119;;;3594:79;;:::i;:::-;3556:119;3714:1;3739:53;3784:7;3775:6;3764:9;3760:22;3739:53;:::i;:::-;3729:63;;3685:117;3841:2;3867:53;3912:7;3903:6;3892:9;3888:22;3867:53;:::i;:::-;3857:63;;3812:118;3969:2;3995:53;4040:7;4031:6;4020:9;4016:22;3995:53;:::i;:::-;3985:63;;3940:118;3446:619;;;;;:::o;4071:118::-;4158:24;4176:5;4158:24;:::i;:::-;4153:3;4146:37;4071:118;;:::o;4195:222::-;4288:4;4326:2;4315:9;4311:18;4303:26;;4339:71;4407:1;4396:9;4392:17;4383:6;4339:71;:::i;:::-;4195:222;;;;:::o;4423:117::-;4532:1;4529;4522:12;4546:117;4655:1;4652;4645:12;4669:117;4778:1;4775;4768:12;4809:568;4882:8;4892:6;4942:3;4935:4;4927:6;4923:17;4919:27;4909:122;;4950:79;;:::i;:::-;4909:122;5063:6;5050:20;5040:30;;5093:18;5085:6;5082:30;5079:117;;;5115:79;;:::i;:::-;5079:117;5229:4;5221:6;5217:17;5205:29;;5283:3;5275:4;5267:6;5263:17;5253:8;5249:32;5246:41;5243:128;;;5290:79;;:::i;:::-;5243:128;4809:568;;;;;:::o;5383:116::-;5453:21;5468:5;5453:21;:::i;:::-;5446:5;5443:32;5433:60;;5489:1;5486;5479:12;5433:60;5383:116;:::o;5505:133::-;5548:5;5586:6;5573:20;5564:29;;5602:30;5626:5;5602:30;:::i;:::-;5505:133;;;;:::o;5644:698::-;5736:6;5744;5752;5801:2;5789:9;5780:7;5776:23;5772:32;5769:119;;;5807:79;;:::i;:::-;5769:119;5955:1;5944:9;5940:17;5927:31;5985:18;5977:6;5974:30;5971:117;;;6007:79;;:::i;:::-;5971:117;6120:80;6192:7;6183:6;6172:9;6168:22;6120:80;:::i;:::-;6102:98;;;;5898:312;6249:2;6275:50;6317:7;6308:6;6297:9;6293:22;6275:50;:::i;:::-;6265:60;;6220:115;5644:698;;;;;:::o;6348:619::-;6425:6;6433;6441;6490:2;6478:9;6469:7;6465:23;6461:32;6458:119;;;6496:79;;:::i;:::-;6458:119;6616:1;6641:53;6686:7;6677:6;6666:9;6662:22;6641:53;:::i;:::-;6631:63;;6587:117;6743:2;6769:53;6814:7;6805:6;6794:9;6790:22;6769:53;:::i;:::-;6759:63;;6714:118;6871:2;6897:53;6942:7;6933:6;6922:9;6918:22;6897:53;:::i;:::-;6887:63;;6842:118;6348:619;;;;;:::o;6973:329::-;7032:6;7081:2;7069:9;7060:7;7056:23;7052:32;7049:119;;;7087:79;;:::i;:::-;7049:119;7207:1;7232:53;7277:7;7268:6;7257:9;7253:22;7232:53;:::i;:::-;7222:63;;7178:117;6973:329;;;;:::o;7308:86::-;7343:7;7383:4;7376:5;7372:16;7361:27;;7308:86;;;:::o;7400:112::-;7483:22;7499:5;7483:22;:::i;:::-;7478:3;7471:35;7400:112;;:::o;7518:214::-;7607:4;7645:2;7634:9;7630:18;7622:26;;7658:67;7722:1;7711:9;7707:17;7698:6;7658:67;:::i;:::-;7518:214;;;;:::o;7738:468::-;7803:6;7811;7860:2;7848:9;7839:7;7835:23;7831:32;7828:119;;;7866:79;;:::i;:::-;7828:119;7986:1;8011:53;8056:7;8047:6;8036:9;8032:22;8011:53;:::i;:::-;8001:63;;7957:117;8113:2;8139:50;8181:7;8172:6;8161:9;8157:22;8139:50;:::i;:::-;8129:60;;8084:115;7738:468;;;;;:::o;8212:619::-;8289:6;8297;8305;8354:2;8342:9;8333:7;8329:23;8325:32;8322:119;;;8360:79;;:::i;:::-;8322:119;8480:1;8505:53;8550:7;8541:6;8530:9;8526:22;8505:53;:::i;:::-;8495:63;;8451:117;8607:2;8633:53;8678:7;8669:6;8658:9;8654:22;8633:53;:::i;:::-;8623:63;;8578:118;8735:2;8761:53;8806:7;8797:6;8786:9;8782:22;8761:53;:::i;:::-;8751:63;;8706:118;8212:619;;;;;:::o;8837:1203::-;8950:6;8958;8966;8974;8982;8990;8998;9047:3;9035:9;9026:7;9022:23;9018:33;9015:120;;;9054:79;;:::i;:::-;9015:120;9174:1;9199:53;9244:7;9235:6;9224:9;9220:22;9199:53;:::i;:::-;9189:63;;9145:117;9301:2;9327:53;9372:7;9363:6;9352:9;9348:22;9327:53;:::i;:::-;9317:63;;9272:118;9429:2;9455:53;9500:7;9491:6;9480:9;9476:22;9455:53;:::i;:::-;9445:63;;9400:118;9557:2;9583:53;9628:7;9619:6;9608:9;9604:22;9583:53;:::i;:::-;9573:63;;9528:118;9685:3;9712:53;9757:7;9748:6;9737:9;9733:22;9712:53;:::i;:::-;9702:63;;9656:119;9814:3;9841:53;9886:7;9877:6;9866:9;9862:22;9841:53;:::i;:::-;9831:63;;9785:119;9943:3;9970:53;10015:7;10006:6;9995:9;9991:22;9970:53;:::i;:::-;9960:63;;9914:119;8837:1203;;;;;;;;;;:::o;10046:118::-;10133:24;10151:5;10133:24;:::i;:::-;10128:3;10121:37;10046:118;;:::o;10170:222::-;10263:4;10301:2;10290:9;10286:18;10278:26;;10314:71;10382:1;10371:9;10367:17;10358:6;10314:71;:::i;:::-;10170:222;;;;:::o;10398:474::-;10466:6;10474;10523:2;10511:9;10502:7;10498:23;10494:32;10491:119;;;10529:79;;:::i;:::-;10491:119;10649:1;10674:53;10719:7;10710:6;10699:9;10695:22;10674:53;:::i;:::-;10664:63;;10620:117;10776:2;10802:53;10847:7;10838:6;10827:9;10823:22;10802:53;:::i;:::-;10792:63;;10747:118;10398:474;;;;;:::o;10878:104::-;10923:7;10952:24;10970:5;10952:24;:::i;:::-;10941:35;;10878:104;;;:::o;10988:138::-;11069:32;11095:5;11069:32;:::i;:::-;11062:5;11059:43;11049:71;;11116:1;11113;11106:12;11049:71;10988:138;:::o;11132:155::-;11186:5;11224:6;11211:20;11202:29;;11240:41;11275:5;11240:41;:::i;:::-;11132:155;;;;:::o;11293:345::-;11360:6;11409:2;11397:9;11388:7;11384:23;11380:32;11377:119;;;11415:79;;:::i;:::-;11377:119;11535:1;11560:61;11613:7;11604:6;11593:9;11589:22;11560:61;:::i;:::-;11550:71;;11506:125;11293:345;;;;:::o;11644:156::-;11784:8;11780:1;11772:6;11768:14;11761:32;11644:156;:::o;11806:365::-;11948:3;11969:66;12033:1;12028:3;11969:66;:::i;:::-;11962:73;;12044:93;12133:3;12044:93;:::i;:::-;12162:2;12157:3;12153:12;12146:19;;11806:365;;;:::o;12177:419::-;12343:4;12381:2;12370:9;12366:18;12358:26;;12430:9;12424:4;12420:20;12416:1;12405:9;12401:17;12394:47;12458:131;12584:4;12458:131;:::i;:::-;12450:139;;12177:419;;;:::o;12602:180::-;12650:77;12647:1;12640:88;12747:4;12744:1;12737:15;12771:4;12768:1;12761:15;12788:180;12836:77;12833:1;12826:88;12933:4;12930:1;12923:15;12957:4;12954:1;12947:15;12974:233;13013:3;13036:24;13054:5;13036:24;:::i;:::-;13027:33;;13082:66;13075:5;13072:77;13069:103;;13152:18;;:::i;:::-;13069:103;13199:1;13192:5;13188:13;13181:20;;12974:233;;;:::o;13213:114::-;;:::o;13333:364::-;13475:3;13496:66;13560:1;13555:3;13496:66;:::i;:::-;13489:73;;13571:93;13660:3;13571:93;:::i;:::-;13689:1;13684:3;13680:11;13673:18;;13333:364;;;:::o;13703:419::-;13869:4;13907:2;13896:9;13892:18;13884:26;;13956:9;13950:4;13946:20;13942:1;13931:9;13927:17;13920:47;13984:131;14110:4;13984:131;:::i;:::-;13976:139;;13703:419;;;:::o;14128:143::-;14185:5;14216:6;14210:13;14201:22;;14232:33;14259:5;14232:33;:::i;:::-;14128:143;;;;:::o;14277:351::-;14347:6;14396:2;14384:9;14375:7;14371:23;14367:32;14364:119;;;14402:79;;:::i;:::-;14364:119;14522:1;14547:64;14603:7;14594:6;14583:9;14579:22;14547:64;:::i;:::-;14537:74;;14493:128;14277:351;;;;:::o;14634:332::-;14755:4;14793:2;14782:9;14778:18;14770:26;;14806:71;14874:1;14863:9;14859:17;14850:6;14806:71;:::i;:::-;14887:72;14955:2;14944:9;14940:18;14931:6;14887:72;:::i;:::-;14634:332;;;;;:::o;14972:137::-;15026:5;15057:6;15051:13;15042:22;;15073:30;15097:5;15073:30;:::i;:::-;14972:137;;;;:::o;15115:345::-;15182:6;15231:2;15219:9;15210:7;15206:23;15202:32;15199:119;;;15237:79;;:::i;:::-;15199:119;15357:1;15382:61;15435:7;15426:6;15415:9;15411:22;15382:61;:::i;:::-;15372:71;;15328:125;15115:345;;;;:::o;15466:172::-;15606:24;15602:1;15594:6;15590:14;15583:48;15466:172;:::o;15644:366::-;15786:3;15807:67;15871:2;15866:3;15807:67;:::i;:::-;15800:74;;15883:93;15972:3;15883:93;:::i;:::-;16001:2;15996:3;15992:12;15985:19;;15644:366;;;:::o;16016:419::-;16182:4;16220:2;16209:9;16205:18;16197:26;;16269:9;16263:4;16259:20;16255:1;16244:9;16240:17;16233:47;16297:131;16423:4;16297:131;:::i;:::-;16289:139;;16016:419;;;:::o;16441:60::-;16469:3;16490:5;16483:12;;16441:60;;;:::o;16507:142::-;16557:9;16590:53;16608:34;16617:24;16635:5;16617:24;:::i;:::-;16608:34;:::i;:::-;16590:53;:::i;:::-;16577:66;;16507:142;;;:::o;16655:126::-;16705:9;16738:37;16769:5;16738:37;:::i;:::-;16725:50;;16655:126;;;:::o;16787:134::-;16845:9;16878:37;16909:5;16878:37;:::i;:::-;16865:50;;16787:134;;;:::o;16927:147::-;17022:45;17061:5;17022:45;:::i;:::-;17017:3;17010:58;16927:147;;:::o;17080:238::-;17181:4;17219:2;17208:9;17204:18;17196:26;;17232:79;17308:1;17297:9;17293:17;17284:6;17232:79;:::i;:::-;17080:238;;;;:::o;17324:223::-;17464:34;17460:1;17452:6;17448:14;17441:58;17533:6;17528:2;17520:6;17516:15;17509:31;17324:223;:::o;17553:366::-;17695:3;17716:67;17780:2;17775:3;17716:67;:::i;:::-;17709:74;;17792:93;17881:3;17792:93;:::i;:::-;17910:2;17905:3;17901:12;17894:19;;17553:366;;;:::o;17925:419::-;18091:4;18129:2;18118:9;18114:18;18106:26;;18178:9;18172:4;18168:20;18164:1;18153:9;18149:17;18142:47;18206:131;18332:4;18206:131;:::i;:::-;18198:139;;17925:419;;;:::o;18350:221::-;18490:34;18486:1;18478:6;18474:14;18467:58;18559:4;18554:2;18546:6;18542:15;18535:29;18350:221;:::o;18577:366::-;18719:3;18740:67;18804:2;18799:3;18740:67;:::i;:::-;18733:74;;18816:93;18905:3;18816:93;:::i;:::-;18934:2;18929:3;18925:12;18918:19;;18577:366;;;:::o;18949:419::-;19115:4;19153:2;19142:9;19138:18;19130:26;;19202:9;19196:4;19192:20;19188:1;19177:9;19173:17;19166:47;19230:131;19356:4;19230:131;:::i;:::-;19222:139;;18949:419;;;:::o;19374:194::-;19414:4;19434:20;19452:1;19434:20;:::i;:::-;19429:25;;19468:20;19486:1;19468:20;:::i;:::-;19463:25;;19512:1;19509;19505:9;19497:17;;19536:1;19530:4;19527:11;19524:37;;;19541:18;;:::i;:::-;19524:37;19374:194;;;;:::o;19574:225::-;19714:34;19710:1;19702:6;19698:14;19691:58;19783:8;19778:2;19770:6;19766:15;19759:33;19574:225;:::o;19805:366::-;19947:3;19968:67;20032:2;20027:3;19968:67;:::i;:::-;19961:74;;20044:93;20133:3;20044:93;:::i;:::-;20162:2;20157:3;20153:12;20146:19;;19805:366;;;:::o;20177:419::-;20343:4;20381:2;20370:9;20366:18;20358:26;;20430:9;20424:4;20420:20;20416:1;20405:9;20401:17;20394:47;20458:131;20584:4;20458:131;:::i;:::-;20450:139;;20177:419;;;:::o;20602:223::-;20742:34;20738:1;20730:6;20726:14;20719:58;20811:6;20806:2;20798:6;20794:15;20787:31;20602:223;:::o;20831:366::-;20973:3;20994:67;21058:2;21053:3;20994:67;:::i;:::-;20987:74;;21070:93;21159:3;21070:93;:::i;:::-;21188:2;21183:3;21179:12;21172:19;;20831:366;;;:::o;21203:419::-;21369:4;21407:2;21396:9;21392:18;21384:26;;21456:9;21450:4;21446:20;21442:1;21431:9;21427:17;21420:47;21484:131;21610:4;21484:131;:::i;:::-;21476:139;;21203:419;;;:::o;21628:237::-;21768:34;21764:1;21756:6;21752:14;21745:58;21837:20;21832:2;21824:6;21820:15;21813:45;21628:237;:::o;21871:366::-;22013:3;22034:67;22098:2;22093:3;22034:67;:::i;:::-;22027:74;;22110:93;22199:3;22110:93;:::i;:::-;22228:2;22223:3;22219:12;22212:19;;21871:366;;;:::o;22243:419::-;22409:4;22447:2;22436:9;22432:18;22424:26;;22496:9;22490:4;22486:20;22482:1;22471:9;22467:17;22460:47;22524:131;22650:4;22524:131;:::i;:::-;22516:139;;22243:419;;;:::o;22668:165::-;22808:17;22804:1;22796:6;22792:14;22785:41;22668:165;:::o;22839:366::-;22981:3;23002:67;23066:2;23061:3;23002:67;:::i;:::-;22995:74;;23078:93;23167:3;23078:93;:::i;:::-;23196:2;23191:3;23187:12;23180:19;;22839:366;;;:::o;23211:419::-;23377:4;23415:2;23404:9;23400:18;23392:26;;23464:9;23458:4;23454:20;23450:1;23439:9;23435:17;23428:47;23492:131;23618:4;23492:131;:::i;:::-;23484:139;;23211:419;;;:::o;23636:180::-;23776:32;23772:1;23764:6;23760:14;23753:56;23636:180;:::o;23822:366::-;23964:3;23985:67;24049:2;24044:3;23985:67;:::i;:::-;23978:74;;24061:93;24150:3;24061:93;:::i;:::-;24179:2;24174:3;24170:12;24163:19;;23822:366;;;:::o;24194:419::-;24360:4;24398:2;24387:9;24383:18;24375:26;;24447:9;24441:4;24437:20;24433:1;24422:9;24418:17;24411:47;24475:131;24601:4;24475:131;:::i;:::-;24467:139;;24194:419;;;:::o;24619:168::-;24759:20;24755:1;24747:6;24743:14;24736:44;24619:168;:::o;24793:366::-;24935:3;24956:67;25020:2;25015:3;24956:67;:::i;:::-;24949:74;;25032:93;25121:3;25032:93;:::i;:::-;25150:2;25145:3;25141:12;25134:19;;24793:366;;;:::o;25165:419::-;25331:4;25369:2;25358:9;25354:18;25346:26;;25418:9;25412:4;25408:20;25404:1;25393:9;25389:17;25382:47;25446:131;25572:4;25446:131;:::i;:::-;25438:139;;25165:419;;;:::o;25590:191::-;25630:3;25649:20;25667:1;25649:20;:::i;:::-;25644:25;;25683:20;25701:1;25683:20;:::i;:::-;25678:25;;25726:1;25723;25719:9;25712:16;;25747:3;25744:1;25741:10;25738:36;;;25754:18;;:::i;:::-;25738:36;25590:191;;;;:::o;25787:410::-;25827:7;25850:20;25868:1;25850:20;:::i;:::-;25845:25;;25884:20;25902:1;25884:20;:::i;:::-;25879:25;;25939:1;25936;25932:9;25961:30;25979:11;25961:30;:::i;:::-;25950:41;;26140:1;26131:7;26127:15;26124:1;26121:22;26101:1;26094:9;26074:83;26051:139;;26170:18;;:::i;:::-;26051:139;25835:362;25787:410;;;;:::o;26203:180::-;26251:77;26248:1;26241:88;26348:4;26345:1;26338:15;26372:4;26369:1;26362:15;26389:185;26429:1;26446:20;26464:1;26446:20;:::i;:::-;26441:25;;26480:20;26498:1;26480:20;:::i;:::-;26475:25;;26519:1;26509:35;;26524:18;;:::i;:::-;26509:35;26566:1;26563;26559:9;26554:14;;26389:185;;;;:::o;26580:180::-;26628:77;26625:1;26618:88;26725:4;26722:1;26715:15;26749:4;26746:1;26739:15;26766:143;26823:5;26854:6;26848:13;26839:22;;26870:33;26897:5;26870:33;:::i;:::-;26766:143;;;;:::o;26915:351::-;26985:6;27034:2;27022:9;27013:7;27009:23;27005:32;27002:119;;;27040:79;;:::i;:::-;27002:119;27160:1;27185:64;27241:7;27232:6;27221:9;27217:22;27185:64;:::i;:::-;27175:74;;27131:128;26915:351;;;;:::o;27272:85::-;27317:7;27346:5;27335:16;;27272:85;;;:::o;27363:158::-;27421:9;27454:61;27472:42;27481:32;27507:5;27481:32;:::i;:::-;27472:42;:::i;:::-;27454:61;:::i;:::-;27441:74;;27363:158;;;:::o;27527:147::-;27622:45;27661:5;27622:45;:::i;:::-;27617:3;27610:58;27527:147;;:::o;27680:114::-;27747:6;27781:5;27775:12;27765:22;;27680:114;;;:::o;27800:184::-;27899:11;27933:6;27928:3;27921:19;27973:4;27968:3;27964:14;27949:29;;27800:184;;;;:::o;27990:132::-;28057:4;28080:3;28072:11;;28110:4;28105:3;28101:14;28093:22;;27990:132;;;:::o;28128:108::-;28205:24;28223:5;28205:24;:::i;:::-;28200:3;28193:37;28128:108;;:::o;28242:179::-;28311:10;28332:46;28374:3;28366:6;28332:46;:::i;:::-;28410:4;28405:3;28401:14;28387:28;;28242:179;;;;:::o;28427:113::-;28497:4;28529;28524:3;28520:14;28512:22;;28427:113;;;:::o;28576:732::-;28695:3;28724:54;28772:5;28724:54;:::i;:::-;28794:86;28873:6;28868:3;28794:86;:::i;:::-;28787:93;;28904:56;28954:5;28904:56;:::i;:::-;28983:7;29014:1;28999:284;29024:6;29021:1;29018:13;28999:284;;;29100:6;29094:13;29127:63;29186:3;29171:13;29127:63;:::i;:::-;29120:70;;29213:60;29266:6;29213:60;:::i;:::-;29203:70;;29059:224;29046:1;29043;29039:9;29034:14;;28999:284;;;29003:14;29299:3;29292:10;;28700:608;;;28576:732;;;;:::o;29314:831::-;29577:4;29615:3;29604:9;29600:19;29592:27;;29629:71;29697:1;29686:9;29682:17;29673:6;29629:71;:::i;:::-;29710:80;29786:2;29775:9;29771:18;29762:6;29710:80;:::i;:::-;29837:9;29831:4;29827:20;29822:2;29811:9;29807:18;29800:48;29865:108;29968:4;29959:6;29865:108;:::i;:::-;29857:116;;29983:72;30051:2;30040:9;30036:18;30027:6;29983:72;:::i;:::-;30065:73;30133:3;30122:9;30118:19;30109:6;30065:73;:::i;:::-;29314:831;;;;;;;;:::o;30151:807::-;30400:4;30438:3;30427:9;30423:19;30415:27;;30452:71;30520:1;30509:9;30505:17;30496:6;30452:71;:::i;:::-;30533:72;30601:2;30590:9;30586:18;30577:6;30533:72;:::i;:::-;30615:80;30691:2;30680:9;30676:18;30667:6;30615:80;:::i;:::-;30705;30781:2;30770:9;30766:18;30757:6;30705:80;:::i;:::-;30795:73;30863:3;30852:9;30848:19;30839:6;30795:73;:::i;:::-;30878;30946:3;30935:9;30931:19;30922:6;30878:73;:::i;:::-;30151:807;;;;;;;;;:::o;30964:663::-;31052:6;31060;31068;31117:2;31105:9;31096:7;31092:23;31088:32;31085:119;;;31123:79;;:::i;:::-;31085:119;31243:1;31268:64;31324:7;31315:6;31304:9;31300:22;31268:64;:::i;:::-;31258:74;;31214:128;31381:2;31407:64;31463:7;31454:6;31443:9;31439:22;31407:64;:::i;:::-;31397:74;;31352:129;31520:2;31546:64;31602:7;31593:6;31582:9;31578:22;31546:64;:::i;:::-;31536:74;;31491:129;30964:663;;;;;:::o

Swarm Source

ipfs://143be01274cf070f405374c448c2a4ba3a4fd9c5411f1567e38b5b32f1dc2715
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.