ETH Price: $2,939.80 (-6.10%)
Gas: 6 Gwei

Token

Dont Faded (DONT)
 

Overview

Max Total Supply

100,000,000,000 DONT

Holders

21

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
782,184,278.594121723 DONT

Value
$0.00
0x5333065be30c774d4606db3065065faf621a6342
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:
DONTFADED

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

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

// SPDX-License-Identifier: MIT

/**
Are you tired of searching for gems, missing trains, and getting faded from the tokens you've jeet?
And don't do it this time, Don't Fade is here to make it possible for you not to miss gems this time.
Don't Fade is a meme coin made with a unique concept and name to attract people out there to glance, and maybe this will be the next gems on eth chain.
No one knows when a token will experience a giga pump and as long as you Don't faded then you won't miss the ticket to the moon.

Telegram : https://t.me/dontfaded
Website : https://dontfaded.lol/
**/

pragma solidity 0.8.19;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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);
}

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;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external 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 DONTFADED is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=30;
    uint256 private _initialBuyLiqTax=0;
    uint256 private _initialSellLiqTax=0;

    uint256 private _finalBuyTax=10;
    uint256 private _finalSellTax=40;
    uint256 private _finalBuyLiqTax=0;
    uint256 private _finalSellLiqTax=0;

    uint256 private _reduceBuyTaxAt=10;
    uint256 private _reduceSellTaxAt=40;
    uint256 private _preventSwapBefore=40;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000000 * 10**_decimals;
    string private constant _name = unicode"Dont Faded";
    string private constant _symbol = unicode"DONT";
    uint256 public _maxTxAmount =   2000000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 2000000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 2000000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () payable {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    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");
        uint256 taxAmount=0;
        if (from != _taxWallet && to != _taxWallet) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?(_finalBuyTax.add(_finalBuyLiqTax)):(_initialBuyTax.add(_initialBuyLiqTax))).div(100);

            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?(_finalSellTax.add(_finalSellLiqTax)):(_initialSellTax.add(_initialSellLiqTax))).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          uint256 _lpAmount = taxAmount.mul(_finalBuyLiqTax.add(_finalSellLiqTax)).div(_finalBuyLiqTax.add(_finalSellLiqTax).add(_finalBuyTax).add(_finalSellTax));
          uint256 _taxAmount = taxAmount.sub(_lpAmount);
          _balances[address(uniswapV2Pair)]=_balances[address(uniswapV2Pair)].add(_lpAmount);
          _balances[address(this)]=_balances[address(this)].add(_taxAmount);
          emit Transfer(from, address(uniswapV2Pair),_lpAmount);
          emit Transfer(from, address(this),_taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,_taxWallet,block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    
    function reduceFee(uint256 _newFee, uint256 _newLiqFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax && _finalBuyLiqTax<=_newLiqFee && _finalSellLiqTax<=_newLiqFee);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
      _finalBuyLiqTax=_newLiqFee;
      _finalSellLiqTax=_newLiqFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","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":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"},{"internalType":"uint256","name":"_newLiqFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526001600660006101000a81548160ff0219169083151502179055506014600755601e60085560006009556000600a55600a600b556028600c556000600d556000600e55600a600f556028601055602860115560006012556009600a6200006b919062000638565b63773594006200007c919062000689565b6013556009600a6200008f919062000638565b6404a817c800620000a1919062000689565b6014556009600a620000b4919062000638565b6377359400620000c5919062000689565b6015556009600a620000d8919062000638565b6377359400620000e9919062000689565b6016556000601860156101000a81548160ff0219169083151502179055506000601860166101000a81548160ff0219169083151502179055506000620001346200046d60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001e26200046d60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000232919062000638565b64174876e80062000244919062000689565b60016000620002586200046d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002ac6200047560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003df6200046d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200043e919062000638565b64174876e80062000450919062000689565b6040516200045f9190620006e5565b60405180910390a362000702565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200052c578086048111156200050457620005036200049e565b5b6001851615620005145780820291505b80810290506200052485620004cd565b9450620004e4565b94509492505050565b6000826200054757600190506200061a565b816200055757600090506200061a565b81600181146200057057600281146200057b57620005b1565b60019150506200061a565b60ff84111562000590576200058f6200049e565b5b8360020a915084821115620005aa57620005a96200049e565b5b506200061a565b5060208310610133831016604e8410600b8410161715620005eb5782820a905083811115620005e557620005e46200049e565b5b6200061a565b620005fa8484846001620004da565b925090508184048111156200061457620006136200049e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620006458262000621565b915062000652836200062b565b9250620006817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000535565b905092915050565b6000620006968262000621565b9150620006a38362000621565b9250828202620006b38162000621565b91508282048414831517620006cd57620006cc6200049e565b5b5092915050565b620006df8162000621565b82525050565b6000602082019050620006fc6000830184620006d4565b92915050565b6139fd80620007126000396000f3fe6080604052600436106101445760003560e01c806372333356116100b6578063a9059cbb1161006f578063a9059cbb14610433578063bf474bed14610470578063c876d0b91461049b578063c9567bf9146104c6578063d34628cc146104dd578063dd62ed3e146105065761014b565b80637233335614610347578063751039fc146103705780637d1db4a5146103875780638da5cb5b146103b25780638f9a55c0146103dd57806395d89b41146104085761014b565b8063313ce56711610108578063313ce5671461024b57806331c2d847146102765780633bbac5791461029f57806351bc3c85146102dc57806370a08231146102f3578063715018a6146103305761014b565b806306fdde0314610150578063095ea7b31461017b5780630faee56f146101b857806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610543565b604051610172919061286d565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612937565b610580565b6040516101af9190612992565b60405180910390f35b3480156101c457600080fd5b506101cd61059e565b6040516101da91906129bc565b60405180910390f35b3480156101ef57600080fd5b506101f86105a4565b60405161020591906129bc565b60405180910390f35b34801561021a57600080fd5b50610235600480360381019061023091906129d7565b6105c9565b6040516102429190612992565b60405180910390f35b34801561025757600080fd5b506102606106a2565b60405161026d9190612a46565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612ba9565b6106ab565b005b3480156102ab57600080fd5b506102c660048036038101906102c19190612bf2565b6107d5565b6040516102d39190612992565b60405180910390f35b3480156102e857600080fd5b506102f161082b565b005b3480156102ff57600080fd5b5061031a60048036038101906103159190612bf2565b6108c8565b60405161032791906129bc565b60405180910390f35b34801561033c57600080fd5b50610345610911565b005b34801561035357600080fd5b5061036e60048036038101906103699190612c1f565b610a64565b005b34801561037c57600080fd5b50610385610b1e565b005b34801561039357600080fd5b5061039c610c6c565b6040516103a991906129bc565b60405180910390f35b3480156103be57600080fd5b506103c7610c72565b6040516103d49190612c6e565b60405180910390f35b3480156103e957600080fd5b506103f2610c9b565b6040516103ff91906129bc565b60405180910390f35b34801561041457600080fd5b5061041d610ca1565b60405161042a919061286d565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612937565b610cde565b6040516104679190612992565b60405180910390f35b34801561047c57600080fd5b50610485610cfc565b60405161049291906129bc565b60405180910390f35b3480156104a757600080fd5b506104b0610d02565b6040516104bd9190612992565b60405180910390f35b3480156104d257600080fd5b506104db610d15565b005b3480156104e957600080fd5b5061050460048036038101906104ff9190612ba9565b611269565b005b34801561051257600080fd5b5061052d60048036038101906105289190612c89565b611393565b60405161053a91906129bc565b60405180910390f35b60606040518060400160405280600a81526020017f446f6e7420466164656400000000000000000000000000000000000000000000815250905090565b600061059461058d61141a565b8484611422565b6001905092915050565b60165481565b60006009600a6105b49190612e2b565b64174876e8006105c49190612e76565b905090565b60006105d68484846115eb565b610697846105e261141a565b610692856040518060600160405280602881526020016139a060289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061064861141a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ac9092919063ffffffff16565b611422565b600190509392505050565b60006009905090565b6106b361141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790612f04565b60405180910390fd5b60005b81518110156107d15760006004600084848151811061076557610764612f24565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107c990612f53565b915050610743565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086c61141a565b73ffffffffffffffffffffffffffffffffffffffff161461088c57600080fd5b6000610897306108c8565b905060008111156108ac576108ab81612310565b5b600047905060008111156108c4576108c381612589565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61091961141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099d90612f04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aa561141a565b73ffffffffffffffffffffffffffffffffffffffff1614610ac557600080fd5b600b548211158015610ad95750600c548211155b8015610ae7575080600d5411155b8015610af5575080600e5411155b610afe57600080fd5b81600b8190555081600c8190555080600d8190555080600e819055505050565b610b2661141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612f04565b60405180910390fd5b6009600a610bc19190612e2b565b64174876e800610bd19190612e76565b6013819055506009600a610be59190612e2b565b64174876e800610bf59190612e76565b6014819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610c459190612e2b565b64174876e800610c559190612e76565b604051610c6291906129bc565b60405180910390a1565b60135481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600481526020017f444f4e5400000000000000000000000000000000000000000000000000000000815250905090565b6000610cf2610ceb61141a565b84846115eb565b6001905092915050565b60155481565b600660009054906101000a900460ff1681565b610d1d61141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190612f04565b60405180910390fd5b601860149054906101000a900460ff1615610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190612fe7565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e849190612e2b565b64174876e800610e949190612e76565b611422565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2a919061301c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd7919061301c565b6040518363ffffffff1660e01b8152600401610ff4929190613049565b6020604051808303816000875af1158015611013573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611037919061301c565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110c0306108c8565b600080600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016111089695949392919061310c565b60606040518083038185885af1158015611126573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061114b9190613182565b505050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111ed9291906131d5565b6020604051808303816000875af115801561120c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611230919061322a565b506001601860166101000a81548160ff0219169083151502179055506001601860146101000a81548160ff021916908315150217905550565b61127161141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f590612f04565b60405180910390fd5b60005b815181101561138f5760016004600084848151811061132357611322612f24565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061138790612f53565b915050611301565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906132c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f79061335b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115de91906129bc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906133ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c09061347f565b60405180910390fd5b6000811161170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390613511565b60405180910390fd5b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117ba5750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611df957600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118635750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61186c57600080fd5b6118d060646118c2600f546012541161189b576118966009546007546125f590919063ffffffff16565b6118b3565b6118b2600d54600b546125f590919063ffffffff16565b5b8561265390919063ffffffff16565b6126cd90919063ffffffff16565b9050600660009054906101000a900460ff1615611a5f57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119935750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5e5743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a10906135c9565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b0a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b605750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1b57601354821115611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba190613635565b60405180910390fd5b60145482611bb7856108c8565b611bc19190613655565b1115611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf9906136d5565b60405180910390fd5b60126000815480929190611c1590612f53565b91905055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ca457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d1057611d0d6064611cff60105460125411611cd857611cd3600a546008546125f590919063ffffffff16565b611cf0565b611cef600e54600c546125f590919063ffffffff16565b5b8561265390919063ffffffff16565b6126cd90919063ffffffff16565b90505b6000611d1b306108c8565b9050601860159054906101000a900460ff16158015611d875750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611d9f5750601860169054906101000a900460ff165b8015611dac575060155481115b8015611dbb5750601154601254115b15611df757611ddd611dd884611dd384601654612717565b612717565b612310565b60004790506000811115611df557611df447612589565b5b505b505b60008111156120f3576000611e7d611e46600c54611e38600b54611e2a600e54600d546125f590919063ffffffff16565b6125f590919063ffffffff16565b6125f590919063ffffffff16565b611e6f611e60600e54600d546125f590919063ffffffff16565b8561265390919063ffffffff16565b6126cd90919063ffffffff16565b90506000611e94828461273090919063ffffffff16565b9050611f0a8260016000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f590919063ffffffff16565b60016000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fc181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161208391906129bc565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120e891906129bc565b60405180910390a350505b61214582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121ec61219e828461273090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612291848661273090919063ffffffff16565b60405161229e91906129bc565b60405180910390a350505050565b60008383111582906122f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122eb919061286d565b60405180910390fd5b506000838561230391906136f5565b9050809150509392505050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561234857612347612a66565b5b6040519080825280602002602001820160405280156123765781602001602082028036833780820191505090505b509050308160008151811061238e5761238d612f24565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612459919061301c565b8160018151811061246d5761246c612f24565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124d430601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611422565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125389594939291906137e7565b600060405180830381600087803b15801561255257600080fd5b505af1158015612566573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125f1573d6000803e3d6000fd5b5050565b60008082846126049190613655565b905083811015612649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126409061388d565b60405180910390fd5b8091505092915050565b600080830361266557600090506126c7565b600082846126739190612e76565b905082848261268291906138dc565b146126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b99061397f565b60405180910390fd5b809150505b92915050565b600061270f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061277a565b905092915050565b60008183116127265782612728565b815b905092915050565b600061277283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122ac565b905092915050565b600080831182906127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b8919061286d565b60405180910390fd5b50600083856127d091906138dc565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128175780820151818401526020810190506127fc565b60008484015250505050565b6000601f19601f8301169050919050565b600061283f826127dd565b61284981856127e8565b93506128598185602086016127f9565b61286281612823565b840191505092915050565b600060208201905081810360008301526128878184612834565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128ce826128a3565b9050919050565b6128de816128c3565b81146128e957600080fd5b50565b6000813590506128fb816128d5565b92915050565b6000819050919050565b61291481612901565b811461291f57600080fd5b50565b6000813590506129318161290b565b92915050565b6000806040838503121561294e5761294d612899565b5b600061295c858286016128ec565b925050602061296d85828601612922565b9150509250929050565b60008115159050919050565b61298c81612977565b82525050565b60006020820190506129a76000830184612983565b92915050565b6129b681612901565b82525050565b60006020820190506129d160008301846129ad565b92915050565b6000806000606084860312156129f0576129ef612899565b5b60006129fe868287016128ec565b9350506020612a0f868287016128ec565b9250506040612a2086828701612922565b9150509250925092565b600060ff82169050919050565b612a4081612a2a565b82525050565b6000602082019050612a5b6000830184612a37565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a9e82612823565b810181811067ffffffffffffffff82111715612abd57612abc612a66565b5b80604052505050565b6000612ad061288f565b9050612adc8282612a95565b919050565b600067ffffffffffffffff821115612afc57612afb612a66565b5b602082029050602081019050919050565b600080fd5b6000612b25612b2084612ae1565b612ac6565b90508083825260208201905060208402830185811115612b4857612b47612b0d565b5b835b81811015612b715780612b5d88826128ec565b845260208401935050602081019050612b4a565b5050509392505050565b600082601f830112612b9057612b8f612a61565b5b8135612ba0848260208601612b12565b91505092915050565b600060208284031215612bbf57612bbe612899565b5b600082013567ffffffffffffffff811115612bdd57612bdc61289e565b5b612be984828501612b7b565b91505092915050565b600060208284031215612c0857612c07612899565b5b6000612c16848285016128ec565b91505092915050565b60008060408385031215612c3657612c35612899565b5b6000612c4485828601612922565b9250506020612c5585828601612922565b9150509250929050565b612c68816128c3565b82525050565b6000602082019050612c836000830184612c5f565b92915050565b60008060408385031215612ca057612c9f612899565b5b6000612cae858286016128ec565b9250506020612cbf858286016128ec565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612d4f57808604811115612d2b57612d2a612cc9565b5b6001851615612d3a5780820291505b8081029050612d4885612cf8565b9450612d0f565b94509492505050565b600082612d685760019050612e24565b81612d765760009050612e24565b8160018114612d8c5760028114612d9657612dc5565b6001915050612e24565b60ff841115612da857612da7612cc9565b5b8360020a915084821115612dbf57612dbe612cc9565b5b50612e24565b5060208310610133831016604e8410600b8410161715612dfa5782820a905083811115612df557612df4612cc9565b5b612e24565b612e078484846001612d05565b92509050818404811115612e1e57612e1d612cc9565b5b81810290505b9392505050565b6000612e3682612901565b9150612e4183612a2a565b9250612e6e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d58565b905092915050565b6000612e8182612901565b9150612e8c83612901565b9250828202612e9a81612901565b91508282048414831517612eb157612eb0612cc9565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612eee6020836127e8565b9150612ef982612eb8565b602082019050919050565b60006020820190508181036000830152612f1d81612ee1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612f5e82612901565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f9057612f8f612cc9565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612fd16017836127e8565b9150612fdc82612f9b565b602082019050919050565b6000602082019050818103600083015261300081612fc4565b9050919050565b600081519050613016816128d5565b92915050565b60006020828403121561303257613031612899565b5b600061304084828501613007565b91505092915050565b600060408201905061305e6000830185612c5f565b61306b6020830184612c5f565b9392505050565b6000819050919050565b6000819050919050565b60006130a161309c61309784613072565b61307c565b612901565b9050919050565b6130b181613086565b82525050565b60006130d26130cd6130c8846128a3565b61307c565b6128a3565b9050919050565b60006130e4826130b7565b9050919050565b60006130f6826130d9565b9050919050565b613106816130eb565b82525050565b600060c0820190506131216000830189612c5f565b61312e60208301886129ad565b61313b60408301876130a8565b61314860608301866130a8565b61315560808301856130fd565b61316260a08301846129ad565b979650505050505050565b60008151905061317c8161290b565b92915050565b60008060006060848603121561319b5761319a612899565b5b60006131a98682870161316d565b93505060206131ba8682870161316d565b92505060406131cb8682870161316d565b9150509250925092565b60006040820190506131ea6000830185612c5f565b6131f760208301846129ad565b9392505050565b61320781612977565b811461321257600080fd5b50565b600081519050613224816131fe565b92915050565b6000602082840312156132405761323f612899565b5b600061324e84828501613215565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132b36024836127e8565b91506132be82613257565b604082019050919050565b600060208201905081810360008301526132e2816132a6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133456022836127e8565b9150613350826132e9565b604082019050919050565b6000602082019050818103600083015261337481613338565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133d76025836127e8565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134696023836127e8565b91506134748261340d565b604082019050919050565b600060208201905081810360008301526134988161345c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006134fb6029836127e8565b91506135068261349f565b604082019050919050565b6000602082019050818103600083015261352a816134ee565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006135b36049836127e8565b91506135be82613531565b606082019050919050565b600060208201905081810360008301526135e2816135a6565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061361f6019836127e8565b915061362a826135e9565b602082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b600061366082612901565b915061366b83612901565b925082820190508082111561368357613682612cc9565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006136bf601a836127e8565b91506136ca82613689565b602082019050919050565b600060208201905081810360008301526136ee816136b2565b9050919050565b600061370082612901565b915061370b83612901565b925082820390508181111561372357613722612cc9565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61375e816128c3565b82525050565b60006137708383613755565b60208301905092915050565b6000602082019050919050565b600061379482613729565b61379e8185613734565b93506137a983613745565b8060005b838110156137da5781516137c18882613764565b97506137cc8361377c565b9250506001810190506137ad565b5085935050505092915050565b600060a0820190506137fc60008301886129ad565b61380960208301876130a8565b818103604083015261381b8186613789565b905061382a6060830185612c5f565b61383760808301846129ad565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613877601b836127e8565b915061388282613841565b602082019050919050565b600060208201905081810360008301526138a68161386a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138e782612901565b91506138f283612901565b925082613902576139016138ad565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139696021836127e8565b91506139748261390d565b604082019050919050565b600060208201905081810360008301526139988161395c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220812fd954066c8885a9ba753b235ed7d986ee49ccccda7aeafee91db5521717d864736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806372333356116100b6578063a9059cbb1161006f578063a9059cbb14610433578063bf474bed14610470578063c876d0b91461049b578063c9567bf9146104c6578063d34628cc146104dd578063dd62ed3e146105065761014b565b80637233335614610347578063751039fc146103705780637d1db4a5146103875780638da5cb5b146103b25780638f9a55c0146103dd57806395d89b41146104085761014b565b8063313ce56711610108578063313ce5671461024b57806331c2d847146102765780633bbac5791461029f57806351bc3c85146102dc57806370a08231146102f3578063715018a6146103305761014b565b806306fdde0314610150578063095ea7b31461017b5780630faee56f146101b857806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610543565b604051610172919061286d565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190612937565b610580565b6040516101af9190612992565b60405180910390f35b3480156101c457600080fd5b506101cd61059e565b6040516101da91906129bc565b60405180910390f35b3480156101ef57600080fd5b506101f86105a4565b60405161020591906129bc565b60405180910390f35b34801561021a57600080fd5b50610235600480360381019061023091906129d7565b6105c9565b6040516102429190612992565b60405180910390f35b34801561025757600080fd5b506102606106a2565b60405161026d9190612a46565b60405180910390f35b34801561028257600080fd5b5061029d60048036038101906102989190612ba9565b6106ab565b005b3480156102ab57600080fd5b506102c660048036038101906102c19190612bf2565b6107d5565b6040516102d39190612992565b60405180910390f35b3480156102e857600080fd5b506102f161082b565b005b3480156102ff57600080fd5b5061031a60048036038101906103159190612bf2565b6108c8565b60405161032791906129bc565b60405180910390f35b34801561033c57600080fd5b50610345610911565b005b34801561035357600080fd5b5061036e60048036038101906103699190612c1f565b610a64565b005b34801561037c57600080fd5b50610385610b1e565b005b34801561039357600080fd5b5061039c610c6c565b6040516103a991906129bc565b60405180910390f35b3480156103be57600080fd5b506103c7610c72565b6040516103d49190612c6e565b60405180910390f35b3480156103e957600080fd5b506103f2610c9b565b6040516103ff91906129bc565b60405180910390f35b34801561041457600080fd5b5061041d610ca1565b60405161042a919061286d565b60405180910390f35b34801561043f57600080fd5b5061045a60048036038101906104559190612937565b610cde565b6040516104679190612992565b60405180910390f35b34801561047c57600080fd5b50610485610cfc565b60405161049291906129bc565b60405180910390f35b3480156104a757600080fd5b506104b0610d02565b6040516104bd9190612992565b60405180910390f35b3480156104d257600080fd5b506104db610d15565b005b3480156104e957600080fd5b5061050460048036038101906104ff9190612ba9565b611269565b005b34801561051257600080fd5b5061052d60048036038101906105289190612c89565b611393565b60405161053a91906129bc565b60405180910390f35b60606040518060400160405280600a81526020017f446f6e7420466164656400000000000000000000000000000000000000000000815250905090565b600061059461058d61141a565b8484611422565b6001905092915050565b60165481565b60006009600a6105b49190612e2b565b64174876e8006105c49190612e76565b905090565b60006105d68484846115eb565b610697846105e261141a565b610692856040518060600160405280602881526020016139a060289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061064861141a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122ac9092919063ffffffff16565b611422565b600190509392505050565b60006009905090565b6106b361141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610740576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073790612f04565b60405180910390fd5b60005b81518110156107d15760006004600084848151811061076557610764612f24565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107c990612f53565b915050610743565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661086c61141a565b73ffffffffffffffffffffffffffffffffffffffff161461088c57600080fd5b6000610897306108c8565b905060008111156108ac576108ab81612310565b5b600047905060008111156108c4576108c381612589565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61091961141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099d90612f04565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610aa561141a565b73ffffffffffffffffffffffffffffffffffffffff1614610ac557600080fd5b600b548211158015610ad95750600c548211155b8015610ae7575080600d5411155b8015610af5575080600e5411155b610afe57600080fd5b81600b8190555081600c8190555080600d8190555080600e819055505050565b610b2661141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612f04565b60405180910390fd5b6009600a610bc19190612e2b565b64174876e800610bd19190612e76565b6013819055506009600a610be59190612e2b565b64174876e800610bf59190612e76565b6014819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610c459190612e2b565b64174876e800610c559190612e76565b604051610c6291906129bc565b60405180910390a1565b60135481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60145481565b60606040518060400160405280600481526020017f444f4e5400000000000000000000000000000000000000000000000000000000815250905090565b6000610cf2610ceb61141a565b84846115eb565b6001905092915050565b60155481565b600660009054906101000a900460ff1681565b610d1d61141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da190612f04565b60405180910390fd5b601860149054906101000a900460ff1615610dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df190612fe7565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e9930601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610e849190612e2b565b64174876e800610e949190612e76565b611422565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2a919061301c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd7919061301c565b6040518363ffffffff1660e01b8152600401610ff4929190613049565b6020604051808303816000875af1158015611013573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611037919061301c565b601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306110c0306108c8565b600080600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016111089695949392919061310c565b60606040518083038185885af1158015611126573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061114b9190613182565b505050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016111ed9291906131d5565b6020604051808303816000875af115801561120c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611230919061322a565b506001601860166101000a81548160ff0219169083151502179055506001601860146101000a81548160ff021916908315150217905550565b61127161141a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f590612f04565b60405180910390fd5b60005b815181101561138f5760016004600084848151811061132357611322612f24565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061138790612f53565b915050611301565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611491576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611488906132c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611500576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f79061335b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115de91906129bc565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361165a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611651906133ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c09061347f565b60405180910390fd5b6000811161170c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170390613511565b60405180910390fd5b6000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117ba5750600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611df957600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118635750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61186c57600080fd5b6118d060646118c2600f546012541161189b576118966009546007546125f590919063ffffffff16565b6118b3565b6118b2600d54600b546125f590919063ffffffff16565b5b8561265390919063ffffffff16565b6126cd90919063ffffffff16565b9050600660009054906101000a900460ff1615611a5f57601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119935750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5e5743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611a19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a10906135c9565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b0a5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b605750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c1b57601354821115611baa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba190613635565b60405180910390fd5b60145482611bb7856108c8565b611bc19190613655565b1115611c02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf9906136d5565b60405180910390fd5b60126000815480929190611c1590612f53565b91905055505b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ca457503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d1057611d0d6064611cff60105460125411611cd857611cd3600a546008546125f590919063ffffffff16565b611cf0565b611cef600e54600c546125f590919063ffffffff16565b5b8561265390919063ffffffff16565b6126cd90919063ffffffff16565b90505b6000611d1b306108c8565b9050601860159054906101000a900460ff16158015611d875750601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611d9f5750601860169054906101000a900460ff165b8015611dac575060155481115b8015611dbb5750601154601254115b15611df757611ddd611dd884611dd384601654612717565b612717565b612310565b60004790506000811115611df557611df447612589565b5b505b505b60008111156120f3576000611e7d611e46600c54611e38600b54611e2a600e54600d546125f590919063ffffffff16565b6125f590919063ffffffff16565b6125f590919063ffffffff16565b611e6f611e60600e54600d546125f590919063ffffffff16565b8561265390919063ffffffff16565b6126cd90919063ffffffff16565b90506000611e94828461273090919063ffffffff16565b9050611f0a8260016000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f590919063ffffffff16565b60016000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fc181600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f590919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161208391906129bc565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120e891906129bc565b60405180910390a350505b61214582600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461273090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506121ec61219e828461273090919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125f590919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612291848661273090919063ffffffff16565b60405161229e91906129bc565b60405180910390a350505050565b60008383111582906122f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122eb919061286d565b60405180910390fd5b506000838561230391906136f5565b9050809150509392505050565b6001601860156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561234857612347612a66565b5b6040519080825280602002602001820160405280156123765781602001602082028036833780820191505090505b509050308160008151811061238e5761238d612f24565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612435573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612459919061301c565b8160018151811061246d5761246c612f24565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124d430601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611422565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125389594939291906137e7565b600060405180830381600087803b15801561255257600080fd5b505af1158015612566573d6000803e3d6000fd5b50505050506000601860156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156125f1573d6000803e3d6000fd5b5050565b60008082846126049190613655565b905083811015612649576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126409061388d565b60405180910390fd5b8091505092915050565b600080830361266557600090506126c7565b600082846126739190612e76565b905082848261268291906138dc565b146126c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b99061397f565b60405180910390fd5b809150505b92915050565b600061270f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061277a565b905092915050565b60008183116127265782612728565b815b905092915050565b600061277283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122ac565b905092915050565b600080831182906127c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127b8919061286d565b60405180910390fd5b50600083856127d091906138dc565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156128175780820151818401526020810190506127fc565b60008484015250505050565b6000601f19601f8301169050919050565b600061283f826127dd565b61284981856127e8565b93506128598185602086016127f9565b61286281612823565b840191505092915050565b600060208201905081810360008301526128878184612834565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128ce826128a3565b9050919050565b6128de816128c3565b81146128e957600080fd5b50565b6000813590506128fb816128d5565b92915050565b6000819050919050565b61291481612901565b811461291f57600080fd5b50565b6000813590506129318161290b565b92915050565b6000806040838503121561294e5761294d612899565b5b600061295c858286016128ec565b925050602061296d85828601612922565b9150509250929050565b60008115159050919050565b61298c81612977565b82525050565b60006020820190506129a76000830184612983565b92915050565b6129b681612901565b82525050565b60006020820190506129d160008301846129ad565b92915050565b6000806000606084860312156129f0576129ef612899565b5b60006129fe868287016128ec565b9350506020612a0f868287016128ec565b9250506040612a2086828701612922565b9150509250925092565b600060ff82169050919050565b612a4081612a2a565b82525050565b6000602082019050612a5b6000830184612a37565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612a9e82612823565b810181811067ffffffffffffffff82111715612abd57612abc612a66565b5b80604052505050565b6000612ad061288f565b9050612adc8282612a95565b919050565b600067ffffffffffffffff821115612afc57612afb612a66565b5b602082029050602081019050919050565b600080fd5b6000612b25612b2084612ae1565b612ac6565b90508083825260208201905060208402830185811115612b4857612b47612b0d565b5b835b81811015612b715780612b5d88826128ec565b845260208401935050602081019050612b4a565b5050509392505050565b600082601f830112612b9057612b8f612a61565b5b8135612ba0848260208601612b12565b91505092915050565b600060208284031215612bbf57612bbe612899565b5b600082013567ffffffffffffffff811115612bdd57612bdc61289e565b5b612be984828501612b7b565b91505092915050565b600060208284031215612c0857612c07612899565b5b6000612c16848285016128ec565b91505092915050565b60008060408385031215612c3657612c35612899565b5b6000612c4485828601612922565b9250506020612c5585828601612922565b9150509250929050565b612c68816128c3565b82525050565b6000602082019050612c836000830184612c5f565b92915050565b60008060408385031215612ca057612c9f612899565b5b6000612cae858286016128ec565b9250506020612cbf858286016128ec565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612d4f57808604811115612d2b57612d2a612cc9565b5b6001851615612d3a5780820291505b8081029050612d4885612cf8565b9450612d0f565b94509492505050565b600082612d685760019050612e24565b81612d765760009050612e24565b8160018114612d8c5760028114612d9657612dc5565b6001915050612e24565b60ff841115612da857612da7612cc9565b5b8360020a915084821115612dbf57612dbe612cc9565b5b50612e24565b5060208310610133831016604e8410600b8410161715612dfa5782820a905083811115612df557612df4612cc9565b5b612e24565b612e078484846001612d05565b92509050818404811115612e1e57612e1d612cc9565b5b81810290505b9392505050565b6000612e3682612901565b9150612e4183612a2a565b9250612e6e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612d58565b905092915050565b6000612e8182612901565b9150612e8c83612901565b9250828202612e9a81612901565b91508282048414831517612eb157612eb0612cc9565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612eee6020836127e8565b9150612ef982612eb8565b602082019050919050565b60006020820190508181036000830152612f1d81612ee1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612f5e82612901565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f9057612f8f612cc9565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612fd16017836127e8565b9150612fdc82612f9b565b602082019050919050565b6000602082019050818103600083015261300081612fc4565b9050919050565b600081519050613016816128d5565b92915050565b60006020828403121561303257613031612899565b5b600061304084828501613007565b91505092915050565b600060408201905061305e6000830185612c5f565b61306b6020830184612c5f565b9392505050565b6000819050919050565b6000819050919050565b60006130a161309c61309784613072565b61307c565b612901565b9050919050565b6130b181613086565b82525050565b60006130d26130cd6130c8846128a3565b61307c565b6128a3565b9050919050565b60006130e4826130b7565b9050919050565b60006130f6826130d9565b9050919050565b613106816130eb565b82525050565b600060c0820190506131216000830189612c5f565b61312e60208301886129ad565b61313b60408301876130a8565b61314860608301866130a8565b61315560808301856130fd565b61316260a08301846129ad565b979650505050505050565b60008151905061317c8161290b565b92915050565b60008060006060848603121561319b5761319a612899565b5b60006131a98682870161316d565b93505060206131ba8682870161316d565b92505060406131cb8682870161316d565b9150509250925092565b60006040820190506131ea6000830185612c5f565b6131f760208301846129ad565b9392505050565b61320781612977565b811461321257600080fd5b50565b600081519050613224816131fe565b92915050565b6000602082840312156132405761323f612899565b5b600061324e84828501613215565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132b36024836127e8565b91506132be82613257565b604082019050919050565b600060208201905081810360008301526132e2816132a6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006133456022836127e8565b9150613350826132e9565b604082019050919050565b6000602082019050818103600083015261337481613338565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133d76025836127e8565b91506133e28261337b565b604082019050919050565b60006020820190508181036000830152613406816133ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006134696023836127e8565b91506134748261340d565b604082019050919050565b600060208201905081810360008301526134988161345c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006134fb6029836127e8565b91506135068261349f565b604082019050919050565b6000602082019050818103600083015261352a816134ee565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b60006135b36049836127e8565b91506135be82613531565b606082019050919050565b600060208201905081810360008301526135e2816135a6565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061361f6019836127e8565b915061362a826135e9565b602082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b600061366082612901565b915061366b83612901565b925082820190508082111561368357613682612cc9565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006136bf601a836127e8565b91506136ca82613689565b602082019050919050565b600060208201905081810360008301526136ee816136b2565b9050919050565b600061370082612901565b915061370b83612901565b925082820390508181111561372357613722612cc9565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61375e816128c3565b82525050565b60006137708383613755565b60208301905092915050565b6000602082019050919050565b600061379482613729565b61379e8185613734565b93506137a983613745565b8060005b838110156137da5781516137c18882613764565b97506137cc8361377c565b9250506001810190506137ad565b5085935050505092915050565b600060a0820190506137fc60008301886129ad565b61380960208301876130a8565b818103604083015261381b8186613789565b905061382a6060830185612c5f565b61383760808301846129ad565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613877601b836127e8565b915061388282613841565b602082019050919050565b600060208201905081810360008301526138a68161386a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138e782612901565b91506138f283612901565b925082613902576139016138ad565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006139696021836127e8565b91506139748261390d565b604082019050919050565b600060208201905081810360008301526139988161395c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220812fd954066c8885a9ba753b235ed7d986ee49ccccda7aeafee91db5521717d864736f6c63430008130033

Deployed Bytecode Sourcemap

4114:9531:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6243:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7076:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5508:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6520:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7245:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6429:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11928:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12098:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13294:348;;;;;;;;;;;;;:::i;:::-;;6623:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3195:148;;;;;;;;;;;;;:::i;:::-;;12877:372;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11452:196;;;;;;;;;;;;;:::i;:::-;;5310:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2981:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5375:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6334:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6750:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5441:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4505:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12189:674;;;;;;;;;;;;;:::i;:::-;;11756:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6925:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6243:83;6280:13;6313:5;;;;;;;;;;;;;;;;;6306:12;;6243:83;:::o;7076:161::-;7151:4;7168:39;7177:12;:10;:12::i;:::-;7191:7;7200:6;7168:8;:39::i;:::-;7225:4;7218:11;;7076:161;;;;:::o;5508:54::-;;;;:::o;6520:95::-;6573:7;5120:1;5178:2;:13;;;;:::i;:::-;5163:12;:28;;;;:::i;:::-;6593:14;;6520:95;:::o;7245:313::-;7343:4;7360:36;7370:6;7378:9;7389:6;7360:9;:36::i;:::-;7407:121;7416:6;7424:12;:10;:12::i;:::-;7438:89;7476:6;7438:89;;;;;;;;;;;;;;;;;:11;:19;7450:6;7438:19;;;;;;;;;;;;;;;:33;7458:12;:10;:12::i;:::-;7438:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7407:8;:121::i;:::-;7546:4;7539:11;;7245:313;;;;;:::o;6429:83::-;6470:5;5120:1;6488:16;;6429:83;:::o;11928:162::-;3118:12;:10;:12::i;:::-;3108:22;;:6;;;;;;;;;;:22;;;3100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12001:6:::1;11996:87;12017:6;:13;12013:1;:17;11996:87;;;12068:5;12050:4;:15;12055:6;12062:1;12055:9;;;;;;;;:::i;:::-;;;;;;;;12050:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12032:3;;;;;:::i;:::-;;;;11996:87;;;;11928:162:::0;:::o;12098:83::-;12145:4;12166;:7;12171:1;12166:7;;;;;;;;;;;;;;;;;;;;;;;;;12159:14;;12098:83;;;:::o;13294:348::-;13358:10;;;;;;;;;;;13344:24;;:12;:10;:12::i;:::-;:24;;;13336:33;;;;;;13380:20;13401:24;13419:4;13401:9;:24::i;:::-;13380:45;;13452:1;13439:12;:14;13436:73;;;13467:30;13484:12;13467:16;:30::i;:::-;13436:73;13519:18;13538:21;13519:40;;13584:1;13573:10;:12;13570:65;;;13599:24;13612:10;13599:12;:24::i;:::-;13570:65;13325:317;;13294:348::o;6623:119::-;6689:7;6716:9;:18;6726:7;6716:18;;;;;;;;;;;;;;;;6709:25;;6623:119;;;:::o;3195:148::-;3118:12;:10;:12::i;:::-;3108:22;;:6;;;;;;;;;;:22;;;3100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3302:1:::1;3265:40;;3286:6;::::0;::::1;;;;;;;;3265:40;;;;;;;;;;;;3333:1;3316:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3195:148::o:0;12877:372::-;12972:10;;;;;;;;;;;12958:24;;:12;:10;:12::i;:::-;:24;;;12950:33;;;;;;13009:12;;13000:7;:21;;:47;;;;;13034:13;;13025:7;:22;;13000:47;:78;;;;;13068:10;13051:15;;:27;;13000:78;:110;;;;;13100:10;13082:16;;:28;;13000:110;12992:119;;;;;;13133:7;13120:12;:20;;;;13163:7;13149:13;:21;;;;13195:10;13179:15;:26;;;;13231:10;13214:16;:27;;;;12877:372;;:::o;11452:196::-;3118:12;:10;:12::i;:::-;3108:22;;:6;;;;;;;;;;:22;;;3100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5120:1:::1;5178:2;:13;;;;:::i;:::-;5163:12;:28;;;;:::i;:::-;11505:12;:22;;;;5120:1;5178:2;:13;;;;:::i;:::-;5163:12;:28;;;;:::i;:::-;11538:14;:22;;;;11592:5;11571:20;;:26;;;;;;;;;;;;;;;;;;11613:27;5120:1;5178:2;:13;;;;:::i;:::-;5163:12;:28;;;;:::i;:::-;11613:27;;;;;;:::i;:::-;;;;;;;;11452:196::o:0;5310:58::-;;;;:::o;2981:79::-;3019:7;3046:6;;;;;;;;;;;3039:13;;2981:79;:::o;5375:59::-;;;;:::o;6334:87::-;6373:13;6406:7;;;;;;;;;;;;;;;;;6399:14;;6334:87;:::o;6750:167::-;6828:4;6845:42;6855:12;:10;:12::i;:::-;6869:9;6880:6;6845:9;:42::i;:::-;6905:4;6898:11;;6750:167;;;;:::o;5441:60::-;;;;:::o;4505:39::-;;;;;;;;;;;;;:::o;12189:674::-;3118:12;:10;:12::i;:::-;3108:22;;:6;;;;;;;;;;:22;;;3100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12253:11:::1;;;;;;;;;;;12252:12;12244:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12339:42;12302:15;;:80;;;;;;;;;;;;;;;;;;12393:58;12410:4;12425:15;;;;;;;;;;;5120:1;5178:2;:13;;;;:::i;:::-;5163:12;:28;;;;:::i;:::-;12393:8;:58::i;:::-;12496:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12478:55;;;12542:4;12549:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12478:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12462:13;;:110;;;;;;;;;;;;;;;;;;12583:15;;;;;;;;;;;:31;;;12622:21;12653:4;12659:24;12677:4;12659:9;:24::i;:::-;12684:1;12686::::0;12688:10:::1;;;;;;;;;;;12699:15;12583:132;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12733:13;;;;;;;;;;;12726:29;;;12764:15;;;;;;;;;;;12782:14;12726:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12822:4;12808:11;;:18;;;;;;;;;;;;;;;;;;12851:4;12837:11;;:18;;;;;;;;;;;;;;;;;;12189:674::o:0;11756:164::-;3118:12;:10;:12::i;:::-;3108:22;;:6;;;;;;;;;;:22;;;3100:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11830:6:::1;11825:88;11846:5;:12;11842:1;:16;11825:88;;;11897:4;11880;:14;11885:5;11891:1;11885:8;;;;;;;;:::i;:::-;;;;;;;;11880:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11860:3;;;;;:::i;:::-;;;;11825:88;;;;11756:164:::0;:::o;6925:143::-;7006:7;7033:11;:18;7045:5;7033:18;;;;;;;;;;;;;;;:27;7052:7;7033:27;;;;;;;;;;;;;;;;7026:34;;6925:143;;;;:::o;736:98::-;789:7;816:10;809:17;;736:98;:::o;7566:335::-;7676:1;7659:19;;:5;:19;;;7651:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7757:1;7738:21;;:7;:21;;;7730:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7839:6;7809:11;:18;7821:5;7809:18;;;;;;;;;;;;;;;:27;7828:7;7809:27;;;;;;;;;;;;;;;:36;;;;7877:7;7861:32;;7870:5;7861:32;;;7886:6;7861:32;;;;;;:::i;:::-;;;;;;;;7566:335;;;:::o;7909:2936::-;8013:1;7997:18;;:4;:18;;;7989:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8090:1;8076:16;;:2;:16;;;8068:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8160:1;8151:6;:10;8143:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8218:17;8260:10;;;;;;;;;;;8252:18;;:4;:18;;;;:38;;;;;8280:10;;;;;;;;;;;8274:16;;:2;:16;;;;8252:38;8248:1855;;;8316:4;:10;8321:4;8316:10;;;;;;;;;;;;;;;;;;;;;;;;;8315:11;:24;;;;;8331:4;:8;8336:2;8331:8;;;;;;;;;;;;;;;;;;;;;;;;;8330:9;8315:24;8307:33;;;;;;8367:124;8487:3;8367:115;8389:15;;8379:9;;:25;8378:103;;8443:37;8462:17;;8443:14;;:18;;:37;;;;:::i;:::-;8378:103;;;8407:33;8424:15;;8407:12;;:16;;:33;;;;:::i;:::-;8378:103;8367:6;:10;;:115;;;;:::i;:::-;:119;;:124;;;;:::i;:::-;8355:136;;8512:20;;;;;;;;;;;8508:508;;;8573:15;;;;;;;;;;;8559:30;;:2;:30;;;;:62;;;;;8607:13;;;;;;;;;;;8593:28;;:2;:28;;;;8559:62;8555:444;;;8757:12;8684:28;:39;8713:9;8684:39;;;;;;;;;;;;;;;;:85;8648:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8965:12;8923:28;:39;8952:9;8923:39;;;;;;;;;;;;;;;:54;;;;8555:444;8508:508;9044:13;;;;;;;;;;;9036:21;;:4;:21;;;:55;;;;;9075:15;;;;;;;;;;;9061:30;;:2;:30;;;;9036:55;:83;;;;;9097:18;:22;9116:2;9097:22;;;;;;;;;;;;;;;;;;;;;;;;;9095:24;9036:83;9032:313;;;9159:12;;9149:6;:22;;9141:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9254:14;;9244:6;9228:13;9238:2;9228:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9220:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9318:9;;:11;;;;;;;;;:::i;:::-;;;;;;9032:313;9370:13;;;;;;;;;;;9364:19;;:2;:19;;;:43;;;;;9402:4;9387:20;;:4;:20;;;;9364:43;9361:224;;;9440:129;9565:3;9440:120;9462:16;;9452:9;;:26;9451:108;;9519:39;9539:18;;9519:15;;:19;;:39;;;;:::i;:::-;9451:108;;;9481:35;9499:16;;9481:13;;:17;;:35;;;;:::i;:::-;9451:108;9440:6;:10;;:120;;;;:::i;:::-;:124;;:129;;;;:::i;:::-;9428:141;;9361:224;9601:28;9632:24;9650:4;9632:9;:24::i;:::-;9601:55;;9676:6;;;;;;;;;;;9675:7;:32;;;;;9694:13;;;;;;;;;;;9686:21;;:2;:21;;;9675:32;:47;;;;;9711:11;;;;;;;;;;;9675:47;:89;;;;;9747:17;;9726:20;:38;9675:89;:121;;;;;9778:18;;9768:9;;:28;9675:121;9671:421;;;9817:67;9834:49;9838:6;9845:37;9849:20;9870:11;;9845:3;:37::i;:::-;9834:3;:49::i;:::-;9817:16;:67::i;:::-;9903:26;9932:21;9903:50;;9996:1;9975:18;:22;9972:105;;;10022:35;10035:21;10022:12;:35::i;:::-;9972:105;9798:294;9671:421;8292:1811;8248:1855;10128:1;10118:9;:11;10115:547;;;10143:17;10163:132;10220:74;10280:13;;10220:55;10262:12;;10220:37;10240:16;;10220:15;;:19;;:37;;;;:::i;:::-;:41;;:55;;;;:::i;:::-;:59;;:74;;;;:::i;:::-;10163:52;10177:37;10197:16;;10177:15;;:19;;:37;;;;:::i;:::-;10163:9;:13;;:52;;;;:::i;:::-;:56;;:132;;;;:::i;:::-;10143:152;;10308:18;10329:24;10343:9;10329;:13;;:24;;;;:::i;:::-;10308:45;;10400:48;10438:9;10400;:33;10418:13;;;;;;;;;;;10400:33;;;;;;;;;;;;;;;;:37;;:48;;;;:::i;:::-;10366:9;:33;10384:13;;;;;;;;;;;10366:33;;;;;;;;;;;;;;;:82;;;;10486:40;10515:10;10486:9;:24;10504:4;10486:24;;;;;;;;;;;;;;;;:28;;:40;;;;:::i;:::-;10461:9;:24;10479:4;10461:24;;;;;;;;;;;;;;;:65;;;;10567:13;;;;;;;;;;;10544:48;;10553:4;10544:48;;;10582:9;10544:48;;;;;;:::i;:::-;;;;;;;;10633:4;10610:40;;10619:4;10610:40;;;10639:10;10610:40;;;;;;:::i;:::-;;;;;;;;10130:532;;10115:547;10688:27;10708:6;10688:9;:15;10698:4;10688:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10672:9;:15;10682:4;10672:15;;;;;;;;;;;;;;;:43;;;;10740:40;10758:21;10769:9;10758:6;:10;;:21;;;;:::i;:::-;10740:9;:13;10750:2;10740:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10726:9;:13;10736:2;10726:13;;;;;;;;;;;;;;;:54;;;;10811:2;10796:41;;10805:4;10796:41;;;10815:21;10826:9;10815:6;:10;;:21;;;;:::i;:::-;10796:41;;;;;;:::i;:::-;;;;;;;;7978:2867;7909:2936;;;:::o;1873:190::-;1959:7;1992:1;1987;:6;;1995:12;1979:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2019:9;2035:1;2031;:5;;;;:::i;:::-;2019:17;;2054:1;2047:8;;;1873:190;;;;;:::o;10961:483::-;5853:4;5844:6;;:13;;;;;;;;;;;;;;;;;;11039:21:::1;11077:1;11063:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11039:40;;11108:4;11090;11095:1;11090:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11134:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11124:4;11129:1;11124:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11167:62;11184:4;11199:15;;;;;;;;;;;11217:11;11167:8;:62::i;:::-;11240:15;;;;;;;;;;;:66;;;11321:11;11347:1;11363:4;11390;11410:15;11240:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11028:416;5889:5:::0;5880:6;;:14;;;;;;;;;;;;;;;;;;10961:483;:::o;11656:92::-;11713:10;;;;;;;;;;;:19;;:27;11733:6;11713:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11656:92;:::o;1542:179::-;1600:7;1620:9;1636:1;1632;:5;;;;:::i;:::-;1620:17;;1661:1;1656;:6;;1648:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1712:1;1705:8;;;1542:179;;;;:::o;2071:246::-;2129:7;2158:1;2153;:6;2149:47;;2183:1;2176:8;;;;2149:47;2206:9;2222:1;2218;:5;;;;:::i;:::-;2206:17;;2251:1;2246;2242;:5;;;;:::i;:::-;:10;2234:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2308:1;2301:8;;;2071:246;;;;;:::o;2325:132::-;2383:7;2410:39;2414:1;2417;2410:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2403:46;;2325:132;;;;:::o;10855:98::-;10912:7;10939:1;10937;:3;10936:9;;10944:1;10936:9;;;10942:1;10936:9;10929:16;;10855:98;;;;:::o;1729:136::-;1787:7;1814:43;1818:1;1821;1814:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1807:50;;1729:136;;;;:::o;2465:189::-;2551:7;2583:1;2579;:5;2586:12;2571:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2610:9;2626:1;2622;:5;;;;:::i;:::-;2610:17;;2645:1;2638:8;;;2465:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:474::-;8098:6;8106;8155:2;8143:9;8134:7;8130:23;8126:32;8123:119;;;8161:79;;:::i;:::-;8123:119;8281:1;8306:53;8351:7;8342:6;8331:9;8327:22;8306:53;:::i;:::-;8296:63;;8252:117;8408:2;8434:53;8479:7;8470:6;8459:9;8455:22;8434:53;:::i;:::-;8424:63;;8379:118;8030:474;;;;;:::o;8510:118::-;8597:24;8615:5;8597:24;:::i;:::-;8592:3;8585:37;8510:118;;:::o;8634:222::-;8727:4;8765:2;8754:9;8750:18;8742:26;;8778:71;8846:1;8835:9;8831:17;8822:6;8778:71;:::i;:::-;8634:222;;;;:::o;8862:474::-;8930:6;8938;8987:2;8975:9;8966:7;8962:23;8958:32;8955:119;;;8993:79;;:::i;:::-;8955:119;9113:1;9138:53;9183:7;9174:6;9163:9;9159:22;9138:53;:::i;:::-;9128:63;;9084:117;9240:2;9266:53;9311:7;9302:6;9291:9;9287:22;9266:53;:::i;:::-;9256:63;;9211:118;8862:474;;;;;:::o;9342:180::-;9390:77;9387:1;9380:88;9487:4;9484:1;9477:15;9511:4;9508:1;9501:15;9528:102;9570:8;9617:5;9614:1;9610:13;9589:34;;9528:102;;;:::o;9636:848::-;9697:5;9704:4;9728:6;9719:15;;9752:5;9743:14;;9766:712;9787:1;9777:8;9774:15;9766:712;;;9882:4;9877:3;9873:14;9867:4;9864:24;9861:50;;;9891:18;;:::i;:::-;9861:50;9941:1;9931:8;9927:16;9924:451;;;10356:4;10349:5;10345:16;10336:25;;9924:451;10406:4;10400;10396:15;10388:23;;10436:32;10459:8;10436:32;:::i;:::-;10424:44;;9766:712;;;9636:848;;;;;;;:::o;10490:1073::-;10544:5;10735:8;10725:40;;10756:1;10747:10;;10758:5;;10725:40;10784:4;10774:36;;10801:1;10792:10;;10803:5;;10774:36;10870:4;10918:1;10913:27;;;;10954:1;10949:191;;;;10863:277;;10913:27;10931:1;10922:10;;10933:5;;;10949:191;10994:3;10984:8;10981:17;10978:43;;;11001:18;;:::i;:::-;10978:43;11050:8;11047:1;11043:16;11034:25;;11085:3;11078:5;11075:14;11072:40;;;11092:18;;:::i;:::-;11072:40;11125:5;;;10863:277;;11249:2;11239:8;11236:16;11230:3;11224:4;11221:13;11217:36;11199:2;11189:8;11186:16;11181:2;11175:4;11172:12;11168:35;11152:111;11149:246;;;11305:8;11299:4;11295:19;11286:28;;11340:3;11333:5;11330:14;11327:40;;;11347:18;;:::i;:::-;11327:40;11380:5;;11149:246;11420:42;11458:3;11448:8;11442:4;11439:1;11420:42;:::i;:::-;11405:57;;;;11494:4;11489:3;11485:14;11478:5;11475:25;11472:51;;;11503:18;;:::i;:::-;11472:51;11552:4;11545:5;11541:16;11532:25;;10490:1073;;;;;;:::o;11569:281::-;11627:5;11651:23;11669:4;11651:23;:::i;:::-;11643:31;;11695:25;11711:8;11695:25;:::i;:::-;11683:37;;11739:104;11776:66;11766:8;11760:4;11739:104;:::i;:::-;11730:113;;11569:281;;;;:::o;11856:410::-;11896:7;11919:20;11937:1;11919:20;:::i;:::-;11914:25;;11953:20;11971:1;11953:20;:::i;:::-;11948:25;;12008:1;12005;12001:9;12030:30;12048:11;12030:30;:::i;:::-;12019:41;;12209:1;12200:7;12196:15;12193:1;12190:22;12170:1;12163:9;12143:83;12120:139;;12239:18;;:::i;:::-;12120:139;11904:362;11856:410;;;;:::o;12272:182::-;12412:34;12408:1;12400:6;12396:14;12389:58;12272:182;:::o;12460:366::-;12602:3;12623:67;12687:2;12682:3;12623:67;:::i;:::-;12616:74;;12699:93;12788:3;12699:93;:::i;:::-;12817:2;12812:3;12808:12;12801:19;;12460:366;;;:::o;12832:419::-;12998:4;13036:2;13025:9;13021:18;13013:26;;13085:9;13079:4;13075:20;13071:1;13060:9;13056:17;13049:47;13113:131;13239:4;13113:131;:::i;:::-;13105:139;;12832:419;;;:::o;13257:180::-;13305:77;13302:1;13295:88;13402:4;13399:1;13392:15;13426:4;13423:1;13416:15;13443:233;13482:3;13505:24;13523:5;13505:24;:::i;:::-;13496:33;;13551:66;13544:5;13541:77;13538:103;;13621:18;;:::i;:::-;13538:103;13668:1;13661:5;13657:13;13650:20;;13443:233;;;:::o;13682:173::-;13822:25;13818:1;13810:6;13806:14;13799:49;13682:173;:::o;13861:366::-;14003:3;14024:67;14088:2;14083:3;14024:67;:::i;:::-;14017:74;;14100:93;14189:3;14100:93;:::i;:::-;14218:2;14213:3;14209:12;14202:19;;13861:366;;;:::o;14233:419::-;14399:4;14437:2;14426:9;14422:18;14414:26;;14486:9;14480:4;14476:20;14472:1;14461:9;14457:17;14450:47;14514:131;14640:4;14514:131;:::i;:::-;14506:139;;14233:419;;;:::o;14658:143::-;14715:5;14746:6;14740:13;14731:22;;14762:33;14789:5;14762:33;:::i;:::-;14658:143;;;;:::o;14807:351::-;14877:6;14926:2;14914:9;14905:7;14901:23;14897:32;14894:119;;;14932:79;;:::i;:::-;14894:119;15052:1;15077:64;15133:7;15124:6;15113:9;15109:22;15077:64;:::i;:::-;15067:74;;15023:128;14807:351;;;;:::o;15164:332::-;15285:4;15323:2;15312:9;15308:18;15300:26;;15336:71;15404:1;15393:9;15389:17;15380:6;15336:71;:::i;:::-;15417:72;15485:2;15474:9;15470:18;15461:6;15417:72;:::i;:::-;15164:332;;;;;:::o;15502:85::-;15547:7;15576:5;15565:16;;15502:85;;;:::o;15593:60::-;15621:3;15642:5;15635:12;;15593:60;;;:::o;15659:158::-;15717:9;15750:61;15768:42;15777:32;15803:5;15777:32;:::i;:::-;15768:42;:::i;:::-;15750:61;:::i;:::-;15737:74;;15659:158;;;:::o;15823:147::-;15918:45;15957:5;15918:45;:::i;:::-;15913:3;15906:58;15823:147;;:::o;15976:142::-;16026:9;16059:53;16077:34;16086:24;16104:5;16086:24;:::i;:::-;16077:34;:::i;:::-;16059:53;:::i;:::-;16046:66;;15976:142;;;:::o;16124:126::-;16174:9;16207:37;16238:5;16207:37;:::i;:::-;16194:50;;16124:126;;;:::o;16256:134::-;16314:9;16347:37;16378:5;16347:37;:::i;:::-;16334:50;;16256:134;;;:::o;16396:147::-;16491:45;16530:5;16491:45;:::i;:::-;16486:3;16479:58;16396:147;;:::o;16549:823::-;16806:4;16844:3;16833:9;16829:19;16821:27;;16858:71;16926:1;16915:9;16911:17;16902:6;16858:71;:::i;:::-;16939:72;17007:2;16996:9;16992:18;16983:6;16939:72;:::i;:::-;17021:80;17097:2;17086:9;17082:18;17073:6;17021:80;:::i;:::-;17111;17187:2;17176:9;17172:18;17163:6;17111:80;:::i;:::-;17201:81;17277:3;17266:9;17262:19;17253:6;17201:81;:::i;:::-;17292:73;17360:3;17349:9;17345:19;17336:6;17292:73;:::i;:::-;16549:823;;;;;;;;;:::o;17378:143::-;17435:5;17466:6;17460:13;17451:22;;17482:33;17509:5;17482:33;:::i;:::-;17378:143;;;;:::o;17527:663::-;17615:6;17623;17631;17680:2;17668:9;17659:7;17655:23;17651:32;17648:119;;;17686:79;;:::i;:::-;17648:119;17806:1;17831:64;17887:7;17878:6;17867:9;17863:22;17831:64;:::i;:::-;17821:74;;17777:128;17944:2;17970:64;18026:7;18017:6;18006:9;18002:22;17970:64;:::i;:::-;17960:74;;17915:129;18083:2;18109:64;18165:7;18156:6;18145:9;18141:22;18109:64;:::i;:::-;18099:74;;18054:129;17527:663;;;;;:::o;18196:332::-;18317:4;18355:2;18344:9;18340:18;18332:26;;18368:71;18436:1;18425:9;18421:17;18412:6;18368:71;:::i;:::-;18449:72;18517:2;18506:9;18502:18;18493:6;18449:72;:::i;:::-;18196:332;;;;;:::o;18534:116::-;18604:21;18619:5;18604:21;:::i;:::-;18597:5;18594:32;18584:60;;18640:1;18637;18630:12;18584:60;18534:116;:::o;18656:137::-;18710:5;18741:6;18735:13;18726:22;;18757:30;18781:5;18757:30;:::i;:::-;18656:137;;;;:::o;18799:345::-;18866:6;18915:2;18903:9;18894:7;18890:23;18886:32;18883:119;;;18921:79;;:::i;:::-;18883:119;19041:1;19066:61;19119:7;19110:6;19099:9;19095:22;19066:61;:::i;:::-;19056:71;;19012:125;18799:345;;;;:::o;19150:223::-;19290:34;19286:1;19278:6;19274:14;19267:58;19359:6;19354:2;19346:6;19342:15;19335:31;19150:223;:::o;19379:366::-;19521:3;19542:67;19606:2;19601:3;19542:67;:::i;:::-;19535:74;;19618:93;19707:3;19618:93;:::i;:::-;19736:2;19731:3;19727:12;19720:19;;19379:366;;;:::o;19751:419::-;19917:4;19955:2;19944:9;19940:18;19932:26;;20004:9;19998:4;19994:20;19990:1;19979:9;19975:17;19968:47;20032:131;20158:4;20032:131;:::i;:::-;20024:139;;19751:419;;;:::o;20176:221::-;20316:34;20312:1;20304:6;20300:14;20293:58;20385:4;20380:2;20372:6;20368:15;20361:29;20176:221;:::o;20403:366::-;20545:3;20566:67;20630:2;20625:3;20566:67;:::i;:::-;20559:74;;20642:93;20731:3;20642:93;:::i;:::-;20760:2;20755:3;20751:12;20744:19;;20403:366;;;:::o;20775:419::-;20941:4;20979:2;20968:9;20964:18;20956:26;;21028:9;21022:4;21018:20;21014:1;21003:9;20999:17;20992:47;21056:131;21182:4;21056:131;:::i;:::-;21048:139;;20775:419;;;:::o;21200:224::-;21340:34;21336:1;21328:6;21324:14;21317:58;21409:7;21404:2;21396:6;21392:15;21385:32;21200:224;:::o;21430:366::-;21572:3;21593:67;21657:2;21652:3;21593:67;:::i;:::-;21586:74;;21669:93;21758:3;21669:93;:::i;:::-;21787:2;21782:3;21778:12;21771:19;;21430:366;;;:::o;21802:419::-;21968:4;22006:2;21995:9;21991:18;21983:26;;22055:9;22049:4;22045:20;22041:1;22030:9;22026:17;22019:47;22083:131;22209:4;22083:131;:::i;:::-;22075:139;;21802:419;;;:::o;22227:222::-;22367:34;22363:1;22355:6;22351:14;22344:58;22436:5;22431:2;22423:6;22419:15;22412:30;22227:222;:::o;22455:366::-;22597:3;22618:67;22682:2;22677:3;22618:67;:::i;:::-;22611:74;;22694:93;22783:3;22694:93;:::i;:::-;22812:2;22807:3;22803:12;22796:19;;22455:366;;;:::o;22827:419::-;22993:4;23031:2;23020:9;23016:18;23008:26;;23080:9;23074:4;23070:20;23066:1;23055:9;23051:17;23044:47;23108:131;23234:4;23108:131;:::i;:::-;23100:139;;22827:419;;;:::o;23252:228::-;23392:34;23388:1;23380:6;23376:14;23369:58;23461:11;23456:2;23448:6;23444:15;23437:36;23252:228;:::o;23486:366::-;23628:3;23649:67;23713:2;23708:3;23649:67;:::i;:::-;23642:74;;23725:93;23814:3;23725:93;:::i;:::-;23843:2;23838:3;23834:12;23827:19;;23486:366;;;:::o;23858:419::-;24024:4;24062:2;24051:9;24047:18;24039:26;;24111:9;24105:4;24101:20;24097:1;24086:9;24082:17;24075:47;24139:131;24265:4;24139:131;:::i;:::-;24131:139;;23858:419;;;:::o;24283:297::-;24423:34;24419:1;24411:6;24407:14;24400:58;24492:34;24487:2;24479:6;24475:15;24468:59;24561:11;24556:2;24548:6;24544:15;24537:36;24283:297;:::o;24586:366::-;24728:3;24749:67;24813:2;24808:3;24749:67;:::i;:::-;24742:74;;24825:93;24914:3;24825:93;:::i;:::-;24943:2;24938:3;24934:12;24927:19;;24586:366;;;:::o;24958:419::-;25124:4;25162:2;25151:9;25147:18;25139:26;;25211:9;25205:4;25201:20;25197:1;25186:9;25182:17;25175:47;25239:131;25365:4;25239:131;:::i;:::-;25231:139;;24958:419;;;:::o;25383:175::-;25523:27;25519:1;25511:6;25507:14;25500:51;25383:175;:::o;25564:366::-;25706:3;25727:67;25791:2;25786:3;25727:67;:::i;:::-;25720:74;;25803:93;25892:3;25803:93;:::i;:::-;25921:2;25916:3;25912:12;25905:19;;25564:366;;;:::o;25936:419::-;26102:4;26140:2;26129:9;26125:18;26117:26;;26189:9;26183:4;26179:20;26175:1;26164:9;26160:17;26153:47;26217:131;26343:4;26217:131;:::i;:::-;26209:139;;25936:419;;;:::o;26361:191::-;26401:3;26420:20;26438:1;26420:20;:::i;:::-;26415:25;;26454:20;26472:1;26454:20;:::i;:::-;26449:25;;26497:1;26494;26490:9;26483:16;;26518:3;26515:1;26512:10;26509:36;;;26525:18;;:::i;:::-;26509:36;26361:191;;;;:::o;26558:176::-;26698:28;26694:1;26686:6;26682:14;26675:52;26558:176;:::o;26740:366::-;26882:3;26903:67;26967:2;26962:3;26903:67;:::i;:::-;26896:74;;26979:93;27068:3;26979:93;:::i;:::-;27097:2;27092:3;27088:12;27081:19;;26740:366;;;:::o;27112:419::-;27278:4;27316:2;27305:9;27301:18;27293:26;;27365:9;27359:4;27355:20;27351:1;27340:9;27336:17;27329:47;27393:131;27519:4;27393:131;:::i;:::-;27385:139;;27112:419;;;:::o;27537:194::-;27577:4;27597:20;27615:1;27597:20;:::i;:::-;27592:25;;27631:20;27649:1;27631:20;:::i;:::-;27626:25;;27675:1;27672;27668:9;27660:17;;27699:1;27693:4;27690:11;27687:37;;;27704:18;;:::i;:::-;27687:37;27537:194;;;;:::o;27737:114::-;27804:6;27838:5;27832:12;27822:22;;27737:114;;;:::o;27857:184::-;27956:11;27990:6;27985:3;27978:19;28030:4;28025:3;28021:14;28006:29;;27857:184;;;;:::o;28047:132::-;28114:4;28137:3;28129:11;;28167:4;28162:3;28158:14;28150:22;;28047:132;;;:::o;28185:108::-;28262:24;28280:5;28262:24;:::i;:::-;28257:3;28250:37;28185:108;;:::o;28299:179::-;28368:10;28389:46;28431:3;28423:6;28389:46;:::i;:::-;28467:4;28462:3;28458:14;28444:28;;28299:179;;;;:::o;28484:113::-;28554:4;28586;28581:3;28577:14;28569:22;;28484:113;;;:::o;28633:732::-;28752:3;28781:54;28829:5;28781:54;:::i;:::-;28851:86;28930:6;28925:3;28851:86;:::i;:::-;28844:93;;28961:56;29011:5;28961:56;:::i;:::-;29040:7;29071:1;29056:284;29081:6;29078:1;29075:13;29056:284;;;29157:6;29151:13;29184:63;29243:3;29228:13;29184:63;:::i;:::-;29177:70;;29270:60;29323:6;29270:60;:::i;:::-;29260:70;;29116:224;29103:1;29100;29096:9;29091:14;;29056:284;;;29060:14;29356:3;29349:10;;28757:608;;;28633:732;;;;:::o;29371:831::-;29634:4;29672:3;29661:9;29657:19;29649:27;;29686:71;29754:1;29743:9;29739:17;29730:6;29686:71;:::i;:::-;29767:80;29843:2;29832:9;29828:18;29819:6;29767:80;:::i;:::-;29894:9;29888:4;29884:20;29879:2;29868:9;29864:18;29857:48;29922:108;30025:4;30016:6;29922:108;:::i;:::-;29914:116;;30040:72;30108:2;30097:9;30093:18;30084:6;30040:72;:::i;:::-;30122:73;30190:3;30179:9;30175:19;30166:6;30122:73;:::i;:::-;29371:831;;;;;;;;:::o;30208:177::-;30348:29;30344:1;30336:6;30332:14;30325:53;30208:177;:::o;30391:366::-;30533:3;30554:67;30618:2;30613:3;30554:67;:::i;:::-;30547:74;;30630:93;30719:3;30630:93;:::i;:::-;30748:2;30743:3;30739:12;30732:19;;30391:366;;;:::o;30763:419::-;30929:4;30967:2;30956:9;30952:18;30944:26;;31016:9;31010:4;31006:20;31002:1;30991:9;30987:17;30980:47;31044:131;31170:4;31044:131;:::i;:::-;31036:139;;30763:419;;;:::o;31188:180::-;31236:77;31233:1;31226:88;31333:4;31330:1;31323:15;31357:4;31354:1;31347:15;31374:185;31414:1;31431:20;31449:1;31431:20;:::i;:::-;31426:25;;31465:20;31483:1;31465:20;:::i;:::-;31460:25;;31504:1;31494:35;;31509:18;;:::i;:::-;31494:35;31551:1;31548;31544:9;31539:14;;31374:185;;;;:::o;31565:220::-;31705:34;31701:1;31693:6;31689:14;31682:58;31774:3;31769:2;31761:6;31757:15;31750:28;31565:220;:::o;31791:366::-;31933:3;31954:67;32018:2;32013:3;31954:67;:::i;:::-;31947:74;;32030:93;32119:3;32030:93;:::i;:::-;32148:2;32143:3;32139:12;32132:19;;31791:366;;;:::o;32163:419::-;32329:4;32367:2;32356:9;32352:18;32344:26;;32416:9;32410:4;32406:20;32402:1;32391:9;32387:17;32380:47;32444:131;32570:4;32444:131;:::i;:::-;32436:139;;32163:419;;;:::o

Swarm Source

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