ETH Price: $2,747.15 (-0.65%)

Token

Fantom Arena (FAA)
 

Overview

Max Total Supply

1,000,000 FAA

Holders

155

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.297042516 FAA

Value
$0.00
0x031e885e551936be8cfd7821ef219a47ed0a05b9
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:
FantomArena

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 2023-12-01
*/

// Telegram: https://t.me/fantomarena
// Website: https://fantomarena.app
// Twitter: https://x.com/fantomarena

// 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 FantomArena is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Fantom Arena';
    string private constant _symbol = unicode'FAA';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    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;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2000;
    uint256 private developmentFee = 500;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 2500;
    uint256 private transferFee = 2500;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0xFAFB78725D8a1699d9F27c7e3cc60a57769Ab952; 
    address internal marketing_receiver = 0x8F1207C02619f4229e20C15EE798522f67FA3758;
    address internal liquidity_receiver = 0x8F1207C02619f4229e20C15EE798522f67FA3758;
    uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000;

    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 setContractSwapTriggers(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 setTransactionFee(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 && sellFee <= denominator && transferFee <= denominator, "totalFee and sellFee cannot be more than 100%");
    }

    function setMaxWalletMaxTx(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 cannot be less than .5%");
    }

    function setInternalWallets(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 setisBot(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

    function manualSwap() external onlyOwner {
        swapAndLiquify(swapThreshold);
    }

    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":[],"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":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapTriggers","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":"setInternalWallets","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":"setMaxWalletMaxTx","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":"setTransactionFee","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"}]

