ETH Price: $3,091.26 (-0.38%)
Gas: 2 Gwei

Token

Shikoku Inu 2.0 (SHIK2.0)
 

Overview

Max Total Supply

1,000,000,000,000,000 SHIK2.0

Holders

259

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.999816206 SHIK2.0

Value
$0.00
0xdb39fbfb114857b8512a049814d364778b4f7f2d
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:
SHIK2

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-14
*/

//Website: Shikoku2.io
//Twitter: Twitter.com/Shikoku2io
//Telegram: t.me/Shikoku2io

// 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 SHIK2 is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Shikoku Inu 2.0';
    string private constant _symbol = 'SHIK2.0';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 4;
    uint256 private swapThreshold = ( _totalSupply * 500 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 2500;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2500;
    uint256 private sellFee = 2500;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x685eCB6F4b27D86142dED37173ddc8e6250cCc32;
    address internal development_receiver = 0x44a9f49C29C9543c31BD9bc8712410D8DBdB0b54; 
    address internal marketing_receiver = 0x44a9f49C29C9543c31BD9bc8712410D8DBdB0b54;
    address internal liquidity_receiver = 0x44a9f49C29C9543c31BD9bc8712410D8DBdB0b54;
    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[development_receiver] = _totalSupply;
        emit Transfer(address(0), development_receiver, _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 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 setContractSwapSettings(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 setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1) && transferFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setTransactionLimits(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 setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }


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

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

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

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

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

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

    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(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":"setContractSwapSettings","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":"setInternalAddresses","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":"setTransactionLimits","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":"setTransactionRequirements","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"}]

60806040526009600a6200001491906200094b565b66038d7ea4c680006200002891906200099c565b6001556000600660146101000a81548160ff0219169083151502179055506001600660156101000a81548160ff0219169083151502179055506004600955620186a06101f46001546200007c91906200099c565b62000088919062000a16565b600a55620186a0600a600154620000a091906200099c565b620000ac919062000a16565b600b556000600c556109c4600d556000600e556000600f556109c46010556109c460115560006012556127106013557344a9f49c29c9543c31bd9bc8712410d8dbdb0b54601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507344a9f49c29c9543c31bd9bc8712410d8dbdb0b54601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507344a9f49c29c9543c31bd9bc8712410d8dbdb0b54601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060c8600154620001ee91906200099c565b620001fa919062000a16565b60175561271060c86001546200021191906200099c565b6200021d919062000a16565b60185561271060c86001546200023491906200099c565b62000240919062000a16565b6019553480156200025057600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000320919062000ab8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000388573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ae919062000ab8565b6040518363ffffffff1660e01b8152600401620003cd92919062000afb565b6020604051808303816000875af1158015620003ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000413919062000ab8565b905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060015460026000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620007a1919062000b39565b60405180910390a3505062000b56565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200083f57808604811115620008175762000816620007b1565b5b6001851615620008275780820291505b80810290506200083785620007e0565b9450620007f7565b94509492505050565b6000826200085a57600190506200092d565b816200086a57600090506200092d565b81600181146200088357600281146200088e57620008c4565b60019150506200092d565b60ff841115620008a357620008a2620007b1565b5b8360020a915084821115620008bd57620008bc620007b1565b5b506200092d565b5060208310610133831016604e8410600b8410161715620008fe5782820a905083811115620008f857620008f7620007b1565b5b6200092d565b6200090d8484846001620007ed565b92509050818404811115620009275762000926620007b1565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009588262000934565b915062000965836200093e565b9250620009947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000848565b905092915050565b6000620009a98262000934565b9150620009b68362000934565b9250828202620009c68162000934565b91508282048414831517620009e057620009df620007b1565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a238262000934565b915062000a308362000934565b92508262000a435762000a42620009e7565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a808262000a53565b9050919050565b62000a928162000a73565b811462000a9e57600080fd5b50565b60008151905062000ab28162000a87565b92915050565b60006020828403121562000ad15762000ad062000a4e565b5b600062000ae18482850162000aa1565b91505092915050565b62000af58162000a73565b82525050565b600060408201905062000b12600083018562000aea565b62000b21602083018462000aea565b9392505050565b62000b338162000934565b82525050565b600060208201905062000b50600083018462000b28565b92915050565b6138638062000b666000396000f3fe60806040526004361061016a5760003560e01c80637cca52fe116100d15780639cc353511161008a578063a9059cbb11610064578063a9059cbb14610525578063cb7f97d714610562578063dd62ed3e1461058b578063f2fde38b146105c857610171565b80639cc35351146104a85780639d8740cb146104d1578063a8aa1b31146104fa57610171565b80637cca52fe146103aa5780637d1db4a5146103d5578063893d20e8146104005780638cd4426d1461042b5780639213c3581461045457806395d89b411461047d57610171565b8063313ce56711610123578063313ce5671461029a5780633f4218e0146102c557806348ff2b8b1461030257806351bc3c851461032b57806370a082311461034257806378109e541461037f57610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd14610209578063293230b8146102465780632f54bf6e1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105f1565b60405161019891906128b5565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612970565b61062e565b6040516101d591906129cb565b60405180910390f35b3480156101ea57600080fd5b506101f3610645565b60405161020091906129f5565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612a10565b610698565b60405161023d91906129cb565b60405180910390f35b34801561025257600080fd5b5061025b610763565b005b34801561026957600080fd5b50610284600480360381019061027f9190612a63565b6107c8565b60405161029191906129cb565b60405180910390f35b3480156102a657600080fd5b506102af610821565b6040516102bc9190612aac565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e79190612a63565b61082a565b6040516102f991906129cb565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190612af3565b61084a565b005b34801561033757600080fd5b506103406108ed565b005b34801561034e57600080fd5b5061036960048036038101906103649190612a63565b61095e565b60405161037691906129f5565b60405180910390f35b34801561038b57600080fd5b506103946109a7565b6040516103a191906129f5565b60405180910390f35b3480156103b657600080fd5b506103bf6109ad565b6040516103cc91906129f5565b60405180910390f35b3480156103e157600080fd5b506103ea6109b3565b6040516103f791906129f5565b60405180910390f35b34801561040c57600080fd5b506104156109b9565b6040516104229190612b42565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190612970565b6109e2565b005b34801561046057600080fd5b5061047b60048036038101906104769190612b5d565b610b73565b005b34801561048957600080fd5b50610492610d8b565b60405161049f91906128b5565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190612bb0565b610dc8565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190612bb0565b610f43565b005b34801561050657600080fd5b5061050f610ff7565b60405161051c9190612b42565b60405180910390f35b34801561053157600080fd5b5061054c60048036038101906105479190612970565b61101d565b60405161055991906129cb565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190612c03565b611034565b005b34801561059757600080fd5b506105b260048036038101906105ad9190612ca5565b611156565b6040516105bf91906129f5565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea9190612d23565b6111dd565b005b60606040518060400160405280600f81526020017f5368696b6f6b7520496e7520322e300000000000000000000000000000000000815250905090565b600061063b33848461129f565b6001905092915050565b6000610693610654600061095e565b61068561067473685ecb6f4b27d86142ded37173ddc8e6250ccc3261095e565b60015461146890919063ffffffff16565b61146890919063ffffffff16565b905090565b60006106a584848461147e565b61075884336107538560405180606001604052806028815260200161380660289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5a9092919063ffffffff16565b61129f565b600190509392505050565b61076c336107c8565b6107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290612d9c565b60405180910390fd5b6001600660146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60046020528060005260406000206000915054906101000a900460ff1681565b610853336107c8565b610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088990612d9c565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108f6336107c8565b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90612d9c565b60405180910390fd5b60006109403061095e565b9050600a5481111561095257600a5490505b61095b81611daf565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b60185481565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109eb336107c8565b610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190612d9c565b60405180910390fd5b6000610acb6064610abd848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a6e9190612b42565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190612dd1565b61201c90919063ffffffff16565b61203290919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610b2a929190612dfe565b6020604051808303816000875af1158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190612e3c565b50505050565b610b7c336107c8565b610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb290612d9c565b60405180910390fd5b82601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600781526020017f5348494b322e3000000000000000000000000000000000000000000000000000815250905090565b610dd1336107c8565b610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790612d9c565b60405180910390fd5b6000610e3b612710610e2d8660015461201c90919063ffffffff16565b61203290919063ffffffff16565b90506000610e68612710610e5a8660015461201c90919063ffffffff16565b61203290919063ffffffff16565b90506000610e95612710610e878660015461201c90919063ffffffff16565b61203290919063ffffffff16565b90508260178190555081601881905550806019819055506000610edd6103e8610ecf6005610ec1610645565b61201c90919063ffffffff16565b61203290919063ffffffff16565b9050808410158015610eef5750808310155b8015610efb5750808210155b610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612edb565b60405180910390fd5b50505050505050565b610f4c336107c8565b610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290612d9c565b60405180910390fd5b82600981905550610fbc620186a0610fae8460015461201c90919063ffffffff16565b61203290919063ffffffff16565b600a81905550610fec620186a0610fde8360015461201c90919063ffffffff16565b61203290919063ffffffff16565b600b81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061102a33848461147e565b6001905092915050565b61103d336107c8565b61107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107390612d9c565b60405180910390fd5b86600c8190555085600d8190555084600f8190555083600e819055508260108190555081601181905550806012819055506110c3600160135461203290919063ffffffff16565b601054111580156110eb57506110e5600160135461203290919063ffffffff16565b60115411155b801561110e5750611108600160135461203290919063ffffffff16565b60125411155b61114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114490612f6d565b60405180910390fd5b50505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111e6336107c8565b611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90612d9c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516112949190612fec565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590613079565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361137d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113749061310b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161145b91906129f5565b60405180910390a3505050565b60008183611476919061315a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613200565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613292565b60405180910390fd5b6115658361095e565b8111156115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90613324565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561164b5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116a057600660149054906101000a900460ff1661169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613390565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117445750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561179e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117ea575073685ecb6f4b27d86142ded37173ddc8e6250ccc3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118865760195461184482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204890919063ffffffff16565b1115611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906133fc565b60405180910390fd5b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119c957601854811115806119355750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119895750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf90613468565b60405180910390fd5b5b60175481111580611a235750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a775750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613468565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b5d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b7d57600160076000828254611b759190613488565b925050819055505b611b8883838361205e565b15611ba157611b98600a54611daf565b60006007819055505b611bf381600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611c428484612198565b611c4c5781611c58565b611c57848484612246565b5b9050611cac81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d4c91906129f5565b60405180910390a350505050565b6000838311158290611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9991906128b5565b60405180910390fd5b5082840390509392505050565b6001600860006101000a81548160ff0219169083151502179055506000611e1d6002611e0f600e54611e01600d54611df36001600c5461204890919063ffffffff16565b61204890919063ffffffff16565b61204890919063ffffffff16565b61201c90919063ffffffff16565b90506000611e4882611e3a600c548661201c90919063ffffffff16565b61203290919063ffffffff16565b90506000611e5f828561146890919063ffffffff16565b90506000479050611e6f82612416565b6000611e84824761146890919063ffffffff16565b90506000611eaf611ea0600c548861146890919063ffffffff16565b8361203290919063ffffffff16565b90506000611ec8600c548361201c90919063ffffffff16565b90506000811115611ede57611edd8682612659565b5b6000611f08600d54611efa60028661201c90919063ffffffff16565b61201c90919063ffffffff16565b90506000811115611f7d57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f7b573d6000803e3d6000fd5b505b60004790506000811115611ff557601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ff3573d6000803e3d6000fd5b505b5050505050505050506000600860006101000a81548160ff02191690831515021790555050565b6000818361202a91906134bc565b905092915050565b60008183612040919061352d565b905092915050565b600081836120569190613488565b905092915050565b600080600b5483101590506000600a546120773061095e565b10159050600860009054906101000a900460ff161580156120a45750600660159054906101000a900460ff165b80156120bc5750600660149054906101000a900460ff165b80156120c55750815b801561211b5750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121745750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612184575060095460075410155b801561218d5750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561223e5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806122538585612759565b111561240b57600061228b6122688686612759565b61227d6013548661203290919063ffffffff16565b61201c90919063ffffffff16565b90506122df81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161237f91906129f5565b60405180910390a36000600f541180156123a35750600f546123a18686612759565b115b156123f0576123ef3073685ecb6f4b27d86142ded37173ddc8e6250ccc326123ea600f546123dc6013548961203290919063ffffffff16565b61201c90919063ffffffff16565b61147e565b5b612403818461146890919063ffffffff16565b91505061240f565b8190505b9392505050565b6000600267ffffffffffffffff8111156124335761243261355e565b5b6040519080825280602002602001820160405280156124615781602001602082028036833780820191505090505b50905030816000815181106124795761247861358d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254491906135d1565b816001815181106125585761255761358d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125bf30600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461129f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126239594939291906136f7565b600060405180830381600087803b15801561263d57600080fd5b505af1158015612651573d6000803e3d6000fd5b505050505050565b61268630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461129f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161270f96959493929190613751565b60606040518083038185885af115801561272d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061275291906137b2565b5050505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127ba57601154905061281f565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361281957601054905061281f565b60125490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285f578082015181840152602081019050612844565b60008484015250505050565b6000601f19601f8301169050919050565b600061288782612825565b6128918185612830565b93506128a1818560208601612841565b6128aa8161286b565b840191505092915050565b600060208201905081810360008301526128cf818461287c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612907826128dc565b9050919050565b612917816128fc565b811461292257600080fd5b50565b6000813590506129348161290e565b92915050565b6000819050919050565b61294d8161293a565b811461295857600080fd5b50565b60008135905061296a81612944565b92915050565b60008060408385031215612987576129866128d7565b5b600061299585828601612925565b92505060206129a68582860161295b565b9150509250929050565b60008115159050919050565b6129c5816129b0565b82525050565b60006020820190506129e060008301846129bc565b92915050565b6129ef8161293a565b82525050565b6000602082019050612a0a60008301846129e6565b92915050565b600080600060608486031215612a2957612a286128d7565b5b6000612a3786828701612925565b9350506020612a4886828701612925565b9250506040612a598682870161295b565b9150509250925092565b600060208284031215612a7957612a786128d7565b5b6000612a8784828501612925565b91505092915050565b600060ff82169050919050565b612aa681612a90565b82525050565b6000602082019050612ac16000830184612a9d565b92915050565b612ad0816129b0565b8114612adb57600080fd5b50565b600081359050612aed81612ac7565b92915050565b60008060408385031215612b0a57612b096128d7565b5b6000612b1885828601612925565b9250506020612b2985828601612ade565b9150509250929050565b612b3c816128fc565b82525050565b6000602082019050612b576000830184612b33565b92915050565b600080600060608486031215612b7657612b756128d7565b5b6000612b8486828701612925565b9350506020612b9586828701612925565b9250506040612ba686828701612925565b9150509250925092565b600080600060608486031215612bc957612bc86128d7565b5b6000612bd78682870161295b565b9350506020612be88682870161295b565b9250506040612bf98682870161295b565b9150509250925092565b600080600080600080600060e0888a031215612c2257612c216128d7565b5b6000612c308a828b0161295b565b9750506020612c418a828b0161295b565b9650506040612c528a828b0161295b565b9550506060612c638a828b0161295b565b9450506080612c748a828b0161295b565b93505060a0612c858a828b0161295b565b92505060c0612c968a828b0161295b565b91505092959891949750929550565b60008060408385031215612cbc57612cbb6128d7565b5b6000612cca85828601612925565b9250506020612cdb85828601612925565b9150509250929050565b6000612cf0826128dc565b9050919050565b612d0081612ce5565b8114612d0b57600080fd5b50565b600081359050612d1d81612cf7565b92915050565b600060208284031215612d3957612d386128d7565b5b6000612d4784828501612d0e565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612d86600683612830565b9150612d9182612d50565b602082019050919050565b60006020820190508181036000830152612db581612d79565b9050919050565b600081519050612dcb81612944565b92915050565b600060208284031215612de757612de66128d7565b5b6000612df584828501612dbc565b91505092915050565b6000604082019050612e136000830185612b33565b612e2060208301846129e6565b9392505050565b600081519050612e3681612ac7565b92915050565b600060208284031215612e5257612e516128d7565b5b6000612e6084828501612e27565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612ec5602e83612830565b9150612ed082612e69565b604082019050919050565b60006020820190508181036000830152612ef481612eb8565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612f57602c83612830565b9150612f6282612efb565b604082019050919050565b60006020820190508181036000830152612f8681612f4a565b9050919050565b6000819050919050565b6000612fb2612fad612fa8846128dc565b612f8d565b6128dc565b9050919050565b6000612fc482612f97565b9050919050565b6000612fd682612fb9565b9050919050565b612fe681612fcb565b82525050565b60006020820190506130016000830184612fdd565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613063602483612830565b915061306e82613007565b604082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130f5602283612830565b915061310082613099565b604082019050919050565b60006020820190508181036000830152613124816130e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131658261293a565b91506131708361293a565b92508282039050818111156131885761318761312b565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131ea602583612830565b91506131f58261318e565b604082019050919050565b60006020820190508181036000830152613219816131dd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061327c602383612830565b915061328782613220565b604082019050919050565b600060208201905081810360008301526132ab8161326f565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061330e603183612830565b9150613319826132b2565b604082019050919050565b6000602082019050818103600083015261333d81613301565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b600061337a600e83612830565b915061338582613344565b602082019050919050565b600060208201905081810360008301526133a98161336d565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006133e6601e83612830565b91506133f1826133b0565b602082019050919050565b60006020820190508181036000830152613415816133d9565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613452601183612830565b915061345d8261341c565b602082019050919050565b6000602082019050818103600083015261348181613445565b9050919050565b60006134938261293a565b915061349e8361293a565b92508282019050808211156134b6576134b561312b565b5b92915050565b60006134c78261293a565b91506134d28361293a565b92508282026134e08161293a565b915082820484148315176134f7576134f661312b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135388261293a565b91506135438361293a565b925082613553576135526134fe565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506135cb8161290e565b92915050565b6000602082840312156135e7576135e66128d7565b5b60006135f5848285016135bc565b91505092915050565b6000819050919050565b600061362361361e613619846135fe565b612f8d565b61293a565b9050919050565b61363381613608565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61366e816128fc565b82525050565b60006136808383613665565b60208301905092915050565b6000602082019050919050565b60006136a482613639565b6136ae8185613644565b93506136b983613655565b8060005b838110156136ea5781516136d18882613674565b97506136dc8361368c565b9250506001810190506136bd565b5085935050505092915050565b600060a08201905061370c60008301886129e6565b613719602083018761362a565b818103604083015261372b8186613699565b905061373a6060830185612b33565b61374760808301846129e6565b9695505050505050565b600060c0820190506137666000830189612b33565b61377360208301886129e6565b613780604083018761362a565b61378d606083018661362a565b61379a6080830185612b33565b6137a760a08301846129e6565b979650505050505050565b6000806000606084860312156137cb576137ca6128d7565b5b60006137d986828701612dbc565b93505060206137ea86828701612dbc565b92505060406137fb86828701612dbc565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220687b797dff504f65d53726924460b9eae9d1a0cec6b03ac40e113b4c2dde91e364736f6c63430008130033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80637cca52fe116100d15780639cc353511161008a578063a9059cbb11610064578063a9059cbb14610525578063cb7f97d714610562578063dd62ed3e1461058b578063f2fde38b146105c857610171565b80639cc35351146104a85780639d8740cb146104d1578063a8aa1b31146104fa57610171565b80637cca52fe146103aa5780637d1db4a5146103d5578063893d20e8146104005780638cd4426d1461042b5780639213c3581461045457806395d89b411461047d57610171565b8063313ce56711610123578063313ce5671461029a5780633f4218e0146102c557806348ff2b8b1461030257806351bc3c851461032b57806370a082311461034257806378109e541461037f57610171565b806306fdde0314610176578063095ea7b3146101a157806318160ddd146101de57806323b872dd14610209578063293230b8146102465780632f54bf6e1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105f1565b60405161019891906128b5565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612970565b61062e565b6040516101d591906129cb565b60405180910390f35b3480156101ea57600080fd5b506101f3610645565b60405161020091906129f5565b60405180910390f35b34801561021557600080fd5b50610230600480360381019061022b9190612a10565b610698565b60405161023d91906129cb565b60405180910390f35b34801561025257600080fd5b5061025b610763565b005b34801561026957600080fd5b50610284600480360381019061027f9190612a63565b6107c8565b60405161029191906129cb565b60405180910390f35b3480156102a657600080fd5b506102af610821565b6040516102bc9190612aac565b60405180910390f35b3480156102d157600080fd5b506102ec60048036038101906102e79190612a63565b61082a565b6040516102f991906129cb565b60405180910390f35b34801561030e57600080fd5b5061032960048036038101906103249190612af3565b61084a565b005b34801561033757600080fd5b506103406108ed565b005b34801561034e57600080fd5b5061036960048036038101906103649190612a63565b61095e565b60405161037691906129f5565b60405180910390f35b34801561038b57600080fd5b506103946109a7565b6040516103a191906129f5565b60405180910390f35b3480156103b657600080fd5b506103bf6109ad565b6040516103cc91906129f5565b60405180910390f35b3480156103e157600080fd5b506103ea6109b3565b6040516103f791906129f5565b60405180910390f35b34801561040c57600080fd5b506104156109b9565b6040516104229190612b42565b60405180910390f35b34801561043757600080fd5b50610452600480360381019061044d9190612970565b6109e2565b005b34801561046057600080fd5b5061047b60048036038101906104769190612b5d565b610b73565b005b34801561048957600080fd5b50610492610d8b565b60405161049f91906128b5565b60405180910390f35b3480156104b457600080fd5b506104cf60048036038101906104ca9190612bb0565b610dc8565b005b3480156104dd57600080fd5b506104f860048036038101906104f39190612bb0565b610f43565b005b34801561050657600080fd5b5061050f610ff7565b60405161051c9190612b42565b60405180910390f35b34801561053157600080fd5b5061054c60048036038101906105479190612970565b61101d565b60405161055991906129cb565b60405180910390f35b34801561056e57600080fd5b5061058960048036038101906105849190612c03565b611034565b005b34801561059757600080fd5b506105b260048036038101906105ad9190612ca5565b611156565b6040516105bf91906129f5565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea9190612d23565b6111dd565b005b60606040518060400160405280600f81526020017f5368696b6f6b7520496e7520322e300000000000000000000000000000000000815250905090565b600061063b33848461129f565b6001905092915050565b6000610693610654600061095e565b61068561067473685ecb6f4b27d86142ded37173ddc8e6250ccc3261095e565b60015461146890919063ffffffff16565b61146890919063ffffffff16565b905090565b60006106a584848461147e565b61075884336107538560405180606001604052806028815260200161380660289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d5a9092919063ffffffff16565b61129f565b600190509392505050565b61076c336107c8565b6107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a290612d9c565b60405180910390fd5b6001600660146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60046020528060005260406000206000915054906101000a900460ff1681565b610853336107c8565b610892576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088990612d9c565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108f6336107c8565b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092c90612d9c565b60405180910390fd5b60006109403061095e565b9050600a5481111561095257600a5490505b61095b81611daf565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60195481565b60185481565b60175481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6109eb336107c8565b610a2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2190612d9c565b60405180910390fd5b6000610acb6064610abd848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610a6e9190612b42565b602060405180830381865afa158015610a8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aaf9190612dd1565b61201c90919063ffffffff16565b61203290919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610b2a929190612dfe565b6020604051808303816000875af1158015610b49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6d9190612e3c565b50505050565b610b7c336107c8565b610bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb290612d9c565b60405180910390fd5b82601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600781526020017f5348494b322e3000000000000000000000000000000000000000000000000000815250905090565b610dd1336107c8565b610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790612d9c565b60405180910390fd5b6000610e3b612710610e2d8660015461201c90919063ffffffff16565b61203290919063ffffffff16565b90506000610e68612710610e5a8660015461201c90919063ffffffff16565b61203290919063ffffffff16565b90506000610e95612710610e878660015461201c90919063ffffffff16565b61203290919063ffffffff16565b90508260178190555081601881905550806019819055506000610edd6103e8610ecf6005610ec1610645565b61201c90919063ffffffff16565b61203290919063ffffffff16565b9050808410158015610eef5750808310155b8015610efb5750808210155b610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190612edb565b60405180910390fd5b50505050505050565b610f4c336107c8565b610f8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8290612d9c565b60405180910390fd5b82600981905550610fbc620186a0610fae8460015461201c90919063ffffffff16565b61203290919063ffffffff16565b600a81905550610fec620186a0610fde8360015461201c90919063ffffffff16565b61203290919063ffffffff16565b600b81905550505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061102a33848461147e565b6001905092915050565b61103d336107c8565b61107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107390612d9c565b60405180910390fd5b86600c8190555085600d8190555084600f8190555083600e819055508260108190555081601181905550806012819055506110c3600160135461203290919063ffffffff16565b601054111580156110eb57506110e5600160135461203290919063ffffffff16565b60115411155b801561110e5750611108600160135461203290919063ffffffff16565b60125411155b61114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114490612f6d565b60405180910390fd5b50505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111e6336107c8565b611225576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121c90612d9c565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163816040516112949190612fec565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361130e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130590613079565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361137d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113749061310b565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161145b91906129f5565b60405180910390a3505050565b60008183611476919061315a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e490613200565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390613292565b60405180910390fd5b6115658361095e565b8111156115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90613324565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561164b5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156116a057600660149054906101000a900460ff1661169f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169690613390565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117445750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561179e5750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156117ea575073685ecb6f4b27d86142ded37173ddc8e6250ccc3273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118865760195461184482600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204890919063ffffffff16565b1115611885576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187c906133fc565b60405180910390fd5b5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119c957601854811115806119355750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119895750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6119c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119bf90613468565b60405180910390fd5b5b60175481111580611a235750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a775750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aad90613468565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611b5d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b7d57600160076000828254611b759190613488565b925050819055505b611b8883838361205e565b15611ba157611b98600a54611daf565b60006007819055505b611bf381600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461146890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611c428484612198565b611c4c5781611c58565b611c57848484612246565b5b9050611cac81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204890919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d4c91906129f5565b60405180910390a350505050565b6000838311158290611da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9991906128b5565b60405180910390fd5b5082840390509392505050565b6001600860006101000a81548160ff0219169083151502179055506000611e1d6002611e0f600e54611e01600d54611df36001600c5461204890919063ffffffff16565b61204890919063ffffffff16565b61204890919063ffffffff16565b61201c90919063ffffffff16565b90506000611e4882611e3a600c548661201c90919063ffffffff16565b61203290919063ffffffff16565b90506000611e5f828561146890919063ffffffff16565b90506000479050611e6f82612416565b6000611e84824761146890919063ffffffff16565b90506000611eaf611ea0600c548861146890919063ffffffff16565b8361203290919063ffffffff16565b90506000611ec8600c548361201c90919063ffffffff16565b90506000811115611ede57611edd8682612659565b5b6000611f08600d54611efa60028661201c90919063ffffffff16565b61201c90919063ffffffff16565b90506000811115611f7d57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f7b573d6000803e3d6000fd5b505b60004790506000811115611ff557601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611ff3573d6000803e3d6000fd5b505b5050505050505050506000600860006101000a81548160ff02191690831515021790555050565b6000818361202a91906134bc565b905092915050565b60008183612040919061352d565b905092915050565b600081836120569190613488565b905092915050565b600080600b5483101590506000600a546120773061095e565b10159050600860009054906101000a900460ff161580156120a45750600660159054906101000a900460ff165b80156120bc5750600660149054906101000a900460ff165b80156120c55750815b801561211b5750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121745750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015612184575060095460075410155b801561218d5750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561223e5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806122538585612759565b111561240b57600061228b6122688686612759565b61227d6013548661203290919063ffffffff16565b61201c90919063ffffffff16565b90506122df81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161237f91906129f5565b60405180910390a36000600f541180156123a35750600f546123a18686612759565b115b156123f0576123ef3073685ecb6f4b27d86142ded37173ddc8e6250ccc326123ea600f546123dc6013548961203290919063ffffffff16565b61201c90919063ffffffff16565b61147e565b5b612403818461146890919063ffffffff16565b91505061240f565b8190505b9392505050565b6000600267ffffffffffffffff8111156124335761243261355e565b5b6040519080825280602002602001820160405280156124615781602001602082028036833780820191505090505b50905030816000815181106124795761247861358d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612520573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061254491906135d1565b816001815181106125585761255761358d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506125bf30600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461129f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016126239594939291906136f7565b600060405180830381600087803b15801561263d57600080fd5b505af1158015612651573d6000803e3d6000fd5b505050505050565b61268630600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461129f565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161270f96959493929190613751565b60606040518083038185885af115801561272d573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061275291906137b2565b5050505050565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036127ba57601154905061281f565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361281957601054905061281f565b60125490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561285f578082015181840152602081019050612844565b60008484015250505050565b6000601f19601f8301169050919050565b600061288782612825565b6128918185612830565b93506128a1818560208601612841565b6128aa8161286b565b840191505092915050565b600060208201905081810360008301526128cf818461287c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612907826128dc565b9050919050565b612917816128fc565b811461292257600080fd5b50565b6000813590506129348161290e565b92915050565b6000819050919050565b61294d8161293a565b811461295857600080fd5b50565b60008135905061296a81612944565b92915050565b60008060408385031215612987576129866128d7565b5b600061299585828601612925565b92505060206129a68582860161295b565b9150509250929050565b60008115159050919050565b6129c5816129b0565b82525050565b60006020820190506129e060008301846129bc565b92915050565b6129ef8161293a565b82525050565b6000602082019050612a0a60008301846129e6565b92915050565b600080600060608486031215612a2957612a286128d7565b5b6000612a3786828701612925565b9350506020612a4886828701612925565b9250506040612a598682870161295b565b9150509250925092565b600060208284031215612a7957612a786128d7565b5b6000612a8784828501612925565b91505092915050565b600060ff82169050919050565b612aa681612a90565b82525050565b6000602082019050612ac16000830184612a9d565b92915050565b612ad0816129b0565b8114612adb57600080fd5b50565b600081359050612aed81612ac7565b92915050565b60008060408385031215612b0a57612b096128d7565b5b6000612b1885828601612925565b9250506020612b2985828601612ade565b9150509250929050565b612b3c816128fc565b82525050565b6000602082019050612b576000830184612b33565b92915050565b600080600060608486031215612b7657612b756128d7565b5b6000612b8486828701612925565b9350506020612b9586828701612925565b9250506040612ba686828701612925565b9150509250925092565b600080600060608486031215612bc957612bc86128d7565b5b6000612bd78682870161295b565b9350506020612be88682870161295b565b9250506040612bf98682870161295b565b9150509250925092565b600080600080600080600060e0888a031215612c2257612c216128d7565b5b6000612c308a828b0161295b565b9750506020612c418a828b0161295b565b9650506040612c528a828b0161295b565b9550506060612c638a828b0161295b565b9450506080612c748a828b0161295b565b93505060a0612c858a828b0161295b565b92505060c0612c968a828b0161295b565b91505092959891949750929550565b60008060408385031215612cbc57612cbb6128d7565b5b6000612cca85828601612925565b9250506020612cdb85828601612925565b9150509250929050565b6000612cf0826128dc565b9050919050565b612d0081612ce5565b8114612d0b57600080fd5b50565b600081359050612d1d81612cf7565b92915050565b600060208284031215612d3957612d386128d7565b5b6000612d4784828501612d0e565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612d86600683612830565b9150612d9182612d50565b602082019050919050565b60006020820190508181036000830152612db581612d79565b9050919050565b600081519050612dcb81612944565b92915050565b600060208284031215612de757612de66128d7565b5b6000612df584828501612dbc565b91505092915050565b6000604082019050612e136000830185612b33565b612e2060208301846129e6565b9392505050565b600081519050612e3681612ac7565b92915050565b600060208284031215612e5257612e516128d7565b5b6000612e6084828501612e27565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612ec5602e83612830565b9150612ed082612e69565b604082019050919050565b60006020820190508181036000830152612ef481612eb8565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612f57602c83612830565b9150612f6282612efb565b604082019050919050565b60006020820190508181036000830152612f8681612f4a565b9050919050565b6000819050919050565b6000612fb2612fad612fa8846128dc565b612f8d565b6128dc565b9050919050565b6000612fc482612f97565b9050919050565b6000612fd682612fb9565b9050919050565b612fe681612fcb565b82525050565b60006020820190506130016000830184612fdd565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613063602483612830565b915061306e82613007565b604082019050919050565b6000602082019050818103600083015261309281613056565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006130f5602283612830565b915061310082613099565b604082019050919050565b60006020820190508181036000830152613124816130e8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006131658261293a565b91506131708361293a565b92508282039050818111156131885761318761312b565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006131ea602583612830565b91506131f58261318e565b604082019050919050565b60006020820190508181036000830152613219816131dd565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061327c602383612830565b915061328782613220565b604082019050919050565b600060208201905081810360008301526132ab8161326f565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061330e603183612830565b9150613319826132b2565b604082019050919050565b6000602082019050818103600083015261333d81613301565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b600061337a600e83612830565b915061338582613344565b602082019050919050565b600060208201905081810360008301526133a98161336d565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006133e6601e83612830565b91506133f1826133b0565b602082019050919050565b60006020820190508181036000830152613415816133d9565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613452601183612830565b915061345d8261341c565b602082019050919050565b6000602082019050818103600083015261348181613445565b9050919050565b60006134938261293a565b915061349e8361293a565b92508282019050808211156134b6576134b561312b565b5b92915050565b60006134c78261293a565b91506134d28361293a565b92508282026134e08161293a565b915082820484148315176134f7576134f661312b565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006135388261293a565b91506135438361293a565b925082613553576135526134fe565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506135cb8161290e565b92915050565b6000602082840312156135e7576135e66128d7565b5b60006135f5848285016135bc565b91505092915050565b6000819050919050565b600061362361361e613619846135fe565b612f8d565b61293a565b9050919050565b61363381613608565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61366e816128fc565b82525050565b60006136808383613665565b60208301905092915050565b6000602082019050919050565b60006136a482613639565b6136ae8185613644565b93506136b983613655565b8060005b838110156136ea5781516136d18882613674565b97506136dc8361368c565b9250506001810190506136bd565b5085935050505092915050565b600060a08201905061370c60008301886129e6565b613719602083018761362a565b818103604083015261372b8186613699565b905061373a6060830185612b33565b61374760808301846129e6565b9695505050505050565b600060c0820190506137666000830189612b33565b61377360208301886129e6565b613780604083018761362a565b61378d606083018661362a565b61379a6080830185612b33565b6137a760a08301846129e6565b979650505050505050565b6000806000606084860312156137cb576137ca6128d7565b5b60006137d986828701612dbc565b93505060206137ea86828701612dbc565b92505060406137fb86828701612dbc565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220687b797dff504f65d53726924460b9eae9d1a0cec6b03ac40e113b4c2dde91e364736f6c63430008130033

Deployed Bytecode Sourcemap

4759:11160:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7180:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8061:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8200:123;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15264:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7403:67;;;;;;;;;;;;;:::i;:::-;;3663:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7330:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5177:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7947:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10513:195;;;;;;;;;;;;;:::i;:::-;;7560:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6443:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6374:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6307:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7476:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10716:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10165:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7253:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9601:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8742:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5249:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7669:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9069:524;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7814:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3756:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7180:67;7217:13;7240:5;;;;;;;;;;;;;;;;;7233:12;;7180:67;:::o;8061:133::-;8136:4;8143:37;8152:10;8164:7;8173:6;8143:8;:37::i;:::-;8188:4;8181:11;;8061:133;;;;:::o;8200:123::-;8244:7;8261:60;8299:21;8317:1;8299:9;:21::i;:::-;8261:33;8278:15;5994:42;8278:9;:15::i;:::-;8261:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8254:67;;8200:123;:::o;15264:309::-;15362:4;15379:36;15389:6;15397:9;15408:6;15379:9;:36::i;:::-;15426:117;15435:6;15443:10;15455:87;15491:6;15455:87;;;;;;;;;;;;;;;;;:11;:19;15467:6;15455:19;;;;;;;;;;;;;;;:31;15475:10;15455:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15426:8;:117::i;:::-;15561:4;15554:11;;15264:309;;;;;:::o;7403:67::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7464:4:::1;7447:14;;:21;;;;;;;;;;;;;;;;;;7403:67::o:0;3663:87::-;3718:4;3743:5;;;;;;;;;;;3732:16;;:7;:16;;;3725:23;;3663:87;;;:::o;7330:67::-;7371:5;4974:1;7379:16;;7330:67;:::o;5177:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;7947:108::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8045:8:::1;8021:11;:21;8033:8;8021:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;7947:108:::0;;:::o;10513:195::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10565:14:::1;10582:24;10600:4;10582:9;:24::i;:::-;10565:41;;10629:13;;10620:6;:22;10617:51;;;10653:13;;10644:22;;10617:51;10678:22;10693:6;10678:14;:22::i;:::-;10554:154;10513:195::o:0;7560:103::-;7626:7;7643:9;:18;7653:7;7643:18;;;;;;;;;;;;;;;;7636:25;;7560:103;;;:::o;6443:63::-;;;;:::o;6374:62::-;;;;:::o;6307:60::-;;;;:::o;7476:78::-;7528:7;7546:5;;;;;;;;;;;7539:12;;7476:78;:::o;10716:242::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10802:15:::1;10820:63;10879:3;10820:54;10866:7;10827:8;10820:26;;;10855:4;10820:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10802:81;;10901:8;10894:25;;;10920:20;;;;;;;;;;;10942:7;10894:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10791:167;10716:242:::0;;:::o;10165:338::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10308:10:::1;10287:18;;:31;;;;;;;;;;;;;;;;;;10341:10;10320:18;;:31;;;;;;;;;;;;;;;;;;10376:12;10353:20;;:35;;;;;;;;;;;;;;;;;;10425:4;10399:11;:23;10411:10;10399:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10457:4;10431:11;:23;10443:10;10431:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10491:4;10463:11;:25;10475:12;10463:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10165:338:::0;;;:::o;7253:71::-;7292:13;7315:7;;;;;;;;;;;;;;;;;7308:14;;7253:71;:::o;9601:556::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9707:13:::1;9723:33;9750:5;9723:22;9740:4;9723:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9707:49;;9758:19;9780:34;9808:5;9780:23;9797:5;9780:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9758:56;;9816:17;9836:36;9866:5;9836:25;9853:7;9836:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9816:56;;9898:5;9883:12;:20;;;;9922:11;9905:14;:28;;;;9953:9;9935:15;:27;;;;9973:13;9989:30;10014:4;9989:20;10007:1;9989:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;9973:46;;10047:5;10038;:14;;:38;;;;;10071:5;10056:11;:20;;10038:38;:60;;;;;10093:5;10080:9;:18;;10038:60;10030:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;9696:461;;;;9601:556:::0;;;:::o;8742:319::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8888:11:::1;8875:10;:24;;;;8917:53;8962:6;8917:32;8934:14;8917:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8901:13;:69;;;;8999:54;9045:6;8999:33;9016:15;8999:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;8982:14;:71;;;;8742:319:::0;;;:::o;5249:19::-;;;;;;;;;;;;;:::o;7669:139::-;7747:4;7754:40;7764:10;7776:9;7787:6;7754:9;:40::i;:::-;7802:4;7795:11;;7669:139;;;;:::o;9069:524::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9274:10:::1;9259:12;:25;;;;9301:10;9286:12;:25;;;;9323:5;9313:7;:15;;;;9347:12;9330:14;:29;;;;9372:6;9361:8;:17;;;;9390:5;9380:7;:15;;;;9411:6;9397:11;:20;;;;9448:18;9464:1;9448:11;;:15;;:18;;;;:::i;:::-;9436:8;;:30;;:63;;;;;9481:18;9497:1;9481:11;;:15;;:18;;;;:::i;:::-;9470:7;;:29;;9436:63;:100;;;;;9518:18;9534:1;9518:11;;:15;;:18;;;;:::i;:::-;9503:11;;:33;;9436:100;9428:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;9069:524:::0;;;;;;;:::o;7814:127::-;7895:7;7912:11;:18;7924:5;7912:18;;;;;;;;;;;;;;;:27;7931:7;7912:27;;;;;;;;;;;;;;;;7905:34;;7814:127;;;;:::o;3756:111::-;3622:19;3630:10;3622:7;:19::i;:::-;3614:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3830:3:::1;3822:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3840:25;3861:3;3840:25;;;;;;:::i;:::-;;;;;;;;3756:111:::0;:::o;15581:335::-;15691:1;15674:19;;:5;:19;;;15666:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15772:1;15753:21;;:7;:21;;;15745:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15854:6;15824:11;:18;15836:5;15824:18;;;;;;;;;;;;;;;:27;15843:7;15824:27;;;;;;;;;;;;;;;:36;;;;15892:7;15876:32;;15885:5;15876:32;;;15901:6;15876:32;;;;;;:::i;:::-;;;;;;;;15581:335;;;:::o;1402:98::-;1460:7;1491:1;1487;:5;;;;:::i;:::-;1480:12;;1402:98;;;;:::o;13823:1433::-;13938:1;13920:20;;:6;:20;;;13912:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14022:1;14001:23;;:9;:23;;;13993:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14093:17;14103:6;14093:9;:17::i;:::-;14083:6;:27;;14075:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14178:11;:19;14190:6;14178:19;;;;;;;;;;;;;;;;;;;;;;;;;14177:20;:47;;;;;14202:11;:22;14214:9;14202:22;;;;;;;;;;;;;;;;;;;;;;;;;14201:23;14177:47;14174:95;;;14234:14;;;;;;;;;;;14226:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14174:95;14283:11;:19;14295:6;14283:19;;;;;;;;;;;;;;;;;;;;;;;;;14282:20;:47;;;;;14307:11;:22;14319:9;14307:22;;;;;;;;;;;;;;;;;;;;;;;;;14306:23;14282:47;:77;;;;;14354:4;;;;;;;;;;;14333:26;;:9;:26;;;;14282:77;:107;;;;;5994:42;14363:26;;:9;:26;;;;14282:107;14279:220;;;14447:15;;14410:32;14435:6;14410:9;:20;14420:9;14410:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14409:53;;14401:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14279:220;14522:4;;;;;;;;;;;14512:14;;:6;:14;;;14509:124;;14546:14;;14536:6;:24;;:47;;;;14564:11;:19;14576:6;14564:19;;;;;;;;;;;;;;;;;;;;;;;;;14536:47;:73;;;;14587:11;:22;14599:9;14587:22;;;;;;;;;;;;;;;;;;;;;;;;;14536:73;14528:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14509:124;14661:12;;14651:6;:22;;:45;;;;14677:11;:19;14689:6;14677:19;;;;;;;;;;;;;;;;;;;;;;;;;14651:45;:71;;;;14700:11;:22;14712:9;14700:22;;;;;;;;;;;;;;;;;;;;;;;;;14651:71;14643:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14772:4;;;;;;;;;;;14759:17;;:9;:17;;;:41;;;;;14781:11;:19;14793:6;14781:19;;;;;;;;;;;;;;;;;;;;;;;;;14780:20;14759:41;14756:71;;;14823:1;14802:9;;:23;;;;;;;:::i;:::-;;;;;;;;14756:71;14840:45;14859:6;14867:9;14878:6;14840:18;:45::i;:::-;14837:105;;;14887:29;14902:13;;14887:14;:29::i;:::-;14938:1;14918:9;:22;;;;14837:105;14972:29;14994:6;14972:9;:17;14982:6;14972:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;14952:9;:17;14962:6;14952:17;;;;;;;;;;;;;;;:49;;;;15012:22;15037:32;15051:6;15059:9;15037:13;:32::i;:::-;:78;;15109:6;15037:78;;;15072:34;15080:6;15088:9;15099:6;15072:7;:34::i;:::-;15037:78;15012:103;;15149:40;15174:14;15149:9;:20;15159:9;15149:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15126:9;:20;15136:9;15126:20;;;;;;;;;;;;;;;:63;;;;15222:9;15205:43;;15214:6;15205:43;;;15233:14;15205:43;;;;;;:::i;:::-;;;;;;;;13901:1355;13823:1433;;;:::o;1826:240::-;1946:7;2004:1;1999;:6;;2007:12;1991:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2046:1;2042;:5;2035:12;;1826:240;;;;;:::o;10966:1063::-;5617:4;5606:8;;:15;;;;;;;;;;;;;;;;;;11037:20:::1;11060:66;11124:1;11061:57;11103:14;;11061:37;11085:12;;11061:19;11078:1;11061:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;11060:63;;:66;;;;:::i;:::-;11037:89;;11137:32;11172:42;11201:12;11172:24;11183:12;;11172:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;11137:77;;11225:14;11242:36;11253:24;11242:6;:10;;:36;;;;:::i;:::-;11225:53;;11289:22;11314:21;11289:46;;11346:24;11363:6;11346:16;:24::i;:::-;11381:20;11404:41;11430:14;11404:21;:25;;:41;;;;:::i;:::-;11381:64;;11456:19;11477:48;11494:30;11511:12;;11494;:16;;:30;;;;:::i;:::-;11477:12;:16;;:48;;;;:::i;:::-;11456:69;;11536:29;11568;11584:12;;11568:11;:15;;:29;;;;:::i;:::-;11536:61;;11643:1;11611:21;:34;11608:103;;;11647:61;11660:24;11686:21;11647:12;:61::i;:::-;11608:103;11721:20;11744:36;11767:12;;11744:18;11760:1;11744:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11721:59;;11809:1;11794:12;:16;11791:73;;;11820:18;;;;;;;;;;;11812:36;;:50;11849:12;11812:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11791:73;11874:23;11900:21;11874:47;;11961:1;11935:15;:28;11932:90;;;11973:20;;;;;;;;;;;11965:38;;:55;12004:15;11965:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11932:90;11026:1003;;;;;;;;;5637:5:::0;5626:8;;:16;;;;;;;;;;;;;;;;;;10966:1063;:::o;1508:98::-;1566:7;1597:1;1593;:5;;;;:::i;:::-;1586:12;;1508:98;;;;:::o;1614:::-;1672:7;1703:1;1699;:5;;;;:::i;:::-;1692:12;;1614:98;;;;:::o;1296:::-;1354:7;1385:1;1381;:5;;;;:::i;:::-;1374:12;;1296:98;;;;:::o;8331:403::-;8433:4;8450:13;8476:14;;8466:6;:24;;8450:40;;8501:19;8551:13;;8523:24;8541:4;8523:9;:24::i;:::-;:41;;8501:63;;8583:8;;;;;;;;;;;8582:9;:24;;;;;8595:11;;;;;;;;;;;8582:24;:42;;;;;8610:14;;;;;;;;;;;8582:42;:54;;;;;8628:8;8582:54;:78;;;;;8641:11;:19;8653:6;8641:19;;;;;;;;;;;;;;;;;;;;;;;;;8640:20;8582:78;:99;;;;;8677:4;;;;;;;;;;;8664:17;;:9;:17;;;8582:99;:126;;;;;8698:10;;8685:9;;:23;;8582:126;:144;;;;;8712:14;8582:144;8575:151;;;;8331:403;;;;;:::o;12830:160::-;12911:4;12936:11;:19;12948:6;12936:19;;;;;;;;;;;;;;;;;;;;;;;;;12935:20;:47;;;;;12960:11;:22;12972:9;12960:22;;;;;;;;;;;;;;;;;;;;;;;;;12959:23;12935:47;12928:54;;12830:160;;;;:::o;13225:590::-;13311:7;13367:1;13334:30;13346:6;13354:9;13334:11;:30::i;:::-;:34;13331:462;;;13380:17;13400:59;13428:30;13440:6;13448:9;13428:11;:30::i;:::-;13400:23;13411:11;;13400:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13380:79;;13497:39;13526:9;13497;:24;13515:4;13497:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13470:9;:24;13488:4;13470:24;;;;;;;;;;;;;;;:66;;;;13577:4;13552:42;;13561:6;13552:42;;;13584:9;13552:42;;;;;;:::i;:::-;;;;;;;;13626:1;13608:7;;:20;:64;;;;;13665:7;;13632:30;13644:6;13652:9;13632:11;:30::i;:::-;:40;13608:64;13605:148;;;13674:77;13692:4;5994:42;13714:36;13742:7;;13714:23;13725:11;;13714:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13674:9;:77::i;:::-;13605:148;13770:21;13781:9;13770:6;:10;;:21;;;;:::i;:::-;13763:28;;;;;13331:462;13801:6;13794:13;;13225:590;;;;;;:::o;12388:434::-;12454:21;12492:1;12478:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12454:40;;12523:4;12505;12510:1;12505:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12549:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12539:4;12544:1;12539:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12573:53;12590:4;12605:6;;;;;;;;;;;12614:11;12573:8;:53::i;:::-;12637:6;;;;;;;;;;;:57;;;12709:11;12735:1;12751:4;12778;12798:15;12637:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12443:379;12388:434;:::o;12037:343::-;12118:53;12135:4;12150:6;;;;;;;;;;;12159:11;12118:8;:53::i;:::-;12182:6;;;;;;;;;;;:22;;;12212:9;12245:4;12265:11;12291:1;12307;12323:18;;;;;;;;;;;12356:15;12182:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12037:343;;:::o;12998:219::-;13077:7;13113:4;;;;;;;;;;;13100:17;;:9;:17;;;13097:38;;13126:7;;13119:14;;;;13097:38;13158:4;;;;;;;;;;;13148:14;;:6;:14;;;13145:36;;13171:8;;13164:15;;;;13145:36;13198:11;;13191:18;;12998:219;;;;;:::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;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::o;6275:619::-;6352:6;6360;6368;6417:2;6405:9;6396:7;6392:23;6388:32;6385:119;;;6423:79;;:::i;:::-;6385:119;6543:1;6568:53;6613:7;6604:6;6593:9;6589:22;6568:53;:::i;:::-;6558:63;;6514:117;6670:2;6696:53;6741:7;6732:6;6721:9;6717:22;6696:53;:::i;:::-;6686:63;;6641:118;6798:2;6824:53;6869:7;6860:6;6849:9;6845:22;6824:53;:::i;:::-;6814:63;;6769:118;6275:619;;;;;:::o;6900:::-;6977:6;6985;6993;7042:2;7030:9;7021:7;7017:23;7013:32;7010:119;;;7048:79;;:::i;:::-;7010:119;7168:1;7193:53;7238:7;7229:6;7218:9;7214:22;7193:53;:::i;:::-;7183:63;;7139:117;7295:2;7321:53;7366:7;7357:6;7346:9;7342:22;7321:53;:::i;:::-;7311:63;;7266:118;7423:2;7449:53;7494:7;7485:6;7474:9;7470:22;7449:53;:::i;:::-;7439:63;;7394:118;6900:619;;;;;:::o;7525:1203::-;7638:6;7646;7654;7662;7670;7678;7686;7735:3;7723:9;7714:7;7710:23;7706:33;7703:120;;;7742:79;;:::i;:::-;7703:120;7862:1;7887:53;7932:7;7923:6;7912:9;7908:22;7887:53;:::i;:::-;7877:63;;7833:117;7989:2;8015:53;8060:7;8051:6;8040:9;8036:22;8015:53;:::i;:::-;8005:63;;7960:118;8117:2;8143:53;8188:7;8179:6;8168:9;8164:22;8143:53;:::i;:::-;8133:63;;8088:118;8245:2;8271:53;8316:7;8307:6;8296:9;8292:22;8271:53;:::i;:::-;8261:63;;8216:118;8373:3;8400:53;8445:7;8436:6;8425:9;8421:22;8400:53;:::i;:::-;8390:63;;8344:119;8502:3;8529:53;8574:7;8565:6;8554:9;8550:22;8529:53;:::i;:::-;8519:63;;8473:119;8631:3;8658:53;8703:7;8694:6;8683:9;8679:22;8658:53;:::i;:::-;8648:63;;8602:119;7525:1203;;;;;;;;;;:::o;8734:474::-;8802:6;8810;8859:2;8847:9;8838:7;8834:23;8830:32;8827:119;;;8865:79;;:::i;:::-;8827:119;8985:1;9010:53;9055:7;9046:6;9035:9;9031:22;9010:53;:::i;:::-;9000:63;;8956:117;9112:2;9138:53;9183:7;9174:6;9163:9;9159:22;9138:53;:::i;:::-;9128:63;;9083:118;8734:474;;;;;:::o;9214:104::-;9259:7;9288:24;9306:5;9288:24;:::i;:::-;9277:35;;9214:104;;;:::o;9324:138::-;9405:32;9431:5;9405:32;:::i;:::-;9398:5;9395:43;9385:71;;9452:1;9449;9442:12;9385:71;9324:138;:::o;9468:155::-;9522:5;9560:6;9547:20;9538:29;;9576:41;9611:5;9576:41;:::i;:::-;9468:155;;;;:::o;9629:345::-;9696:6;9745:2;9733:9;9724:7;9720:23;9716:32;9713:119;;;9751:79;;:::i;:::-;9713:119;9871:1;9896:61;9949:7;9940:6;9929:9;9925:22;9896:61;:::i;:::-;9886:71;;9842:125;9629:345;;;;:::o;9980:156::-;10120:8;10116:1;10108:6;10104:14;10097:32;9980:156;:::o;10142:365::-;10284:3;10305:66;10369:1;10364:3;10305:66;:::i;:::-;10298:73;;10380:93;10469:3;10380:93;:::i;:::-;10498:2;10493:3;10489:12;10482:19;;10142:365;;;:::o;10513:419::-;10679:4;10717:2;10706:9;10702:18;10694:26;;10766:9;10760:4;10756:20;10752:1;10741:9;10737:17;10730:47;10794:131;10920:4;10794:131;:::i;:::-;10786:139;;10513:419;;;:::o;10938:143::-;10995:5;11026:6;11020:13;11011:22;;11042:33;11069:5;11042:33;:::i;:::-;10938:143;;;;:::o;11087:351::-;11157:6;11206:2;11194:9;11185:7;11181:23;11177:32;11174:119;;;11212:79;;:::i;:::-;11174:119;11332:1;11357:64;11413:7;11404:6;11393:9;11389:22;11357:64;:::i;:::-;11347:74;;11303:128;11087:351;;;;:::o;11444:332::-;11565:4;11603:2;11592:9;11588:18;11580:26;;11616:71;11684:1;11673:9;11669:17;11660:6;11616:71;:::i;:::-;11697:72;11765:2;11754:9;11750:18;11741:6;11697:72;:::i;:::-;11444:332;;;;;:::o;11782:137::-;11836:5;11867:6;11861:13;11852:22;;11883:30;11907:5;11883:30;:::i;:::-;11782:137;;;;:::o;11925:345::-;11992:6;12041:2;12029:9;12020:7;12016:23;12012:32;12009:119;;;12047:79;;:::i;:::-;12009:119;12167:1;12192:61;12245:7;12236:6;12225:9;12221:22;12192:61;:::i;:::-;12182:71;;12138:125;11925:345;;;;:::o;12276:233::-;12416:34;12412:1;12404:6;12400:14;12393:58;12485:16;12480:2;12472:6;12468:15;12461:41;12276:233;:::o;12515:366::-;12657:3;12678:67;12742:2;12737:3;12678:67;:::i;:::-;12671:74;;12754:93;12843:3;12754:93;:::i;:::-;12872:2;12867:3;12863:12;12856:19;;12515:366;;;:::o;12887:419::-;13053:4;13091:2;13080:9;13076:18;13068:26;;13140:9;13134:4;13130:20;13126:1;13115:9;13111:17;13104:47;13168:131;13294:4;13168:131;:::i;:::-;13160:139;;12887:419;;;:::o;13312:231::-;13452:34;13448:1;13440:6;13436:14;13429:58;13521:14;13516:2;13508:6;13504:15;13497:39;13312:231;:::o;13549:366::-;13691:3;13712:67;13776:2;13771:3;13712:67;:::i;:::-;13705:74;;13788:93;13877:3;13788:93;:::i;:::-;13906:2;13901:3;13897:12;13890:19;;13549:366;;;:::o;13921:419::-;14087:4;14125:2;14114:9;14110:18;14102:26;;14174:9;14168:4;14164:20;14160:1;14149:9;14145:17;14138:47;14202:131;14328:4;14202:131;:::i;:::-;14194:139;;13921:419;;;:::o;14346:60::-;14374:3;14395:5;14388:12;;14346:60;;;:::o;14412:142::-;14462:9;14495:53;14513:34;14522:24;14540:5;14522:24;:::i;:::-;14513:34;:::i;:::-;14495:53;:::i;:::-;14482:66;;14412:142;;;:::o;14560:126::-;14610:9;14643:37;14674:5;14643:37;:::i;:::-;14630:50;;14560:126;;;:::o;14692:134::-;14750:9;14783:37;14814:5;14783:37;:::i;:::-;14770:50;;14692:134;;;:::o;14832:147::-;14927:45;14966:5;14927:45;:::i;:::-;14922:3;14915:58;14832:147;;:::o;14985:238::-;15086:4;15124:2;15113:9;15109:18;15101:26;;15137:79;15213:1;15202:9;15198:17;15189:6;15137:79;:::i;:::-;14985:238;;;;:::o;15229:223::-;15369:34;15365:1;15357:6;15353:14;15346:58;15438:6;15433:2;15425:6;15421:15;15414:31;15229:223;:::o;15458:366::-;15600:3;15621:67;15685:2;15680:3;15621:67;:::i;:::-;15614:74;;15697:93;15786:3;15697:93;:::i;:::-;15815:2;15810:3;15806:12;15799:19;;15458:366;;;:::o;15830:419::-;15996:4;16034:2;16023:9;16019:18;16011:26;;16083:9;16077:4;16073:20;16069:1;16058:9;16054:17;16047:47;16111:131;16237:4;16111:131;:::i;:::-;16103:139;;15830:419;;;:::o;16255:221::-;16395:34;16391:1;16383:6;16379:14;16372:58;16464:4;16459:2;16451:6;16447:15;16440:29;16255:221;:::o;16482:366::-;16624:3;16645:67;16709:2;16704:3;16645:67;:::i;:::-;16638:74;;16721:93;16810:3;16721:93;:::i;:::-;16839:2;16834:3;16830:12;16823:19;;16482:366;;;:::o;16854:419::-;17020:4;17058:2;17047:9;17043:18;17035:26;;17107:9;17101:4;17097:20;17093:1;17082:9;17078:17;17071:47;17135:131;17261:4;17135:131;:::i;:::-;17127:139;;16854:419;;;:::o;17279:180::-;17327:77;17324:1;17317:88;17424:4;17421:1;17414:15;17448:4;17445:1;17438:15;17465:194;17505:4;17525:20;17543:1;17525:20;:::i;:::-;17520:25;;17559:20;17577:1;17559:20;:::i;:::-;17554:25;;17603:1;17600;17596:9;17588:17;;17627:1;17621:4;17618:11;17615:37;;;17632:18;;:::i;:::-;17615:37;17465:194;;;;:::o;17665:224::-;17805:34;17801:1;17793:6;17789:14;17782:58;17874:7;17869:2;17861:6;17857:15;17850:32;17665:224;:::o;17895:366::-;18037:3;18058:67;18122:2;18117:3;18058:67;:::i;:::-;18051:74;;18134:93;18223:3;18134:93;:::i;:::-;18252:2;18247:3;18243:12;18236:19;;17895:366;;;:::o;18267:419::-;18433:4;18471:2;18460:9;18456:18;18448:26;;18520:9;18514:4;18510:20;18506:1;18495:9;18491:17;18484:47;18548:131;18674:4;18548:131;:::i;:::-;18540:139;;18267:419;;;:::o;18692:222::-;18832:34;18828:1;18820:6;18816:14;18809:58;18901:5;18896:2;18888:6;18884:15;18877:30;18692:222;:::o;18920:366::-;19062:3;19083:67;19147:2;19142:3;19083:67;:::i;:::-;19076:74;;19159:93;19248:3;19159:93;:::i;:::-;19277:2;19272:3;19268:12;19261:19;;18920:366;;;:::o;19292:419::-;19458:4;19496:2;19485:9;19481:18;19473:26;;19545:9;19539:4;19535:20;19531:1;19520:9;19516:17;19509:47;19573:131;19699:4;19573:131;:::i;:::-;19565:139;;19292:419;;;:::o;19717:236::-;19857:34;19853:1;19845:6;19841:14;19834:58;19926:19;19921:2;19913:6;19909:15;19902:44;19717:236;:::o;19959:366::-;20101:3;20122:67;20186:2;20181:3;20122:67;:::i;:::-;20115:74;;20198:93;20287:3;20198:93;:::i;:::-;20316:2;20311:3;20307:12;20300:19;;19959:366;;;:::o;20331:419::-;20497:4;20535:2;20524:9;20520:18;20512:26;;20584:9;20578:4;20574:20;20570:1;20559:9;20555:17;20548:47;20612:131;20738:4;20612:131;:::i;:::-;20604:139;;20331:419;;;:::o;20756:164::-;20896:16;20892:1;20884:6;20880:14;20873:40;20756:164;:::o;20926:366::-;21068:3;21089:67;21153:2;21148:3;21089:67;:::i;:::-;21082:74;;21165:93;21254:3;21165:93;:::i;:::-;21283:2;21278:3;21274:12;21267:19;;20926:366;;;:::o;21298:419::-;21464:4;21502:2;21491:9;21487:18;21479:26;;21551:9;21545:4;21541:20;21537:1;21526:9;21522:17;21515:47;21579:131;21705:4;21579:131;:::i;:::-;21571:139;;21298:419;;;:::o;21723:180::-;21863:32;21859:1;21851:6;21847:14;21840:56;21723:180;:::o;21909:366::-;22051:3;22072:67;22136:2;22131:3;22072:67;:::i;:::-;22065:74;;22148:93;22237:3;22148:93;:::i;:::-;22266:2;22261:3;22257:12;22250:19;;21909:366;;;:::o;22281:419::-;22447:4;22485:2;22474:9;22470:18;22462:26;;22534:9;22528:4;22524:20;22520:1;22509:9;22505:17;22498:47;22562:131;22688:4;22562:131;:::i;:::-;22554:139;;22281:419;;;:::o;22706:167::-;22846:19;22842:1;22834:6;22830:14;22823:43;22706:167;:::o;22879:366::-;23021:3;23042:67;23106:2;23101:3;23042:67;:::i;:::-;23035:74;;23118:93;23207:3;23118:93;:::i;:::-;23236:2;23231:3;23227:12;23220:19;;22879:366;;;:::o;23251:419::-;23417:4;23455:2;23444:9;23440:18;23432:26;;23504:9;23498:4;23494:20;23490:1;23479:9;23475:17;23468:47;23532:131;23658:4;23532:131;:::i;:::-;23524:139;;23251:419;;;:::o;23676:191::-;23716:3;23735:20;23753:1;23735:20;:::i;:::-;23730:25;;23769:20;23787:1;23769:20;:::i;:::-;23764:25;;23812:1;23809;23805:9;23798:16;;23833:3;23830:1;23827:10;23824:36;;;23840:18;;:::i;:::-;23824:36;23676:191;;;;:::o;23873:410::-;23913:7;23936:20;23954:1;23936:20;:::i;:::-;23931:25;;23970:20;23988:1;23970:20;:::i;:::-;23965:25;;24025:1;24022;24018:9;24047:30;24065:11;24047:30;:::i;:::-;24036:41;;24226:1;24217:7;24213:15;24210:1;24207:22;24187:1;24180:9;24160:83;24137:139;;24256:18;;:::i;:::-;24137:139;23921:362;23873:410;;;;:::o;24289:180::-;24337:77;24334:1;24327:88;24434:4;24431:1;24424:15;24458:4;24455:1;24448:15;24475:185;24515:1;24532:20;24550:1;24532:20;:::i;:::-;24527:25;;24566:20;24584:1;24566:20;:::i;:::-;24561:25;;24605:1;24595:35;;24610:18;;:::i;:::-;24595:35;24652:1;24649;24645:9;24640:14;;24475:185;;;;:::o;24666:180::-;24714:77;24711:1;24704:88;24811:4;24808:1;24801:15;24835:4;24832:1;24825:15;24852:180;24900:77;24897:1;24890:88;24997:4;24994:1;24987:15;25021:4;25018:1;25011:15;25038:143;25095:5;25126:6;25120:13;25111:22;;25142:33;25169:5;25142:33;:::i;:::-;25038:143;;;;:::o;25187:351::-;25257:6;25306:2;25294:9;25285:7;25281:23;25277:32;25274:119;;;25312:79;;:::i;:::-;25274:119;25432:1;25457:64;25513:7;25504:6;25493:9;25489:22;25457:64;:::i;:::-;25447:74;;25403:128;25187:351;;;;:::o;25544:85::-;25589:7;25618:5;25607:16;;25544:85;;;:::o;25635:158::-;25693:9;25726:61;25744:42;25753:32;25779:5;25753:32;:::i;:::-;25744:42;:::i;:::-;25726:61;:::i;:::-;25713:74;;25635:158;;;:::o;25799:147::-;25894:45;25933:5;25894:45;:::i;:::-;25889:3;25882:58;25799:147;;:::o;25952:114::-;26019:6;26053:5;26047:12;26037:22;;25952:114;;;:::o;26072:184::-;26171:11;26205:6;26200:3;26193:19;26245:4;26240:3;26236:14;26221:29;;26072:184;;;;:::o;26262:132::-;26329:4;26352:3;26344:11;;26382:4;26377:3;26373:14;26365:22;;26262:132;;;:::o;26400:108::-;26477:24;26495:5;26477:24;:::i;:::-;26472:3;26465:37;26400:108;;:::o;26514:179::-;26583:10;26604:46;26646:3;26638:6;26604:46;:::i;:::-;26682:4;26677:3;26673:14;26659:28;;26514:179;;;;:::o;26699:113::-;26769:4;26801;26796:3;26792:14;26784:22;;26699:113;;;:::o;26848:732::-;26967:3;26996:54;27044:5;26996:54;:::i;:::-;27066:86;27145:6;27140:3;27066:86;:::i;:::-;27059:93;;27176:56;27226:5;27176:56;:::i;:::-;27255:7;27286:1;27271:284;27296:6;27293:1;27290:13;27271:284;;;27372:6;27366:13;27399:63;27458:3;27443:13;27399:63;:::i;:::-;27392:70;;27485:60;27538:6;27485:60;:::i;:::-;27475:70;;27331:224;27318:1;27315;27311:9;27306:14;;27271:284;;;27275:14;27571:3;27564:10;;26972:608;;;26848:732;;;;:::o;27586:831::-;27849:4;27887:3;27876:9;27872:19;27864:27;;27901:71;27969:1;27958:9;27954:17;27945:6;27901:71;:::i;:::-;27982:80;28058:2;28047:9;28043:18;28034:6;27982:80;:::i;:::-;28109:9;28103:4;28099:20;28094:2;28083:9;28079:18;28072:48;28137:108;28240:4;28231:6;28137:108;:::i;:::-;28129:116;;28255:72;28323:2;28312:9;28308:18;28299:6;28255:72;:::i;:::-;28337:73;28405:3;28394:9;28390:19;28381:6;28337:73;:::i;:::-;27586:831;;;;;;;;:::o;28423:807::-;28672:4;28710:3;28699:9;28695:19;28687:27;;28724:71;28792:1;28781:9;28777:17;28768:6;28724:71;:::i;:::-;28805:72;28873:2;28862:9;28858:18;28849:6;28805:72;:::i;:::-;28887:80;28963:2;28952:9;28948:18;28939:6;28887:80;:::i;:::-;28977;29053:2;29042:9;29038:18;29029:6;28977:80;:::i;:::-;29067:73;29135:3;29124:9;29120:19;29111:6;29067:73;:::i;:::-;29150;29218:3;29207:9;29203:19;29194:6;29150:73;:::i;:::-;28423:807;;;;;;;;;:::o;29236:663::-;29324:6;29332;29340;29389:2;29377:9;29368:7;29364:23;29360:32;29357:119;;;29395:79;;:::i;:::-;29357:119;29515:1;29540:64;29596:7;29587:6;29576:9;29572:22;29540:64;:::i;:::-;29530:74;;29486:128;29653:2;29679:64;29735:7;29726:6;29715:9;29711:22;29679:64;:::i;:::-;29669:74;;29624:129;29792:2;29818:64;29874:7;29865:6;29854:9;29850:22;29818:64;:::i;:::-;29808:74;;29763:129;29236:663;;;;;:::o

Swarm Source

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