60806040526009600a62000014919062000905565b620f424062000024919062000956565b6001556000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506001600a55620186a06103e860015462000078919062000956565b620000849190620009d0565b600b55620186a0600a6001546200009c919062000956565b620000a89190620009d0565b600c556000600d556107d0600e556101f4600f5560006010556109c46011556109c46012556109c460135561271060145573fafb78725d8a1699d9f27c7e3cc60a57769ab952601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738f1207c02619f4229e20c15ee798522f67fa3758601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738f1207c02619f4229e20c15ee798522f67fa3758601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060c8600154620001ec919062000956565b620001f89190620009d0565b60185561271060c86001546200020f919062000956565b6200021b9190620009d0565b60195561271060c860015462000232919062000956565b6200023e9190620009d0565b601a553480156200024e57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031e919062000a72565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000386573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ac919062000a72565b6040518363ffffffff1660e01b8152600401620003cb92919062000ab5565b6020604051808303816000875af1158015620003eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000411919062000a72565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200075b919062000af3565b60405180910390a3505062000b10565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f957808604811115620007d157620007d06200076b565b5b6001851615620007e15780820291505b8081029050620007f1856200079a565b9450620007b1565b94509492505050565b600082620008145760019050620008e7565b81620008245760009050620008e7565b81600181146200083d576002811462000848576200087e565b6001915050620008e7565b60ff8411156200085d576200085c6200076b565b5b8360020a9150848211156200087757620008766200076b565b5b50620008e7565b5060208310610133831016604e8410600b8410161715620008b85782820a905083811115620008b257620008b16200076b565b5b620008e7565b620008c78484846001620007a7565b92509050818404811115620008e157620008e06200076b565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200091282620008ee565b91506200091f83620008f8565b92506200094e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000802565b905092915050565b60006200096382620008ee565b91506200097083620008ee565b92508282026200098081620008ee565b915082820484148315176200099a57620009996200076b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009dd82620008ee565b9150620009ea83620008ee565b925082620009fd57620009fc620009a1565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a3a8262000a0d565b9050919050565b62000a4c8162000a2d565b811462000a5857600080fd5b50565b60008151905062000a6c8162000a41565b92915050565b60006020828403121562000a8b5762000a8a62000a08565b5b600062000a9b8482850162000a5b565b91505092915050565b62000aaf8162000a2d565b82525050565b600060408201905062000acc600083018562000aa4565b62000adb602083018462000aa4565b9392505050565b62000aed81620008ee565b82525050565b600060208201905062000b0a600083018462000ae2565b92915050565b613ade8062000b206000396000f3fe6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063a9059cbb11610064578063a9059cbb14610569578063dd62ed3e146105a6578063e8b410ab146105e3578063f2fde38b1461060c5761018c565b806395d89b41146104ea578063964d3ba014610515578063a8aa1b311461053e5761018c565b806370a08231146103d857806378109e54146104155780637cca52fe146104405780637d1db4a51461046b578063893d20e8146104965780638cd4426d146104c15761018c565b806323b872dd1161013e578063313ce56711610118578063313ce567146103305780633f4218e01461035b57806348ff2b8b1461039857806351bc3c85146103c15761018c565b806323b872dd1461029f578063293230b8146102dc5780632f54bf6e146102f35761018c565b806306fdde0314610191578063095ea7b3146101bc5780631555dfd9146101f957806318160ddd146102225780631b4897401461024d578063229b6a5e146102765761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b39190612a1e565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612ade565b610672565b6040516101f09190612b39565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612b54565b610689565b005b34801561022e57600080fd5b5061023761073d565b6040516102449190612bb6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612bd1565b61077e565b005b34801561028257600080fd5b5061029d60048036038101906102989190612d04565b610867565b005b3480156102ab57600080fd5b506102c660048036038101906102c19190612d64565b610954565b6040516102d39190612b39565b60405180910390f35b3480156102e857600080fd5b506102f1610a1f565b005b3480156102ff57600080fd5b5061031a60048036038101906103159190612db7565b610a84565b6040516103279190612b39565b60405180910390f35b34801561033c57600080fd5b50610345610add565b6040516103529190612e00565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190612db7565b610ae6565b60405161038f9190612b39565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612e1b565b610b06565b005b3480156103cd57600080fd5b506103d6610ba9565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612db7565b610bfe565b60405161040c9190612bb6565b60405180910390f35b34801561042157600080fd5b5061042a610c47565b6040516104379190612bb6565b60405180910390f35b34801561044c57600080fd5b50610455610c4d565b6040516104629190612bb6565b60405180910390f35b34801561047757600080fd5b50610480610c53565b60405161048d9190612bb6565b60405180910390f35b3480156104a257600080fd5b506104ab610c59565b6040516104b89190612e6a565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190612ade565b610c82565b005b3480156104f657600080fd5b506104ff610e13565b60405161050c9190612a1e565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190612b54565b610e50565b005b34801561054a57600080fd5b50610553610fcb565b6040516105609190612e6a565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190612ade565b610ff1565b60405161059d9190612b39565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612e85565b611008565b6040516105da9190612bb6565b60405180910390f35b3480156105ef57600080fd5b5061060a60048036038101906106059190612ec5565b61108f565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f56565b6112a7565b005b60606040518060400160405280600c81526020017f46616e746f6d204172656e610000000000000000000000000000000000000000815250905090565b600061067f338484611369565b6001905092915050565b61069233610a84565b6106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890612fcf565b60405180910390fd5b82600a81905550610702620186a06106f48460015461153290919063ffffffff16565b61154890919063ffffffff16565b600b81905550610732620186a06107248360015461153290919063ffffffff16565b61154890919063ffffffff16565b600c81905550505050565b600061077961074c6000610bfe565b61076b61075a61dead610bfe565b60015461155e90919063ffffffff16565b61155e90919063ffffffff16565b905090565b61078733610a84565b6107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90612fcf565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f819055508260118190555081601281905550806013819055506014546011541115801561080f575060145460125411155b801561081f575060145460135411155b61085e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085590613061565b60405180910390fd5b50505050505050565b61087033610a84565b6108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a690612fcf565b60405180910390fd5b60005b8383905081101561094e5781600560008686858181106108d5576108d4613081565b5b90506020020160208101906108ea9190612db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610946906130df565b9150506108b2565b50505050565b6000610961848484611574565b610a148433610a0f85604051806060016040528060288152602001613a8160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e3e9092919063ffffffff16565b611369565b600190509392505050565b610a2833610a84565b610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90612fcf565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60046020528060005260406000206000915054906101000a900460ff1681565b610b0f33610a84565b610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612fcf565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610bb233610a84565b610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890612fcf565b60405180910390fd5b610bfc600b54611e93565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c8b33610a84565b610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190612fcf565b60405180910390fd5b6000610d6b6064610d5d848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d0e9190612e6a565b602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f919061313c565b61153290919063ffffffff16565b61154890919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610dca929190613169565b6020604051808303816000875af1158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d91906131a7565b50505050565b60606040518060400160405280600381526020017f4641410000000000000000000000000000000000000000000000000000000000815250905090565b610e5933610a84565b610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90612fcf565b60405180910390fd5b6000610ec3612710610eb58660015461153290919063ffffffff16565b61154890919063ffffffff16565b90506000610ef0612710610ee28660015461153290919063ffffffff16565b61154890919063ffffffff16565b90506000610f1d612710610f0f8660015461153290919063ffffffff16565b61154890919063ffffffff16565b9050826018819055508160198190555080601a819055506000610f656103e8610f576005610f4961073d565b61153290919063ffffffff16565b61154890919063ffffffff16565b9050808410158015610f775750808310155b8015610f835750808210155b610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613246565b60405180910390fd5b50505050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ffe338484611574565b6001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61109833610a84565b6110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce90612fcf565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6112b033610a84565b6112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690612fcf565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161135e91906132c5565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90613352565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e906133e4565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115259190612bb6565b60405180910390a3505050565b600081836115409190613404565b905092915050565b600081836115569190613475565b905092915050565b6000818361156c91906134a6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da9061354c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611649906135de565b60405180910390fd5b61165b83610bfe565b81111561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490613670565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117415750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561179657600760149054906101000a900460ff16611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c906136dc565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561183a5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118945750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118ce575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561196a57601a5461192882600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210090919063ffffffff16565b1115611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090613748565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611aad5760195481111580611a195750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a6d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa3906137b4565b60405180910390fd5b5b60185481111580611b075750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b5b5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b91906137b4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c415750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6157600160086000828254611c5991906137d4565b925050819055505b611c6c838383612116565b15611c8557611c7c600b54611e93565b60006008819055505b611cd781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155e90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d268484612250565b611d305781611d3c565b611d3b8484846122fe565b5b9050611d9081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210090919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e309190612bb6565b60405180910390a350505050565b6000838311158290611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7d9190612a1e565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611f016002611ef3600f54611ee5600e54611ed76001600d5461210090919063ffffffff16565b61210090919063ffffffff16565b61210090919063ffffffff16565b61153290919063ffffffff16565b90506000611f2c82611f1e600d548661153290919063ffffffff16565b61154890919063ffffffff16565b90506000611f43828561155e90919063ffffffff16565b90506000479050611f53826124bc565b6000611f68824761155e90919063ffffffff16565b90506000611f93611f84600d548861155e90919063ffffffff16565b8361154890919063ffffffff16565b90506000611fac600d548361153290919063ffffffff16565b90506000811115611fc257611fc186826126ff565b5b6000611fec600e54611fde60028661153290919063ffffffff16565b61153290919063ffffffff16565b9050600081111561206157601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561205f573d6000803e3d6000fd5b505b600047905060008111156120d957601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d7573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b6000818361210e91906137d4565b905092915050565b600080600c5483101590506000600b5461212f30610bfe565b10159050600960009054906101000a900460ff1615801561215c5750600760159054906101000a900460ff165b80156121745750600760149054906101000a900460ff165b801561217d5750815b80156121d35750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561222c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b801561223c5750600a5460085410155b80156122455750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122f65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008061230b85856127ff565b11156124b157600061234361232086866127ff565b6123356014548661154890919063ffffffff16565b61153290919063ffffffff16565b905061239781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124379190612bb6565b60405180910390a3600060105411801561245b575060105461245986866127ff565b115b15612496576124953061dead6124906010546124826014548961154890919063ffffffff16565b61153290919063ffffffff16565b611574565b5b6124a9818461155e90919063ffffffff16565b9150506124b5565b8190505b9392505050565b6000600267ffffffffffffffff8111156124d9576124d8613808565b5b6040519080825280602002602001820160405280156125075781602001602082028036833780820191505090505b509050308160008151811061251f5761251e613081565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ea919061384c565b816001815181106125fe576125fd613081565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611369565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126c9959493929190613972565b600060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b505050505050565b61272c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611369565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127b5969594939291906139cc565b60606040518083038185885af11580156127d3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127f89190613a2d565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128a25750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128c4576128bd606460145461155e90919063ffffffff16565b9050612988565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612923576012549050612988565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612982576011549050612988565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129c85780820151818401526020810190506129ad565b60008484015250505050565b6000601f19601f8301169050919050565b60006129f08261298e565b6129fa8185612999565b9350612a0a8185602086016129aa565b612a13816129d4565b840191505092915050565b60006020820190508181036000830152612a3881846129e5565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a7582612a4a565b9050919050565b612a8581612a6a565b8114612a9057600080fd5b50565b600081359050612aa281612a7c565b92915050565b6000819050919050565b612abb81612aa8565b8114612ac657600080fd5b50565b600081359050612ad881612ab2565b92915050565b60008060408385031215612af557612af4612a40565b5b6000612b0385828601612a93565b9250506020612b1485828601612ac9565b9150509250929050565b60008115159050919050565b612b3381612b1e565b82525050565b6000602082019050612b4e6000830184612b2a565b92915050565b600080600060608486031215612b6d57612b6c612a40565b5b6000612b7b86828701612ac9565b9350506020612b8c86828701612ac9565b9250506040612b9d86828701612ac9565b9150509250925092565b612bb081612aa8565b82525050565b6000602082019050612bcb6000830184612ba7565b92915050565b600080600080600080600060e0888a031215612bf057612bef612a40565b5b6000612bfe8a828b01612ac9565b9750506020612c0f8a828b01612ac9565b9650506040612c208a828b01612ac9565b9550506060612c318a828b01612ac9565b9450506080612c428a828b01612ac9565b93505060a0612c538a828b01612ac9565b92505060c0612c648a828b01612ac9565b91505092959891949750929550565b600080fd5b600080fd5b600080fd5b60008083601f840112612c9857612c97612c73565b5b8235905067ffffffffffffffff811115612cb557612cb4612c78565b5b602083019150836020820283011115612cd157612cd0612c7d565b5b9250929050565b612ce181612b1e565b8114612cec57600080fd5b50565b600081359050612cfe81612cd8565b92915050565b600080600060408486031215612d1d57612d1c612a40565b5b600084013567ffffffffffffffff811115612d3b57612d3a612a45565b5b612d4786828701612c82565b93509350506020612d5a86828701612cef565b9150509250925092565b600080600060608486031215612d7d57612d7c612a40565b5b6000612d8b86828701612a93565b9350506020612d9c86828701612a93565b9250506040612dad86828701612ac9565b9150509250925092565b600060208284031215612dcd57612dcc612a40565b5b6000612ddb84828501612a93565b91505092915050565b600060ff82169050919050565b612dfa81612de4565b82525050565b6000602082019050612e156000830184612df1565b92915050565b60008060408385031215612e3257612e31612a40565b5b6000612e4085828601612a93565b9250506020612e5185828601612cef565b9150509250929050565b612e6481612a6a565b82525050565b6000602082019050612e7f6000830184612e5b565b92915050565b60008060408385031215612e9c57612e9b612a40565b5b6000612eaa85828601612a93565b9250506020612ebb85828601612a93565b9150509250929050565b600080600060608486031215612ede57612edd612a40565b5b6000612eec86828701612a93565b9350506020612efd86828701612a93565b9250506040612f0e86828701612a93565b9150509250925092565b6000612f2382612a4a565b9050919050565b612f3381612f18565b8114612f3e57600080fd5b50565b600081359050612f5081612f2a565b92915050565b600060208284031215612f6c57612f6b612a40565b5b6000612f7a84828501612f41565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612fb9600683612999565b9150612fc482612f83565b602082019050919050565b60006020820190508181036000830152612fe881612fac565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203130302500000000000000000000000000000000000000602082015250565b600061304b602d83612999565b915061305682612fef565b604082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130ea82612aa8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361311c5761311b6130b0565b5b600182019050919050565b60008151905061313681612ab2565b92915050565b60006020828403121561315257613151612a40565b5b600061316084828501613127565b91505092915050565b600060408201905061317e6000830185612e5b565b61318b6020830184612ba7565b9392505050565b6000815190506131a181612cd8565b92915050565b6000602082840312156131bd576131bc612a40565b5b60006131cb84828501613192565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000613230602e83612999565b915061323b826131d4565b604082019050919050565b6000602082019050818103600083015261325f81613223565b9050919050565b6000819050919050565b600061328b61328661328184612a4a565b613266565b612a4a565b9050919050565b600061329d82613270565b9050919050565b60006132af82613292565b9050919050565b6132bf816132a4565b82525050565b60006020820190506132da60008301846132b6565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061333c602483612999565b9150613347826132e0565b604082019050919050565b6000602082019050818103600083015261336b8161332f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133ce602283612999565b91506133d982613372565b604082019050919050565b600060208201905081810360008301526133fd816133c1565b9050919050565b600061340f82612aa8565b915061341a83612aa8565b925082820261342881612aa8565b9150828204841483151761343f5761343e6130b0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061348082612aa8565b915061348b83612aa8565b92508261349b5761349a613446565b5b828204905092915050565b60006134b182612aa8565b91506134bc83612aa8565b92508282039050818111156134d4576134d36130b0565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613536602583612999565b9150613541826134da565b604082019050919050565b6000602082019050818103600083015261356581613529565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135c8602383612999565b91506135d38261356c565b604082019050919050565b600060208201905081810360008301526135f7816135bb565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061365a603183612999565b9150613665826135fe565b604082019050919050565b600060208201905081810360008301526136898161364d565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006136c6600e83612999565b91506136d182613690565b602082019050919050565b600060208201905081810360008301526136f5816136b9565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613732601e83612999565b915061373d826136fc565b602082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061379e601183612999565b91506137a982613768565b602082019050919050565b600060208201905081810360008301526137cd81613791565b9050919050565b60006137df82612aa8565b91506137ea83612aa8565b9250828201905080821115613802576138016130b0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061384681612a7c565b92915050565b60006020828403121561386257613861612a40565b5b600061387084828501613837565b91505092915050565b6000819050919050565b600061389e61389961389484613879565b613266565b612aa8565b9050919050565b6138ae81613883565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138e981612a6a565b82525050565b60006138fb83836138e0565b60208301905092915050565b6000602082019050919050565b600061391f826138b4565b61392981856138bf565b9350613934836138d0565b8060005b8381101561396557815161394c88826138ef565b975061395783613907565b925050600181019050613938565b5085935050505092915050565b600060a0820190506139876000830188612ba7565b61399460208301876138a5565b81810360408301526139a68186613914565b90506139b56060830185612e5b565b6139c26080830184612ba7565b9695505050505050565b600060c0820190506139e16000830189612e5b565b6139ee6020830188612ba7565b6139fb60408301876138a5565b613a0860608301866138a5565b613a156080830185612e5b565b613a2260a0830184612ba7565b979650505050505050565b600080600060608486031215613a4657613a45612a40565b5b6000613a5486828701613127565b9350506020613a6586828701613127565b9250506040613a7686828701613127565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f5709a54d5dfc90473c475f178159c499322fcc3181b39e4e537cbc2d4b2b91e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101855760003560e01c806370a08231116100d157806395d89b411161008a578063a9059cbb11610064578063a9059cbb14610569578063dd62ed3e146105a6578063e8b410ab146105e3578063f2fde38b1461060c5761018c565b806395d89b41146104ea578063964d3ba014610515578063a8aa1b311461053e5761018c565b806370a08231146103d857806378109e54146104155780637cca52fe146104405780637d1db4a51461046b578063893d20e8146104965780638cd4426d146104c15761018c565b806323b872dd1161013e578063313ce56711610118578063313ce567146103305780633f4218e01461035b57806348ff2b8b1461039857806351bc3c85146103c15761018c565b806323b872dd1461029f578063293230b8146102dc5780632f54bf6e146102f35761018c565b806306fdde0314610191578063095ea7b3146101bc5780631555dfd9146101f957806318160ddd146102225780631b4897401461024d578063229b6a5e146102765761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b39190612a1e565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612ade565b610672565b6040516101f09190612b39565b60405180910390f35b34801561020557600080fd5b50610220600480360381019061021b9190612b54565b610689565b005b34801561022e57600080fd5b5061023761073d565b6040516102449190612bb6565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612bd1565b61077e565b005b34801561028257600080fd5b5061029d60048036038101906102989190612d04565b610867565b005b3480156102ab57600080fd5b506102c660048036038101906102c19190612d64565b610954565b6040516102d39190612b39565b60405180910390f35b3480156102e857600080fd5b506102f1610a1f565b005b3480156102ff57600080fd5b5061031a60048036038101906103159190612db7565b610a84565b6040516103279190612b39565b60405180910390f35b34801561033c57600080fd5b50610345610add565b6040516103529190612e00565b60405180910390f35b34801561036757600080fd5b50610382600480360381019061037d9190612db7565b610ae6565b60405161038f9190612b39565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612e1b565b610b06565b005b3480156103cd57600080fd5b506103d6610ba9565b005b3480156103e457600080fd5b506103ff60048036038101906103fa9190612db7565b610bfe565b60405161040c9190612bb6565b60405180910390f35b34801561042157600080fd5b5061042a610c47565b6040516104379190612bb6565b60405180910390f35b34801561044c57600080fd5b50610455610c4d565b6040516104629190612bb6565b60405180910390f35b34801561047757600080fd5b50610480610c53565b60405161048d9190612bb6565b60405180910390f35b3480156104a257600080fd5b506104ab610c59565b6040516104b89190612e6a565b60405180910390f35b3480156104cd57600080fd5b506104e860048036038101906104e39190612ade565b610c82565b005b3480156104f657600080fd5b506104ff610e13565b60405161050c9190612a1e565b60405180910390f35b34801561052157600080fd5b5061053c60048036038101906105379190612b54565b610e50565b005b34801561054a57600080fd5b50610553610fcb565b6040516105609190612e6a565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190612ade565b610ff1565b60405161059d9190612b39565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612e85565b611008565b6040516105da9190612bb6565b60405180910390f35b3480156105ef57600080fd5b5061060a60048036038101906106059190612ec5565b61108f565b005b34801561061857600080fd5b50610633600480360381019061062e9190612f56565b6112a7565b005b60606040518060400160405280600c81526020017f46616e746f6d204172656e610000000000000000000000000000000000000000815250905090565b600061067f338484611369565b6001905092915050565b61069233610a84565b6106d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c890612fcf565b60405180910390fd5b82600a81905550610702620186a06106f48460015461153290919063ffffffff16565b61154890919063ffffffff16565b600b81905550610732620186a06107248360015461153290919063ffffffff16565b61154890919063ffffffff16565b600c81905550505050565b600061077961074c6000610bfe565b61076b61075a61dead610bfe565b60015461155e90919063ffffffff16565b61155e90919063ffffffff16565b905090565b61078733610a84565b6107c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107bd90612fcf565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f819055508260118190555081601281905550806013819055506014546011541115801561080f575060145460125411155b801561081f575060145460135411155b61085e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085590613061565b60405180910390fd5b50505050505050565b61087033610a84565b6108af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a690612fcf565b60405180910390fd5b60005b8383905081101561094e5781600560008686858181106108d5576108d4613081565b5b90506020020160208101906108ea9190612db7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610946906130df565b9150506108b2565b50505050565b6000610961848484611574565b610a148433610a0f85604051806060016040528060288152602001613a8160289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e3e9092919063ffffffff16565b611369565b600190509392505050565b610a2833610a84565b610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e90612fcf565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60046020528060005260406000206000915054906101000a900460ff1681565b610b0f33610a84565b610b4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4590612fcf565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610bb233610a84565b610bf1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be890612fcf565b60405180910390fd5b610bfc600b54611e93565b565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610c8b33610a84565b610cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc190612fcf565b60405180910390fd5b6000610d6b6064610d5d848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d0e9190612e6a565b602060405180830381865afa158015610d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4f919061313c565b61153290919063ffffffff16565b61154890919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610dca929190613169565b6020604051808303816000875af1158015610de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e0d91906131a7565b50505050565b60606040518060400160405280600381526020017f4641410000000000000000000000000000000000000000000000000000000000815250905090565b610e5933610a84565b610e98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8f90612fcf565b60405180910390fd5b6000610ec3612710610eb58660015461153290919063ffffffff16565b61154890919063ffffffff16565b90506000610ef0612710610ee28660015461153290919063ffffffff16565b61154890919063ffffffff16565b90506000610f1d612710610f0f8660015461153290919063ffffffff16565b61154890919063ffffffff16565b9050826018819055508160198190555080601a819055506000610f656103e8610f576005610f4961073d565b61153290919063ffffffff16565b61154890919063ffffffff16565b9050808410158015610f775750808310155b8015610f835750808210155b610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990613246565b60405180910390fd5b50505050505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ffe338484611574565b6001905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61109833610a84565b6110d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ce90612fcf565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b6112b033610a84565b6112ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e690612fcf565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161135e91906132c5565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cf90613352565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e906133e4565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115259190612bb6565b60405180910390a3505050565b600081836115409190613404565b905092915050565b600081836115569190613475565b905092915050565b6000818361156c91906134a6565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da9061354c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611649906135de565b60405180910390fd5b61165b83610bfe565b81111561169d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169490613670565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117415750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561179657600760149054906101000a900460ff16611795576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178c906136dc565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561183a5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118945750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118ce575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561196a57601a5461192882600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210090919063ffffffff16565b1115611969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196090613748565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611aad5760195481111580611a195750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a6d5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa3906137b4565b60405180910390fd5b5b60185481111580611b075750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611b5b5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b91906137b4565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611c415750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c6157600160086000828254611c5991906137d4565b925050819055505b611c6c838383612116565b15611c8557611c7c600b54611e93565b60006008819055505b611cd781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461155e90919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611d268484612250565b611d305781611d3c565b611d3b8484846122fe565b5b9050611d9081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210090919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e309190612bb6565b60405180910390a350505050565b6000838311158290611e86576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7d9190612a1e565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611f016002611ef3600f54611ee5600e54611ed76001600d5461210090919063ffffffff16565b61210090919063ffffffff16565b61210090919063ffffffff16565b61153290919063ffffffff16565b90506000611f2c82611f1e600d548661153290919063ffffffff16565b61154890919063ffffffff16565b90506000611f43828561155e90919063ffffffff16565b90506000479050611f53826124bc565b6000611f68824761155e90919063ffffffff16565b90506000611f93611f84600d548861155e90919063ffffffff16565b8361154890919063ffffffff16565b90506000611fac600d548361153290919063ffffffff16565b90506000811115611fc257611fc186826126ff565b5b6000611fec600e54611fde60028661153290919063ffffffff16565b61153290919063ffffffff16565b9050600081111561206157601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561205f573d6000803e3d6000fd5b505b600047905060008111156120d957601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120d7573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b6000818361210e91906137d4565b905092915050565b600080600c5483101590506000600b5461212f30610bfe565b10159050600960009054906101000a900460ff1615801561215c5750600760159054906101000a900460ff165b80156121745750600760149054906101000a900460ff165b801561217d5750815b80156121d35750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561222c5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b801561223c5750600a5460085410155b80156122455750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122f65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008061230b85856127ff565b11156124b157600061234361232086866127ff565b6123356014548661154890919063ffffffff16565b61153290919063ffffffff16565b905061239781600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461210090919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516124379190612bb6565b60405180910390a3600060105411801561245b575060105461245986866127ff565b115b15612496576124953061dead6124906010546124826014548961154890919063ffffffff16565b61153290919063ffffffff16565b611574565b5b6124a9818461155e90919063ffffffff16565b9150506124b5565b8190505b9392505050565b6000600267ffffffffffffffff8111156124d9576124d8613808565b5b6040519080825280602002602001820160405280156125075781602001602082028036833780820191505090505b509050308160008151811061251f5761251e613081565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125ea919061384c565b816001815181106125fe576125fd613081565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061266530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611369565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126c9959493929190613972565b600060405180830381600087803b1580156126e357600080fd5b505af11580156126f7573d6000803e3d6000fd5b505050505050565b61272c30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611369565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016127b5969594939291906139cc565b60606040518083038185885af11580156127d3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127f89190613a2d565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128a25750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128c4576128bd606460145461155e90919063ffffffff16565b9050612988565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612923576012549050612988565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612982576011549050612988565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129c85780820151818401526020810190506129ad565b60008484015250505050565b6000601f19601f8301169050919050565b60006129f08261298e565b6129fa8185612999565b9350612a0a8185602086016129aa565b612a13816129d4565b840191505092915050565b60006020820190508181036000830152612a3881846129e5565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a7582612a4a565b9050919050565b612a8581612a6a565b8114612a9057600080fd5b50565b600081359050612aa281612a7c565b92915050565b6000819050919050565b612abb81612aa8565b8114612ac657600080fd5b50565b600081359050612ad881612ab2565b92915050565b60008060408385031215612af557612af4612a40565b5b6000612b0385828601612a93565b9250506020612b1485828601612ac9565b9150509250929050565b60008115159050919050565b612b3381612b1e565b82525050565b6000602082019050612b4e6000830184612b2a565b92915050565b600080600060608486031215612b6d57612b6c612a40565b5b6000612b7b86828701612ac9565b9350506020612b8c86828701612ac9565b9250506040612b9d86828701612ac9565b9150509250925092565b612bb081612aa8565b82525050565b6000602082019050612bcb6000830184612ba7565b92915050565b600080600080600080600060e0888a031215612bf057612bef612a40565b5b6000612bfe8a828b01612ac9565b9750506020612c0f8a828b01612ac9565b9650506040612c208a828b01612ac9565b9550506060612c318a828b01612ac9565b9450506080612c428a828b01612ac9565b93505060a0612c538a828b01612ac9565b92505060c0612c648a828b01612ac9565b91505092959891949750929550565b600080fd5b600080fd5b600080fd5b60008083601f840112612c9857612c97612c73565b5b8235905067ffffffffffffffff811115612cb557612cb4612c78565b5b602083019150836020820283011115612cd157612cd0612c7d565b5b9250929050565b612ce181612b1e565b8114612cec57600080fd5b50565b600081359050612cfe81612cd8565b92915050565b600080600060408486031215612d1d57612d1c612a40565b5b600084013567ffffffffffffffff811115612d3b57612d3a612a45565b5b612d4786828701612c82565b93509350506020612d5a86828701612cef565b9150509250925092565b600080600060608486031215612d7d57612d7c612a40565b5b6000612d8b86828701612a93565b9350506020612d9c86828701612a93565b9250506040612dad86828701612ac9565b9150509250925092565b600060208284031215612dcd57612dcc612a40565b5b6000612ddb84828501612a93565b91505092915050565b600060ff82169050919050565b612dfa81612de4565b82525050565b6000602082019050612e156000830184612df1565b92915050565b60008060408385031215612e3257612e31612a40565b5b6000612e4085828601612a93565b9250506020612e5185828601612cef565b9150509250929050565b612e6481612a6a565b82525050565b6000602082019050612e7f6000830184612e5b565b92915050565b60008060408385031215612e9c57612e9b612a40565b5b6000612eaa85828601612a93565b9250506020612ebb85828601612a93565b9150509250929050565b600080600060608486031215612ede57612edd612a40565b5b6000612eec86828701612a93565b9350506020612efd86828701612a93565b9250506040612f0e86828701612a93565b9150509250925092565b6000612f2382612a4a565b9050919050565b612f3381612f18565b8114612f3e57600080fd5b50565b600081359050612f5081612f2a565b92915050565b600060208284031215612f6c57612f6b612a40565b5b6000612f7a84828501612f41565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612fb9600683612999565b9150612fc482612f83565b602082019050919050565b60006020820190508181036000830152612fe881612fac565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203130302500000000000000000000000000000000000000602082015250565b600061304b602d83612999565b915061305682612fef565b604082019050919050565b6000602082019050818103600083015261307a8161303e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006130ea82612aa8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361311c5761311b6130b0565b5b600182019050919050565b60008151905061313681612ab2565b92915050565b60006020828403121561315257613151612a40565b5b600061316084828501613127565b91505092915050565b600060408201905061317e6000830185612e5b565b61318b6020830184612ba7565b9392505050565b6000815190506131a181612cd8565b92915050565b6000602082840312156131bd576131bc612a40565b5b60006131cb84828501613192565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000613230602e83612999565b915061323b826131d4565b604082019050919050565b6000602082019050818103600083015261325f81613223565b9050919050565b6000819050919050565b600061328b61328661328184612a4a565b613266565b612a4a565b9050919050565b600061329d82613270565b9050919050565b60006132af82613292565b9050919050565b6132bf816132a4565b82525050565b60006020820190506132da60008301846132b6565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061333c602483612999565b9150613347826132e0565b604082019050919050565b6000602082019050818103600083015261336b8161332f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133ce602283612999565b91506133d982613372565b604082019050919050565b600060208201905081810360008301526133fd816133c1565b9050919050565b600061340f82612aa8565b915061341a83612aa8565b925082820261342881612aa8565b9150828204841483151761343f5761343e6130b0565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061348082612aa8565b915061348b83612aa8565b92508261349b5761349a613446565b5b828204905092915050565b60006134b182612aa8565b91506134bc83612aa8565b92508282039050818111156134d4576134d36130b0565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613536602583612999565b9150613541826134da565b604082019050919050565b6000602082019050818103600083015261356581613529565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006135c8602383612999565b91506135d38261356c565b604082019050919050565b600060208201905081810360008301526135f7816135bb565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061365a603183612999565b9150613665826135fe565b604082019050919050565b600060208201905081810360008301526136898161364d565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006136c6600e83612999565b91506136d182613690565b602082019050919050565b600060208201905081810360008301526136f5816136b9565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613732601e83612999565b915061373d826136fc565b602082019050919050565b6000602082019050818103600083015261376181613725565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061379e601183612999565b91506137a982613768565b602082019050919050565b600060208201905081810360008301526137cd81613791565b9050919050565b60006137df82612aa8565b91506137ea83612aa8565b9250828201905080821115613802576138016130b0565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061384681612a7c565b92915050565b60006020828403121561386257613861612a40565b5b600061387084828501613837565b91505092915050565b6000819050919050565b600061389e61389961389484613879565b613266565b612aa8565b9050919050565b6138ae81613883565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6138e981612a6a565b82525050565b60006138fb83836138e0565b60208301905092915050565b6000602082019050919050565b600061391f826138b4565b61392981856138bf565b9350613934836138d0565b8060005b8381101561396557815161394c88826138ef565b975061395783613907565b925050600181019050613938565b5085935050505092915050565b600060a0820190506139876000830188612ba7565b61399460208301876138a5565b81810360408301526139a68186613914565b90506139b56060830185612e5b565b6139c26080830184612ba7565b9695505050505050565b600060c0820190506139e16000830189612e5b565b6139ee6020830188612ba7565b6139fb60408301876138a5565b613a0860608301866138a5565b613a156080830185612e5b565b613a2260a0830184612ba7565b979650505050505050565b600080600060608486031215613a4657613a45612a40565b5b6000613a5486828701613127565b9350506020613a6586828701613127565b9250506040613a7686828701613127565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f5709a54d5dfc90473c475f178159c499322fcc3181b39e4e537cbc2d4b2b91e64736f6c63430008130033

Deployed Bytecode Sourcemap

4786:11336:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7236:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8117:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8807:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8256:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9134:495;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10542:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15465:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7459:67;;;;;;;;;;;;;:::i;:::-;;3690:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7386:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5201:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8003:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10734:89;;;;;;;;;;;;;:::i;:::-;;7616:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6519:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6450:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6383:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7532:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10831:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7309:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9637:553;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5319:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7725:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7870:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10198:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3783:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7236:67;7273:13;7296:5;;;;;;;;;;;;;;;;;7289:12;;7236:67;:::o;8117:133::-;8192:4;8199:37;8208:10;8220:7;8229:6;8199:8;:37::i;:::-;8244:4;8237:11;;8117:133;;;;:::o;8807:319::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8953:11:::1;8940:10;:24;;;;8982:53;9027:6;8982:32;8999:14;8982:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8966:13;:69;;;;9064:54;9110:6;9064:33;9081:15;9064:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;9047:14;:71;;;;8807:319:::0;;;:::o;8256:132::-;8309:7;8326:60;8364:21;8382:1;8364:9;:21::i;:::-;8326:33;8343:15;6070:42;8343:9;:15::i;:::-;8326:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8319:67;;8256:132;:::o;9134:495::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9330:10:::1;9315:12;:25;;;;9357:10;9342:12;:25;;;;9379:5;9369:7;:15;;;;9403:12;9386:14;:29;;;;9428:6;9417:8;:17;;;;9446:5;9436:7;:15;;;;9467:6;9453:11;:20;;;;9504:11;;9492:8;;:23;;:49;;;;;9530:11;;9519:7;;:22;;9492:49;:79;;;;;9560:11;;9545;;:26;;9492:79;9484:137;;;;;;;;;;;;:::i;:::-;;;;;;;;;9134:495:::0;;;;;;;:::o;10542:184::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10639:6:::1;10635:84;10653:9;;:16;;10649:1;:20;10635:84;;;10708:8;10686:5;:19;10692:9;;10702:1;10692:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10686:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10671:3;;;;;:::i;:::-;;;;10635:84;;;;10542:184:::0;;;:::o;15465:309::-;15563:4;15580:36;15590:6;15598:9;15609:6;15580:9;:36::i;:::-;15627:117;15636:6;15644:10;15656:87;15692:6;15656:87;;;;;;;;;;;;;;;;;:11;:19;15668:6;15656:19;;;;;;;;;;;;;;;:31;15676:10;15656:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15627:8;:117::i;:::-;15762:4;15755:11;;15465:309;;;;;:::o;7459:67::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7520:4:::1;7503:14;;:21;;;;;;;;;;;;;;;;;;7459:67::o:0;3690:87::-;3745:4;3770:5;;;;;;;;;;;3759:16;;:7;:16;;;3752:23;;3690:87;;;:::o;7386:67::-;7427:5;5007:1;7435:16;;7386:67;:::o;5201:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8003:108::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8101:8:::1;8077:11;:21;8089:8;8077:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8003:108:::0;;:::o;10734:89::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10786:29:::1;10801:13;;10786:14;:29::i;:::-;10734:89::o:0;7616:103::-;7682:7;7699:9;:18;7709:7;7699:18;;;;;;;;;;;;;;;;7692:25;;7616:103;;;:::o;6519:63::-;;;;:::o;6450:62::-;;;;:::o;6383:60::-;;;;:::o;7532:78::-;7584:7;7602:5;;;;;;;;;;;7595:12;;7532:78;:::o;10831:242::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10917:15:::1;10935:63;10994:3;10935:54;10981:7;10942:8;10935:26;;;10970:4;10935:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10917:81;;11016:8;11009:25;;;11035:20;;;;;;;;;;;11057:7;11009:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10906:167;10831:242:::0;;:::o;7309:71::-;7348:13;7371:7;;;;;;;;;;;;;;;;;7364:14;;7309:71;:::o;9637:553::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9740:13:::1;9756:33;9783:5;9756:22;9773:4;9756:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9740:49;;9791:19;9813:34;9841:5;9813:23;9830:5;9813:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9791:56;;9849:17;9869:36;9899:5;9869:25;9886:7;9869:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9849:56;;9931:5;9916:12;:20;;;;9955:11;9938:14;:28;;;;9986:9;9968:15;:27;;;;10006:13;10022:30;10047:4;10022:20;10040:1;10022:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10006:46;;10080:5;10071;:14;;:38;;;;;10104:5;10089:11;:20;;10071:38;:60;;;;;10126:5;10113:9;:18;;10071:60;10063:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;9729:461;;;;9637:553:::0;;;:::o;5319:19::-;;;;;;;;;;;;;:::o;7725:139::-;7803:4;7810:40;7820:10;7832:9;7843:6;7810:9;:40::i;:::-;7858:4;7851:11;;7725:139;;;;:::o;7870:127::-;7951:7;7968:11;:18;7980:5;7968:18;;;;;;;;;;;;;;;:27;7987:7;7968:27;;;;;;;;;;;;;;;;7961:34;;7870:127;;;;:::o;10198:336::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10339:10:::1;10318:18;;:31;;;;;;;;;;;;;;;;;;10372:10;10351:18;;:31;;;;;;;;;;;;;;;;;;10407:12;10384:20;;:35;;;;;;;;;;;;;;;;;;10456:4;10430:11;:23;10442:10;10430:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10488:4;10462:11;:23;10474:10;10462:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10522:4;10494:11;:25;10506:12;10494:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10198:336:::0;;;:::o;3783:111::-;3649:19;3657:10;3649:7;:19::i;:::-;3641:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3857:3:::1;3849:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3867:25;3888:3;3867:25;;;;;;:::i;:::-;;;;;;;;3783:111:::0;:::o;15782:335::-;15892:1;15875:19;;:5;:19;;;15867:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15973:1;15954:21;;:7;:21;;;15946:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16055:6;16025:11;:18;16037:5;16025:18;;;;;;;;;;;;;;;:27;16044:7;16025:27;;;;;;;;;;;;;;;:36;;;;16093:7;16077:32;;16086:5;16077:32;;;16102:6;16077:32;;;;;;:::i;:::-;;;;;;;;15782:335;;;:::o;1535:98::-;1593:7;1624:1;1620;:5;;;;:::i;:::-;1613:12;;1535:98;;;;:::o;1641:::-;1699:7;1730:1;1726;:5;;;;:::i;:::-;1719:12;;1641:98;;;;:::o;1429:::-;1487:7;1518:1;1514;:5;;;;:::i;:::-;1507:12;;1429:98;;;;:::o;14024:1433::-;14139:1;14121:20;;:6;:20;;;14113:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14223:1;14202:23;;:9;:23;;;14194:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14294:17;14304:6;14294:9;:17::i;:::-;14284:6;:27;;14276:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14379:11;:19;14391:6;14379:19;;;;;;;;;;;;;;;;;;;;;;;;;14378:20;:47;;;;;14403:11;:22;14415:9;14403:22;;;;;;;;;;;;;;;;;;;;;;;;;14402:23;14378:47;14375:95;;;14435:14;;;;;;;;;;;14427:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14375:95;14484:11;:19;14496:6;14484:19;;;;;;;;;;;;;;;;;;;;;;;;;14483:20;:47;;;;;14508:11;:22;14520:9;14508:22;;;;;;;;;;;;;;;;;;;;;;;;;14507:23;14483:47;:77;;;;;14555:4;;;;;;;;;;;14534:26;;:9;:26;;;;14483:77;:107;;;;;6070:42;14564:26;;:9;:26;;;;14483:107;14480:220;;;14648:15;;14611:32;14636:6;14611:9;:20;14621:9;14611:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14610:53;;14602:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14480:220;14723:4;;;;;;;;;;;14713:14;;:6;:14;;;14710:124;;14747:14;;14737:6;:24;;:47;;;;14765:11;:19;14777:6;14765:19;;;;;;;;;;;;;;;;;;;;;;;;;14737:47;:73;;;;14788:11;:22;14800:9;14788:22;;;;;;;;;;;;;;;;;;;;;;;;;14737:73;14729:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14710:124;14862:12;;14852:6;:22;;:45;;;;14878:11;:19;14890:6;14878:19;;;;;;;;;;;;;;;;;;;;;;;;;14852:45;:71;;;;14901:11;:22;14913:9;14901:22;;;;;;;;;;;;;;;;;;;;;;;;;14852:71;14844:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14973:4;;;;;;;;;;;14960:17;;:9;:17;;;:41;;;;;14982:11;:19;14994:6;14982:19;;;;;;;;;;;;;;;;;;;;;;;;;14981:20;14960:41;14957:71;;;15024:1;15003:9;;:23;;;;;;;:::i;:::-;;;;;;;;14957:71;15041:45;15060:6;15068:9;15079:6;15041:18;:45::i;:::-;15038:105;;;15088:29;15103:13;;15088:14;:29::i;:::-;15139:1;15119:9;:22;;;;15038:105;15173:29;15195:6;15173:9;:17;15183:6;15173:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;15153:9;:17;15163:6;15153:17;;;;;;;;;;;;;;;:49;;;;15213:22;15238:32;15252:6;15260:9;15238:13;:32::i;:::-;:78;;15310:6;15238:78;;;15273:34;15281:6;15289:9;15300:6;15273:7;:34::i;:::-;15238:78;15213:103;;15350:40;15375:14;15350:9;:20;15360:9;15350:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15327:9;:20;15337:9;15327:20;;;;;;;;;;;;;;;:63;;;;15423:9;15406:43;;15415:6;15406:43;;;15434:14;15406:43;;;;;;:::i;:::-;;;;;;;;14102:1355;14024:1433;;;:::o;1853:240::-;1973:7;2031:1;2026;:6;;2034:12;2018:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2073:1;2069;:5;2062:12;;1853:240;;;;;:::o;11081:1063::-;5688:4;5677:8;;:15;;;;;;;;;;;;;;;;;;11152:20:::1;11175:66;11239:1;11176:57;11218:14;;11176:37;11200:12;;11176:19;11193:1;11176:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;11175:63;;:66;;;;:::i;:::-;11152:89;;11252:32;11287:42;11316:12;11287:24;11298:12;;11287:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;11252:77;;11340:14;11357:36;11368:24;11357:6;:10;;:36;;;;:::i;:::-;11340:53;;11404:22;11429:21;11404:46;;11461:24;11478:6;11461:16;:24::i;:::-;11496:20;11519:41;11545:14;11519:21;:25;;:41;;;;:::i;:::-;11496:64;;11571:19;11592:48;11609:30;11626:12;;11609;:16;;:30;;;;:::i;:::-;11592:12;:16;;:48;;;;:::i;:::-;11571:69;;11651:29;11683;11699:12;;11683:11;:15;;:29;;;;:::i;:::-;11651:61;;11758:1;11726:21;:34;11723:103;;;11762:61;11775:24;11801:21;11762:12;:61::i;:::-;11723:103;11836:20;11859:36;11882:12;;11859:18;11875:1;11859:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11836:59;;11924:1;11909:12;:16;11906:73;;;11935:18;;;;;;;;;;;11927:36;;:50;11964:12;11927:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11906:73;11989:23;12015:21;11989:47;;12076:1;12050:15;:28;12047:90;;;12088:20;;;;;;;;;;;12080:38;;:55;12119:15;12080:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12047:90;11141:1003;;;;;;;;;5708:5:::0;5697:8;;:16;;;;;;;;;;;;;;;;;;11081:1063;:::o;1323:98::-;1381:7;1412:1;1408;:5;;;;:::i;:::-;1401:12;;1323:98;;;;:::o;8396:403::-;8498:4;8515:13;8541:14;;8531:6;:24;;8515:40;;8566:19;8616:13;;8588:24;8606:4;8588:9;:24::i;:::-;:41;;8566:63;;8648:8;;;;;;;;;;;8647:9;:24;;;;;8660:11;;;;;;;;;;;8647:24;:42;;;;;8675:14;;;;;;;;;;;8647:42;:54;;;;;8693:8;8647:54;:78;;;;;8706:11;:19;8718:6;8706:19;;;;;;;;;;;;;;;;;;;;;;;;;8705:20;8647:78;:99;;;;;8742:4;;;;;;;;;;;8729:17;;:9;:17;;;8647:99;:126;;;;;8763:10;;8750:9;;:23;;8647:126;:144;;;;;8777:14;8647:144;8640:151;;;;8396:403;;;;;:::o;12945:160::-;13026:4;13051:11;:19;13063:6;13051:19;;;;;;;;;;;;;;;;;;;;;;;;;13050:20;:47;;;;;13075:11;:22;13087:9;13075:22;;;;;;;;;;;;;;;;;;;;;;;;;13074:23;13050:47;13043:54;;12945:160;;;;:::o;13426:590::-;13512:7;13568:1;13535:30;13547:6;13555:9;13535:11;:30::i;:::-;:34;13532:462;;;13581:17;13601:59;13629:30;13641:6;13649:9;13629:11;:30::i;:::-;13601:23;13612:11;;13601:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13581:79;;13698:39;13727:9;13698;:24;13716:4;13698:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13671:9;:24;13689:4;13671:24;;;;;;;;;;;;;;;:66;;;;13778:4;13753:42;;13762:6;13753:42;;;13785:9;13753:42;;;;;;:::i;:::-;;;;;;;;13827:1;13809:7;;:20;:64;;;;;13866:7;;13833:30;13845:6;13853:9;13833:11;:30::i;:::-;:40;13809:64;13806:148;;;13875:77;13893:4;6070:42;13915:36;13943:7;;13915:23;13926:11;;13915:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13875:9;:77::i;:::-;13806:148;13971:21;13982:9;13971:6;:10;;:21;;;;:::i;:::-;13964:28;;;;;13532:462;14002:6;13995:13;;13426:590;;;;;;:::o;12503:434::-;12569:21;12607:1;12593:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12569:40;;12638:4;12620;12625:1;12620:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12664:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12654:4;12659:1;12654:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12688:53;12705:4;12720:6;;;;;;;;;;;12729:11;12688:8;:53::i;:::-;12752:6;;;;;;;;;;;:57;;;12824:11;12850:1;12866:4;12893;12913:15;12752:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12558:379;12503:434;:::o;12152:343::-;12233:53;12250:4;12265:6;;;;;;;;;;;12274:11;12233:8;:53::i;:::-;12297:6;;;;;;;;;;;:22;;;12327:9;12360:4;12380:11;12406:1;12422;12438:18;;;;;;;;;;;12471:15;12297:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12152:343;;:::o;13113:305::-;13192:7;13215:5;:13;13221:6;13215:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;13232:5;:16;13238:9;13232:16;;;;;;;;;;;;;;;;;;;;;;;;;13215:33;13212:76;;;13257:29;13281:3;13257:11;;:15;;:29;;;;:::i;:::-;13250:36;;;;13212:76;13314:4;;;;;;;;;;;13301:17;;:9;:17;;;13298:38;;13327:7;;13320:14;;;;13298:38;13359:4;;;;;;;;;;;13349:14;;:6;:14;;;13346:36;;13372:8;;13365:15;;;;13346:36;13399:11;;13392:18;;13113: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:1203::-;4536:6;4544;4552;4560;4568;4576;4584;4633:3;4621:9;4612:7;4608:23;4604:33;4601:120;;;4640:79;;:::i;:::-;4601:120;4760:1;4785:53;4830:7;4821:6;4810:9;4806:22;4785:53;:::i;:::-;4775:63;;4731:117;4887:2;4913:53;4958:7;4949:6;4938:9;4934:22;4913:53;:::i;:::-;4903:63;;4858:118;5015:2;5041:53;5086:7;5077:6;5066:9;5062:22;5041:53;:::i;:::-;5031:63;;4986:118;5143:2;5169:53;5214:7;5205:6;5194:9;5190:22;5169:53;:::i;:::-;5159:63;;5114:118;5271:3;5298:53;5343:7;5334:6;5323:9;5319:22;5298:53;:::i;:::-;5288:63;;5242:119;5400:3;5427:53;5472:7;5463:6;5452:9;5448:22;5427:53;:::i;:::-;5417:63;;5371:119;5529:3;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5500:119;4423:1203;;;;;;;;;;:::o;5632:117::-;5741:1;5738;5731:12;5755:117;5864:1;5861;5854:12;5878:117;5987:1;5984;5977:12;6018:568;6091:8;6101:6;6151:3;6144:4;6136:6;6132:17;6128:27;6118:122;;6159:79;;:::i;:::-;6118:122;6272:6;6259:20;6249:30;;6302:18;6294:6;6291:30;6288:117;;;6324:79;;:::i;:::-;6288:117;6438:4;6430:6;6426:17;6414:29;;6492:3;6484:4;6476:6;6472:17;6462:8;6458:32;6455:41;6452:128;;;6499:79;;:::i;:::-;6452:128;6018:568;;;;;:::o;6592:116::-;6662:21;6677:5;6662:21;:::i;:::-;6655:5;6652:32;6642:60;;6698:1;6695;6688:12;6642:60;6592:116;:::o;6714:133::-;6757:5;6795:6;6782:20;6773:29;;6811:30;6835:5;6811:30;:::i;:::-;6714:133;;;;:::o;6853:698::-;6945:6;6953;6961;7010:2;6998:9;6989:7;6985:23;6981:32;6978:119;;;7016:79;;:::i;:::-;6978:119;7164:1;7153:9;7149:17;7136:31;7194:18;7186:6;7183:30;7180:117;;;7216:79;;:::i;:::-;7180:117;7329:80;7401:7;7392:6;7381:9;7377:22;7329:80;:::i;:::-;7311:98;;;;7107:312;7458:2;7484:50;7526:7;7517:6;7506:9;7502:22;7484:50;:::i;:::-;7474:60;;7429:115;6853:698;;;;;:::o;7557:619::-;7634:6;7642;7650;7699:2;7687:9;7678:7;7674:23;7670:32;7667:119;;;7705:79;;:::i;:::-;7667:119;7825:1;7850:53;7895:7;7886:6;7875:9;7871:22;7850:53;:::i;:::-;7840:63;;7796:117;7952:2;7978:53;8023:7;8014:6;8003:9;7999:22;7978:53;:::i;:::-;7968:63;;7923:118;8080:2;8106:53;8151:7;8142:6;8131:9;8127:22;8106:53;:::i;:::-;8096:63;;8051:118;7557:619;;;;;:::o;8182:329::-;8241:6;8290:2;8278:9;8269:7;8265:23;8261:32;8258:119;;;8296:79;;:::i;:::-;8258:119;8416:1;8441:53;8486:7;8477:6;8466:9;8462:22;8441:53;:::i;:::-;8431:63;;8387:117;8182:329;;;;:::o;8517:86::-;8552:7;8592:4;8585:5;8581:16;8570:27;;8517:86;;;:::o;8609:112::-;8692:22;8708:5;8692:22;:::i;:::-;8687:3;8680:35;8609:112;;:::o;8727:214::-;8816:4;8854:2;8843:9;8839:18;8831:26;;8867:67;8931:1;8920:9;8916:17;8907:6;8867:67;:::i;:::-;8727:214;;;;:::o;8947:468::-;9012:6;9020;9069:2;9057:9;9048:7;9044:23;9040:32;9037:119;;;9075:79;;:::i;:::-;9037:119;9195:1;9220:53;9265:7;9256:6;9245:9;9241:22;9220:53;:::i;:::-;9210:63;;9166:117;9322:2;9348:50;9390:7;9381:6;9370:9;9366:22;9348:50;:::i;:::-;9338:60;;9293:115;8947:468;;;;;:::o;9421:118::-;9508:24;9526:5;9508:24;:::i;:::-;9503:3;9496:37;9421:118;;:::o;9545:222::-;9638:4;9676:2;9665:9;9661:18;9653:26;;9689:71;9757:1;9746:9;9742:17;9733:6;9689:71;:::i;:::-;9545:222;;;;:::o;9773:474::-;9841:6;9849;9898:2;9886:9;9877:7;9873:23;9869:32;9866:119;;;9904:79;;:::i;:::-;9866:119;10024:1;10049:53;10094:7;10085:6;10074:9;10070:22;10049:53;:::i;:::-;10039:63;;9995:117;10151:2;10177:53;10222:7;10213:6;10202:9;10198:22;10177:53;:::i;:::-;10167:63;;10122:118;9773:474;;;;;:::o;10253:619::-;10330:6;10338;10346;10395:2;10383:9;10374:7;10370:23;10366:32;10363:119;;;10401:79;;:::i;:::-;10363:119;10521:1;10546:53;10591:7;10582:6;10571:9;10567:22;10546:53;:::i;:::-;10536:63;;10492:117;10648:2;10674:53;10719:7;10710:6;10699:9;10695:22;10674:53;:::i;:::-;10664:63;;10619:118;10776:2;10802:53;10847:7;10838:6;10827:9;10823:22;10802:53;:::i;:::-;10792:63;;10747:118;10253:619;;;;;:::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:232::-;12742:34;12738:1;12730:6;12726:14;12719:58;12811:15;12806:2;12798:6;12794:15;12787:40;12602:232;:::o;12840:366::-;12982:3;13003:67;13067:2;13062:3;13003:67;:::i;:::-;12996:74;;13079:93;13168:3;13079:93;:::i;:::-;13197:2;13192:3;13188:12;13181:19;;12840:366;;;:::o;13212:419::-;13378:4;13416:2;13405:9;13401:18;13393:26;;13465:9;13459:4;13455:20;13451:1;13440:9;13436:17;13429:47;13493:131;13619:4;13493:131;:::i;:::-;13485:139;;13212:419;;;:::o;13637:180::-;13685:77;13682:1;13675:88;13782:4;13779:1;13772:15;13806:4;13803:1;13796:15;13823:180;13871:77;13868:1;13861:88;13968:4;13965:1;13958:15;13992:4;13989:1;13982:15;14009:233;14048:3;14071:24;14089:5;14071:24;:::i;:::-;14062:33;;14117:66;14110:5;14107:77;14104:103;;14187:18;;:::i;:::-;14104:103;14234:1;14227:5;14223:13;14216:20;;14009:233;;;:::o;14248:143::-;14305:5;14336:6;14330:13;14321:22;;14352:33;14379:5;14352:33;:::i;:::-;14248:143;;;;:::o;14397:351::-;14467:6;14516:2;14504:9;14495:7;14491:23;14487:32;14484:119;;;14522:79;;:::i;:::-;14484:119;14642:1;14667:64;14723:7;14714:6;14703:9;14699:22;14667:64;:::i;:::-;14657:74;;14613:128;14397:351;;;;:::o;14754:332::-;14875:4;14913:2;14902:9;14898:18;14890:26;;14926:71;14994:1;14983:9;14979:17;14970:6;14926:71;:::i;:::-;15007:72;15075:2;15064:9;15060:18;15051:6;15007:72;:::i;:::-;14754:332;;;;;:::o;15092:137::-;15146:5;15177:6;15171:13;15162:22;;15193:30;15217:5;15193:30;:::i;:::-;15092:137;;;;:::o;15235:345::-;15302:6;15351:2;15339:9;15330:7;15326:23;15322:32;15319:119;;;15357:79;;:::i;:::-;15319:119;15477:1;15502:61;15555:7;15546:6;15535:9;15531:22;15502:61;:::i;:::-;15492:71;;15448:125;15235:345;;;;:::o;15586:233::-;15726:34;15722:1;15714:6;15710:14;15703:58;15795:16;15790:2;15782:6;15778:15;15771:41;15586:233;:::o;15825:366::-;15967:3;15988:67;16052:2;16047:3;15988:67;:::i;:::-;15981:74;;16064:93;16153:3;16064:93;:::i;:::-;16182:2;16177:3;16173:12;16166:19;;15825:366;;;:::o;16197:419::-;16363:4;16401:2;16390:9;16386:18;16378:26;;16450:9;16444:4;16440:20;16436:1;16425:9;16421:17;16414:47;16478:131;16604:4;16478:131;:::i;:::-;16470:139;;16197:419;;;:::o;16622:60::-;16650:3;16671:5;16664:12;;16622:60;;;:::o;16688:142::-;16738:9;16771:53;16789:34;16798:24;16816:5;16798:24;:::i;:::-;16789:34;:::i;:::-;16771:53;:::i;:::-;16758:66;;16688:142;;;:::o;16836:126::-;16886:9;16919:37;16950:5;16919:37;:::i;:::-;16906:50;;16836:126;;;:::o;16968:134::-;17026:9;17059:37;17090:5;17059:37;:::i;:::-;17046:50;;16968:134;;;:::o;17108:147::-;17203:45;17242:5;17203:45;:::i;:::-;17198:3;17191:58;17108:147;;:::o;17261:238::-;17362:4;17400:2;17389:9;17385:18;17377:26;;17413:79;17489:1;17478:9;17474:17;17465:6;17413:79;:::i;:::-;17261:238;;;;:::o;17505:223::-;17645:34;17641:1;17633:6;17629:14;17622:58;17714:6;17709:2;17701:6;17697:15;17690:31;17505:223;:::o;17734:366::-;17876:3;17897:67;17961:2;17956:3;17897:67;:::i;:::-;17890:74;;17973:93;18062:3;17973:93;:::i;:::-;18091:2;18086:3;18082:12;18075:19;;17734:366;;;:::o;18106:419::-;18272:4;18310:2;18299:9;18295:18;18287:26;;18359:9;18353:4;18349:20;18345:1;18334:9;18330:17;18323:47;18387:131;18513:4;18387:131;:::i;:::-;18379:139;;18106:419;;;:::o;18531:221::-;18671:34;18667:1;18659:6;18655:14;18648:58;18740:4;18735:2;18727:6;18723:15;18716:29;18531:221;:::o;18758:366::-;18900:3;18921:67;18985:2;18980:3;18921:67;:::i;:::-;18914:74;;18997:93;19086:3;18997:93;:::i;:::-;19115:2;19110:3;19106:12;19099:19;;18758:366;;;:::o;19130:419::-;19296:4;19334:2;19323:9;19319:18;19311:26;;19383:9;19377:4;19373:20;19369:1;19358:9;19354:17;19347:47;19411:131;19537:4;19411:131;:::i;:::-;19403:139;;19130:419;;;:::o;19555:410::-;19595:7;19618:20;19636:1;19618:20;:::i;:::-;19613:25;;19652:20;19670:1;19652:20;:::i;:::-;19647:25;;19707:1;19704;19700:9;19729:30;19747:11;19729:30;:::i;:::-;19718:41;;19908:1;19899:7;19895:15;19892:1;19889:22;19869:1;19862:9;19842:83;19819:139;;19938:18;;:::i;:::-;19819:139;19603:362;19555:410;;;;:::o;19971:180::-;20019:77;20016:1;20009:88;20116:4;20113:1;20106:15;20140:4;20137:1;20130:15;20157:185;20197:1;20214:20;20232:1;20214:20;:::i;:::-;20209:25;;20248:20;20266:1;20248:20;:::i;:::-;20243:25;;20287:1;20277:35;;20292:18;;:::i;:::-;20277:35;20334:1;20331;20327:9;20322:14;;20157:185;;;;:::o;20348:194::-;20388:4;20408:20;20426:1;20408:20;:::i;:::-;20403:25;;20442:20;20460:1;20442:20;:::i;:::-;20437:25;;20486:1;20483;20479:9;20471:17;;20510:1;20504:4;20501:11;20498:37;;;20515:18;;:::i;:::-;20498:37;20348:194;;;;:::o;20548:224::-;20688:34;20684:1;20676:6;20672:14;20665:58;20757:7;20752:2;20744:6;20740:15;20733:32;20548:224;:::o;20778:366::-;20920:3;20941:67;21005:2;21000:3;20941:67;:::i;:::-;20934:74;;21017:93;21106:3;21017:93;:::i;:::-;21135:2;21130:3;21126:12;21119:19;;20778:366;;;:::o;21150:419::-;21316:4;21354:2;21343:9;21339:18;21331:26;;21403:9;21397:4;21393:20;21389:1;21378:9;21374:17;21367:47;21431:131;21557:4;21431:131;:::i;:::-;21423:139;;21150:419;;;:::o;21575:222::-;21715:34;21711:1;21703:6;21699:14;21692:58;21784:5;21779:2;21771:6;21767:15;21760:30;21575:222;:::o;21803:366::-;21945:3;21966:67;22030:2;22025:3;21966:67;:::i;:::-;21959:74;;22042:93;22131:3;22042:93;:::i;:::-;22160:2;22155:3;22151:12;22144:19;;21803:366;;;:::o;22175:419::-;22341:4;22379:2;22368:9;22364:18;22356:26;;22428:9;22422:4;22418:20;22414:1;22403:9;22399:17;22392:47;22456:131;22582:4;22456:131;:::i;:::-;22448:139;;22175:419;;;:::o;22600:236::-;22740:34;22736:1;22728:6;22724:14;22717:58;22809:19;22804:2;22796:6;22792:15;22785:44;22600:236;:::o;22842:366::-;22984:3;23005:67;23069:2;23064:3;23005:67;:::i;:::-;22998:74;;23081:93;23170:3;23081:93;:::i;:::-;23199:2;23194:3;23190:12;23183:19;;22842:366;;;:::o;23214:419::-;23380:4;23418:2;23407:9;23403:18;23395:26;;23467:9;23461:4;23457:20;23453:1;23442:9;23438:17;23431:47;23495:131;23621:4;23495:131;:::i;:::-;23487:139;;23214:419;;;:::o;23639:164::-;23779:16;23775:1;23767:6;23763:14;23756:40;23639:164;:::o;23809:366::-;23951:3;23972:67;24036:2;24031:3;23972:67;:::i;:::-;23965:74;;24048:93;24137:3;24048:93;:::i;:::-;24166:2;24161:3;24157:12;24150:19;;23809:366;;;:::o;24181:419::-;24347:4;24385:2;24374:9;24370:18;24362:26;;24434:9;24428:4;24424:20;24420:1;24409:9;24405:17;24398:47;24462:131;24588:4;24462:131;:::i;:::-;24454:139;;24181:419;;;:::o;24606:180::-;24746:32;24742:1;24734:6;24730:14;24723:56;24606:180;:::o;24792:366::-;24934:3;24955:67;25019:2;25014:3;24955:67;:::i;:::-;24948:74;;25031:93;25120:3;25031:93;:::i;:::-;25149:2;25144:3;25140:12;25133:19;;24792:366;;;:::o;25164:419::-;25330:4;25368:2;25357:9;25353:18;25345:26;;25417:9;25411:4;25407:20;25403:1;25392:9;25388:17;25381:47;25445:131;25571:4;25445:131;:::i;:::-;25437:139;;25164:419;;;:::o;25589:167::-;25729:19;25725:1;25717:6;25713:14;25706:43;25589:167;:::o;25762:366::-;25904:3;25925:67;25989:2;25984:3;25925:67;:::i;:::-;25918:74;;26001:93;26090:3;26001:93;:::i;:::-;26119:2;26114:3;26110:12;26103:19;;25762:366;;;:::o;26134:419::-;26300:4;26338:2;26327:9;26323:18;26315:26;;26387:9;26381:4;26377:20;26373:1;26362:9;26358:17;26351:47;26415:131;26541:4;26415:131;:::i;:::-;26407:139;;26134:419;;;:::o;26559:191::-;26599:3;26618:20;26636:1;26618:20;:::i;:::-;26613:25;;26652:20;26670:1;26652:20;:::i;:::-;26647:25;;26695:1;26692;26688:9;26681:16;;26716:3;26713:1;26710:10;26707:36;;;26723:18;;:::i;:::-;26707:36;26559:191;;;;:::o;26756:180::-;26804:77;26801:1;26794:88;26901:4;26898:1;26891:15;26925:4;26922:1;26915:15;26942:143;26999:5;27030:6;27024:13;27015:22;;27046:33;27073:5;27046:33;:::i;:::-;26942:143;;;;:::o;27091:351::-;27161:6;27210:2;27198:9;27189:7;27185:23;27181:32;27178:119;;;27216:79;;:::i;:::-;27178:119;27336:1;27361:64;27417:7;27408:6;27397:9;27393:22;27361:64;:::i;:::-;27351:74;;27307:128;27091:351;;;;:::o;27448:85::-;27493:7;27522:5;27511:16;;27448:85;;;:::o;27539:158::-;27597:9;27630:61;27648:42;27657:32;27683:5;27657:32;:::i;:::-;27648:42;:::i;:::-;27630:61;:::i;:::-;27617:74;;27539:158;;;:::o;27703:147::-;27798:45;27837:5;27798:45;:::i;:::-;27793:3;27786:58;27703:147;;:::o;27856:114::-;27923:6;27957:5;27951:12;27941:22;;27856:114;;;:::o;27976:184::-;28075:11;28109:6;28104:3;28097:19;28149:4;28144:3;28140:14;28125:29;;27976:184;;;;:::o;28166:132::-;28233:4;28256:3;28248:11;;28286:4;28281:3;28277:14;28269:22;;28166:132;;;:::o;28304:108::-;28381:24;28399:5;28381:24;:::i;:::-;28376:3;28369:37;28304:108;;:::o;28418:179::-;28487:10;28508:46;28550:3;28542:6;28508:46;:::i;:::-;28586:4;28581:3;28577:14;28563:28;;28418:179;;;;:::o;28603:113::-;28673:4;28705;28700:3;28696:14;28688:22;;28603:113;;;:::o;28752:732::-;28871:3;28900:54;28948:5;28900:54;:::i;:::-;28970:86;29049:6;29044:3;28970:86;:::i;:::-;28963:93;;29080:56;29130:5;29080:56;:::i;:::-;29159:7;29190:1;29175:284;29200:6;29197:1;29194:13;29175:284;;;29276:6;29270:13;29303:63;29362:3;29347:13;29303:63;:::i;:::-;29296:70;;29389:60;29442:6;29389:60;:::i;:::-;29379:70;;29235:224;29222:1;29219;29215:9;29210:14;;29175:284;;;29179:14;29475:3;29468:10;;28876:608;;;28752:732;;;;:::o;29490:831::-;29753:4;29791:3;29780:9;29776:19;29768:27;;29805:71;29873:1;29862:9;29858:17;29849:6;29805:71;:::i;:::-;29886:80;29962:2;29951:9;29947:18;29938:6;29886:80;:::i;:::-;30013:9;30007:4;30003:20;29998:2;29987:9;29983:18;29976:48;30041:108;30144:4;30135:6;30041:108;:::i;:::-;30033:116;;30159:72;30227:2;30216:9;30212:18;30203:6;30159:72;:::i;:::-;30241:73;30309:3;30298:9;30294:19;30285:6;30241:73;:::i;:::-;29490:831;;;;;;;;:::o;30327:807::-;30576:4;30614:3;30603:9;30599:19;30591:27;;30628:71;30696:1;30685:9;30681:17;30672:6;30628:71;:::i;:::-;30709:72;30777:2;30766:9;30762:18;30753:6;30709:72;:::i;:::-;30791:80;30867:2;30856:9;30852:18;30843:6;30791:80;:::i;:::-;30881;30957:2;30946:9;30942:18;30933:6;30881:80;:::i;:::-;30971:73;31039:3;31028:9;31024:19;31015:6;30971:73;:::i;:::-;31054;31122:3;31111:9;31107:19;31098:6;31054:73;:::i;:::-;30327:807;;;;;;;;;:::o;31140:663::-;31228:6;31236;31244;31293:2;31281:9;31272:7;31268:23;31264:32;31261:119;;;31299:79;;:::i;:::-;31261:119;31419:1;31444:64;31500:7;31491:6;31480:9;31476:22;31444:64;:::i;:::-;31434:74;;31390:128;31557:2;31583:64;31639:7;31630:6;31619:9;31615:22;31583:64;:::i;:::-;31573:74;;31528:129;31696:2;31722:64;31778:7;31769:6;31758:9;31754:22;31722:64;:::i;:::-;31712:74;;31667:129;31140:663;;;;;:::o

Swarm Source

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