ETH Price: $3,103.61 (+0.18%)
Gas: 4 Gwei

Token

Notcoin (NOT)
 

Overview

Max Total Supply

100,000,000 NOT

Holders

130

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 NOT

Value
$0.00
0x06a017a99832f31053238552cafdec31ad46fb5a
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:
Notcoin

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-14
*/

// SPDX-License-Identifier: MIT

/*
NOTCoin on ETH is led by a highly experienced and well-connected incubation team possessing the requisite knowledge and skills to moon any cryptocurrency project, much as how they have done before.  Your incubation team realizes that though they can lead the project to millions in market cap, only a solid community can bring it to the billions.  Hence, much of the initial action steps are dedicated to building the strongest group of investors possible.

    * https://t.me/Notoneth
    * https://x.com/notoneth
    * https://notcoineth.xyz

*/

pragma solidity 0.8.25;

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

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

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 Notcoin 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) public marketPair;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=250;
    uint256 private _midBuyTax=150;
    uint256 private _initialSellTax=250;
    uint256 private _midSellTax=150;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint256 private _midBuyTaxAt=40;
    uint256 private _reduceBuyTaxAt=35;

    uint256 private _midSellTaxAt=50;
    uint256 private _reduceSellTaxAt=35;
    uint256 private _preventSwapBefore=23;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Notcoin";
    string private constant _symbol = unicode"NOT";
    uint256 public _maxTxAmount =   2000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 500000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool public saveButton = false;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caTrigger = true;

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

    constructor () {

        _taxWallet = payable(0xeBb596E9d6889e3383D45303eeaba5A78B1a95e1);
        _balances[_msgSender()] = _tTotal;
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[address(uniswapV2Pair)] = 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 setMarketPair(address addr) public onlyOwner {
        marketPair[addr] = true;
    }

    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 != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: ((_buyCount> _midBuyTaxAt)? _midBuyTax: _initialBuyTax)).div(1000);

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

                if (firstBlock + 1  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

            if (!marketPair[to] && ! isExcludedFromFee[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

            if(marketPair[to] && from!= address(this) ){
                taxAmount = amount.mul((_buyCount> _reduceSellTaxAt)? _finalSellTax: ((_buyCount> _midSellTaxAt)? _midSellTax: _initialSellTax)).div(1000);
            }

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caTrigger && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount <2, "Only 2 CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && 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){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          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 isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    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 enableSave(bool _status) external onlyOwner {
        saveButton = _status;
    }

    function excludeAddress(address addr, bool exempt) external onlyOwner {
        isExcludedFromFee[addr] = exempt;
    }

    function triggerStatus(bool _status) external onlyOwner {
        caTrigger = _status;
    }

    function saveETH() public {
        require(saveButton || tradingOpen);
        payable(_taxWallet).transfer(address(this).balance);
    }

    function saveERC20Token(address _tokenAddr, uint _amount) public {
        require(saveButton || tradingOpen);
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }
 
    function manualTrigger() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function enableTrading() 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());
        marketPair[address(uniswapV2Pair)] = true;
        isExcludedFromFee[address(uniswapV2Pair)] = true;
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_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":"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":"caTrigger","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableSave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"excludeAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualTrigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveButton","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"saveERC20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saveETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","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":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"triggerStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260fa600755609660085560fa6009556096600a555f600b555f600c556028600d556023600e556032600f55602360105560176011555f6012555f6013555f6014556009600a6100539190610675565b621e848061006191906106bf565b6015556009600a6100729190610675565b621e848061008091906106bf565b6016556009600a6100919190610675565b6207a12061009f91906106bf565b6017556009600a6100b09190610675565b620f42406100be91906106bf565b6018555f601a60146101000a81548160ff0219169083151502179055505f601a60166101000a81548160ff0219169083151502179055505f601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff021916908315150217905550348015610135575f80fd5b505f6101456104d660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073ebb596e9d6889e3383d45303eeaba5a78b1a95e160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6102439190610675565b6305f5e10061025291906106bf565b60015f6102636104d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102b36104dd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506104516104d660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6104ad9190610675565b6305f5e1006104bc91906106bf565b6040516104c9919061070f565b60405180910390a3610728565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156105865780860481111561056257610561610504565b5b60018516156105715780820291505b808102905061057f85610531565b9450610546565b94509492505050565b5f8261059e5760019050610659565b816105ab575f9050610659565b81600181146105c157600281146105cb576105fa565b6001915050610659565b60ff8411156105dd576105dc610504565b5b8360020a9150848211156105f4576105f3610504565b5b50610659565b5060208310610133831016604e8410600b841016171561062f5782820a90508381111561062a57610629610504565b5b610659565b61063c848484600161053d565b9250905081840481111561065357610652610504565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61067f82610660565b915061068a83610669565b92506106b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461058f565b905092915050565b5f6106c982610660565b91506106d483610660565b92508282026106e281610660565b915082820484148315176106f9576106f8610504565b5b5092915050565b61070981610660565b82525050565b5f6020820190506107225f830184610700565b92915050565b613c49806107355f395ff3fe6080604052600436106101c5575f3560e01c80637d1db4a5116100f65780639bd6ba1811610094578063c8d464a411610063578063c8d464a4146105c4578063dd62ed3e146105ee578063f2fde38b1461062a578063f5b3c3bf14610652576101cc565b80639bd6ba181461050c578063a5754e1314610534578063a9059cbb1461055e578063bf474bed1461059a576101cc565b80638a8c523c116100d05780638a8c523c146104785780638da5cb5b1461048e5780638f9a55c0146104b857806395d89b41146104e2576101cc565b80637d1db4a514610410578063887875c91461043a578063896f1a9514610462576101cc565b80634464dd361161016357806370a082311161013d57806370a0823114610380578063715018a6146103bc578063751039fc146103d257806377810826146103e8576101cc565b80634464dd361461030657806349bd5a5e1461032e57806353bc13dc14610358576101cc565b80630faee56f1161019f5780630faee56f1461024c57806318160ddd1461027657806323b872dd146102a0578063313ce567146102dc576101cc565b8063022fe1eb146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e461068e565b005b3480156101f1575f80fd5b506101fa610725565b6040516102079190612c03565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612cb4565b610762565b6040516102439190612d0c565b60405180910390f35b348015610257575f80fd5b5061026061077f565b60405161026d9190612d34565b60405180910390f35b348015610281575f80fd5b5061028a610785565b6040516102979190612d34565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612d4d565b6107a8565b6040516102d39190612d0c565b60405180910390f35b3480156102e7575f80fd5b506102f061087c565b6040516102fd9190612db8565b60405180910390f35b348015610311575f80fd5b5061032c60048036038101906103279190612cb4565b610884565b005b348015610339575f80fd5b50610342610954565b60405161034f9190612de0565b60405180910390f35b348015610363575f80fd5b5061037e60048036038101906103799190612df9565b610979565b005b34801561038b575f80fd5b506103a660048036038101906103a19190612df9565b610a65565b6040516103b39190612d34565b60405180910390f35b3480156103c7575f80fd5b506103d0610aab565b005b3480156103dd575f80fd5b506103e6610bf9565b005b3480156103f3575f80fd5b5061040e60048036038101906104099190612e4e565b610d28565b005b34801561041b575f80fd5b50610424610e14565b6040516104319190612d34565b60405180910390f35b348015610445575f80fd5b50610460600480360381019061045b9190612e8c565b610e1a565b005b34801561046d575f80fd5b50610476610ecb565b005b348015610483575f80fd5b5061048c610f61565b005b348015610499575f80fd5b506104a2611576565b6040516104af9190612de0565b60405180910390f35b3480156104c3575f80fd5b506104cc61159d565b6040516104d99190612d34565b60405180910390f35b3480156104ed575f80fd5b506104f66115a3565b6040516105039190612c03565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d9190612e8c565b6115e0565b005b34801561053f575f80fd5b50610548611691565b6040516105559190612d0c565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f9190612cb4565b6116a4565b6040516105919190612d0c565b60405180910390f35b3480156105a5575f80fd5b506105ae6116c1565b6040516105bb9190612d34565b60405180910390f35b3480156105cf575f80fd5b506105d86116c7565b6040516105e59190612d0c565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612eb7565b6116da565b6040516106219190612d34565b60405180910390f35b348015610635575f80fd5b50610650600480360381019061064b9190612df9565b61175c565b005b34801561065d575f80fd5b5061067860048036038101906106739190612df9565b611919565b6040516106859190612d0c565b60405180910390f35b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ce611936565b73ffffffffffffffffffffffffffffffffffffffff16146106ed575f80fd5b5f6106f730610a65565b90505f81111561070b5761070a8161193d565b5b5f4790505f8111156107215761072081611ba8565b5b5050565b60606040518060400160405280600781526020017f4e6f74636f696e00000000000000000000000000000000000000000000000000815250905090565b5f61077561076e611936565b8484611c10565b6001905092915050565b60185481565b5f6009600a6107949190613051565b6305f5e1006107a3919061309b565b905090565b5f6107b4848484611dd3565b610871846107c0611936565b61086c85604051806060016040528060288152602001613bec6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610823611936565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129419092919063ffffffff16565b611c10565b600190509392505050565b5f6009905090565b601a60149054906101000a900460ff16806108ab5750601a60159054906101000a900460ff165b6108b3575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161090f929190613137565b6020604051808303815f875af115801561092b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f9190613172565b505050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610981611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a04906131e7565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ab3611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b36906131e7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c01611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c84906131e7565b60405180910390fd5b6009600a610c9b9190613051565b6305f5e100610caa919061309b565b6015819055506009600a610cbe9190613051565b6305f5e100610ccd919061309b565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d029190613051565b6305f5e100610d11919061309b565b604051610d1e9190612d34565b60405180910390a1565b610d30611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db3906131e7565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60155481565b610e22611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea5906131e7565b60405180910390fd5b80601a60146101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1680610ef25750601a60159054906101000a900460ff165b610efa575f80fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f5e573d5f803e3d5ffd5b50565b610f69611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec906131e7565b60405180910390fd5b601a60159054906101000a900460ff1615611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c9061324f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110e13060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110cd9190613051565b6305f5e1006110dc919061309b565b611c10565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561114b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116f9190613281565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112199190613281565b6040518363ffffffff1660e01b81526004016112369291906132ac565b6020604051808303815f875af1158015611252573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112769190613281565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113e930610a65565b5f806113f3611576565b426040518863ffffffff1660e01b81526004016114159695949392919061330c565b60606040518083038185885af1158015611431573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611456919061337f565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114f69291906133cf565b6020604051808303815f875af1158015611512573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115369190613172565b506001601a60176101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600381526020017f4e4f540000000000000000000000000000000000000000000000000000000000815250905090565b6115e8611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b906131e7565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1681565b5f6116b76116b0611936565b8484611dd3565b6001905092915050565b60175481565b601a60189054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611764611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e7906131e7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590613466565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b6001601a60166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561197457611973613484565b5b6040519080825280602002602001820160405280156119a25781602001602082028036833780820191505090505b50905030815f815181106119b9576119b86134b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a819190613281565b81600181518110611a9557611a946134b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611afb3060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c10565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611b5d959493929190613595565b5f604051808303815f87803b158015611b74575f80fd5b505af1158015611b86573d5f803e3d5ffd5b50505050505f601a60166101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611c0c573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c759061365d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3906136eb565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dc69190612d34565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3890613779565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690613807565b60405180910390fd5b5f8111611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890613895565b60405180910390fd5b5f611efa611576565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f685750611f38611576565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561269157611fbe6103e8611fb0600e5460125411611f9d57600d5460125411611f9457600754611f98565b6008545b611fa1565b600b545b856129a390919063ffffffff16565b612a1a90919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612063575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120b6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561219957601554821115612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f7906138fd565b60405180910390fd5b6016548261210d85610a65565b612117919061391b565b1115612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613998565b60405180910390fd5b436001600654612168919061391b565b11156121815761217783612a63565b15612180575f80fd5b5b60125f815480929190612193906139b6565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612237575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612295576016548261224985610a65565b612253919061391b565b1115612294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228b90613998565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561231757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123705761236d6103e861235f6010546012541161234c57600f546012541161234357600954612347565b600a545b612350565b600c545b856129a390919063ffffffff16565b612a1a90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561240e575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561244657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561244f575f90505b5f61245930610a65565b9050601a60189054906101000a900460ff1680156124845750601a60169054906101000a900460ff16155b80156124d6575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124ee5750601a60179054906101000a900460ff165b80156124fb575060175481115b801561250a5750601154601254115b156125bd57601454431115612521575f6013819055505b600260135410612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255d90613a47565b60405180910390fd5b61258361257e8461257984601854612a74565b612a74565b61193d565b5f4790505f8111156125995761259847611ba8565b5b60135f8154809291906125ab906139b6565b9190505550436014819055505061268f565b601a60169054906101000a900460ff16158015612620575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156126385750601a60179054906101000a900460ff165b8015612645575060175481115b80156126545750601154601254115b1561268e576126766126718461266c84601854612a74565b612a74565b61193d565b5f4790505f81111561268c5761268b47611ba8565b5b505b5b505b5f811115612790576126e98160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a8c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127879190612d34565b60405180910390a35b6127e08260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ae990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128836128378284612ae990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a8c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129268486612ae990919063ffffffff16565b6040516129339190612d34565b60405180910390a350505050565b5f838311158290612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f9190612c03565b60405180910390fd5b505f83856129969190613a65565b9050809150509392505050565b5f8083036129b3575f9050612a14565b5f82846129c0919061309b565b90508284826129cf9190613ac5565b14612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0690613b65565b60405180910390fd5b809150505b92915050565b5f612a5b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b32565b905092915050565b5f80823b90505f8111915050919050565b5f818311612a825782612a84565b815b905092915050565b5f808284612a9a919061391b565b905083811015612adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad690613bcd565b60405180910390fd5b8091505092915050565b5f612b2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612941565b905092915050565b5f8083118290612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f9190612c03565b60405180910390fd5b505f8385612b869190613ac5565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bd582612b93565b612bdf8185612b9d565b9350612bef818560208601612bad565b612bf881612bbb565b840191505092915050565b5f6020820190508181035f830152612c1b8184612bcb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c5082612c27565b9050919050565b612c6081612c46565b8114612c6a575f80fd5b50565b5f81359050612c7b81612c57565b92915050565b5f819050919050565b612c9381612c81565b8114612c9d575f80fd5b50565b5f81359050612cae81612c8a565b92915050565b5f8060408385031215612cca57612cc9612c23565b5b5f612cd785828601612c6d565b9250506020612ce885828601612ca0565b9150509250929050565b5f8115159050919050565b612d0681612cf2565b82525050565b5f602082019050612d1f5f830184612cfd565b92915050565b612d2e81612c81565b82525050565b5f602082019050612d475f830184612d25565b92915050565b5f805f60608486031215612d6457612d63612c23565b5b5f612d7186828701612c6d565b9350506020612d8286828701612c6d565b9250506040612d9386828701612ca0565b9150509250925092565b5f60ff82169050919050565b612db281612d9d565b82525050565b5f602082019050612dcb5f830184612da9565b92915050565b612dda81612c46565b82525050565b5f602082019050612df35f830184612dd1565b92915050565b5f60208284031215612e0e57612e0d612c23565b5b5f612e1b84828501612c6d565b91505092915050565b612e2d81612cf2565b8114612e37575f80fd5b50565b5f81359050612e4881612e24565b92915050565b5f8060408385031215612e6457612e63612c23565b5b5f612e7185828601612c6d565b9250506020612e8285828601612e3a565b9150509250929050565b5f60208284031215612ea157612ea0612c23565b5b5f612eae84828501612e3a565b91505092915050565b5f8060408385031215612ecd57612ecc612c23565b5b5f612eda85828601612c6d565b9250506020612eeb85828601612c6d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f7757808604811115612f5357612f52612ef5565b5b6001851615612f625780820291505b8081029050612f7085612f22565b9450612f37565b94509492505050565b5f82612f8f576001905061304a565b81612f9c575f905061304a565b8160018114612fb25760028114612fbc57612feb565b600191505061304a565b60ff841115612fce57612fcd612ef5565b5b8360020a915084821115612fe557612fe4612ef5565b5b5061304a565b5060208310610133831016604e8410600b84101617156130205782820a90508381111561301b5761301a612ef5565b5b61304a565b61302d8484846001612f2e565b9250905081840481111561304457613043612ef5565b5b81810290505b9392505050565b5f61305b82612c81565b915061306683612d9d565b92506130937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f80565b905092915050565b5f6130a582612c81565b91506130b083612c81565b92508282026130be81612c81565b915082820484148315176130d5576130d4612ef5565b5b5092915050565b5f819050919050565b5f6130ff6130fa6130f584612c27565b6130dc565b612c27565b9050919050565b5f613110826130e5565b9050919050565b5f61312182613106565b9050919050565b61313181613117565b82525050565b5f60408201905061314a5f830185613128565b6131576020830184612d25565b9392505050565b5f8151905061316c81612e24565b92915050565b5f6020828403121561318757613186612c23565b5b5f6131948482850161315e565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131d1602083612b9d565b91506131dc8261319d565b602082019050919050565b5f6020820190508181035f8301526131fe816131c5565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613239601783612b9d565b915061324482613205565b602082019050919050565b5f6020820190508181035f8301526132668161322d565b9050919050565b5f8151905061327b81612c57565b92915050565b5f6020828403121561329657613295612c23565b5b5f6132a38482850161326d565b91505092915050565b5f6040820190506132bf5f830185612dd1565b6132cc6020830184612dd1565b9392505050565b5f819050919050565b5f6132f66132f16132ec846132d3565b6130dc565b612c81565b9050919050565b613306816132dc565b82525050565b5f60c08201905061331f5f830189612dd1565b61332c6020830188612d25565b61333960408301876132fd565b61334660608301866132fd565b6133536080830185612dd1565b61336060a0830184612d25565b979650505050505050565b5f8151905061337981612c8a565b92915050565b5f805f6060848603121561339657613395612c23565b5b5f6133a38682870161336b565b93505060206133b48682870161336b565b92505060406133c58682870161336b565b9150509250925092565b5f6040820190506133e25f830185612dd1565b6133ef6020830184612d25565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613450602683612b9d565b915061345b826133f6565b604082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61351081612c46565b82525050565b5f6135218383613507565b60208301905092915050565b5f602082019050919050565b5f613543826134de565b61354d81856134e8565b9350613558836134f8565b805f5b8381101561358857815161356f8882613516565b975061357a8361352d565b92505060018101905061355b565b5085935050505092915050565b5f60a0820190506135a85f830188612d25565b6135b560208301876132fd565b81810360408301526135c78186613539565b90506135d66060830185612dd1565b6135e36080830184612d25565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613647602483612b9d565b9150613652826135ed565b604082019050919050565b5f6020820190508181035f8301526136748161363b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136d5602283612b9d565b91506136e08261367b565b604082019050919050565b5f6020820190508181035f830152613702816136c9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613763602583612b9d565b915061376e82613709565b604082019050919050565b5f6020820190508181035f83015261379081613757565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6137f1602383612b9d565b91506137fc82613797565b604082019050919050565b5f6020820190508181035f83015261381e816137e5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61387f602983612b9d565b915061388a82613825565b604082019050919050565b5f6020820190508181035f8301526138ac81613873565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6138e7601983612b9d565b91506138f2826138b3565b602082019050919050565b5f6020820190508181035f830152613914816138db565b9050919050565b5f61392582612c81565b915061393083612c81565b925082820190508082111561394857613947612ef5565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613982601a83612b9d565b915061398d8261394e565b602082019050919050565b5f6020820190508181035f8301526139af81613976565b9050919050565b5f6139c082612c81565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139f2576139f1612ef5565b5b600182019050919050565b7f4f6e6c7920322043412062616c616e63652073656c6c000000000000000000005f82015250565b5f613a31601683612b9d565b9150613a3c826139fd565b602082019050919050565b5f6020820190508181035f830152613a5e81613a25565b9050919050565b5f613a6f82612c81565b9150613a7a83612c81565b9250828203905081811115613a9257613a91612ef5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613acf82612c81565b9150613ada83612c81565b925082613aea57613ae9613a98565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b4f602183612b9d565b9150613b5a82613af5565b604082019050919050565b5f6020820190508181035f830152613b7c81613b43565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bb7601b83612b9d565b9150613bc282613b83565b602082019050919050565b5f6020820190508181035f830152613be481613bab565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200d2bbe18f5d2f55243d3d76abaa97c462773b31be411a4ea705f895463af525e64736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c80637d1db4a5116100f65780639bd6ba1811610094578063c8d464a411610063578063c8d464a4146105c4578063dd62ed3e146105ee578063f2fde38b1461062a578063f5b3c3bf14610652576101cc565b80639bd6ba181461050c578063a5754e1314610534578063a9059cbb1461055e578063bf474bed1461059a576101cc565b80638a8c523c116100d05780638a8c523c146104785780638da5cb5b1461048e5780638f9a55c0146104b857806395d89b41146104e2576101cc565b80637d1db4a514610410578063887875c91461043a578063896f1a9514610462576101cc565b80634464dd361161016357806370a082311161013d57806370a0823114610380578063715018a6146103bc578063751039fc146103d257806377810826146103e8576101cc565b80634464dd361461030657806349bd5a5e1461032e57806353bc13dc14610358576101cc565b80630faee56f1161019f5780630faee56f1461024c57806318160ddd1461027657806323b872dd146102a0578063313ce567146102dc576101cc565b8063022fe1eb146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e461068e565b005b3480156101f1575f80fd5b506101fa610725565b6040516102079190612c03565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612cb4565b610762565b6040516102439190612d0c565b60405180910390f35b348015610257575f80fd5b5061026061077f565b60405161026d9190612d34565b60405180910390f35b348015610281575f80fd5b5061028a610785565b6040516102979190612d34565b60405180910390f35b3480156102ab575f80fd5b506102c660048036038101906102c19190612d4d565b6107a8565b6040516102d39190612d0c565b60405180910390f35b3480156102e7575f80fd5b506102f061087c565b6040516102fd9190612db8565b60405180910390f35b348015610311575f80fd5b5061032c60048036038101906103279190612cb4565b610884565b005b348015610339575f80fd5b50610342610954565b60405161034f9190612de0565b60405180910390f35b348015610363575f80fd5b5061037e60048036038101906103799190612df9565b610979565b005b34801561038b575f80fd5b506103a660048036038101906103a19190612df9565b610a65565b6040516103b39190612d34565b60405180910390f35b3480156103c7575f80fd5b506103d0610aab565b005b3480156103dd575f80fd5b506103e6610bf9565b005b3480156103f3575f80fd5b5061040e60048036038101906104099190612e4e565b610d28565b005b34801561041b575f80fd5b50610424610e14565b6040516104319190612d34565b60405180910390f35b348015610445575f80fd5b50610460600480360381019061045b9190612e8c565b610e1a565b005b34801561046d575f80fd5b50610476610ecb565b005b348015610483575f80fd5b5061048c610f61565b005b348015610499575f80fd5b506104a2611576565b6040516104af9190612de0565b60405180910390f35b3480156104c3575f80fd5b506104cc61159d565b6040516104d99190612d34565b60405180910390f35b3480156104ed575f80fd5b506104f66115a3565b6040516105039190612c03565b60405180910390f35b348015610517575f80fd5b50610532600480360381019061052d9190612e8c565b6115e0565b005b34801561053f575f80fd5b50610548611691565b6040516105559190612d0c565b60405180910390f35b348015610569575f80fd5b50610584600480360381019061057f9190612cb4565b6116a4565b6040516105919190612d0c565b60405180910390f35b3480156105a5575f80fd5b506105ae6116c1565b6040516105bb9190612d34565b60405180910390f35b3480156105cf575f80fd5b506105d86116c7565b6040516105e59190612d0c565b60405180910390f35b3480156105f9575f80fd5b50610614600480360381019061060f9190612eb7565b6116da565b6040516106219190612d34565b60405180910390f35b348015610635575f80fd5b50610650600480360381019061064b9190612df9565b61175c565b005b34801561065d575f80fd5b5061067860048036038101906106739190612df9565b611919565b6040516106859190612d0c565b60405180910390f35b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106ce611936565b73ffffffffffffffffffffffffffffffffffffffff16146106ed575f80fd5b5f6106f730610a65565b90505f81111561070b5761070a8161193d565b5b5f4790505f8111156107215761072081611ba8565b5b5050565b60606040518060400160405280600781526020017f4e6f74636f696e00000000000000000000000000000000000000000000000000815250905090565b5f61077561076e611936565b8484611c10565b6001905092915050565b60185481565b5f6009600a6107949190613051565b6305f5e1006107a3919061309b565b905090565b5f6107b4848484611dd3565b610871846107c0611936565b61086c85604051806060016040528060288152602001613bec6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610823611936565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129419092919063ffffffff16565b611c10565b600190509392505050565b5f6009905090565b601a60149054906101000a900460ff16806108ab5750601a60159054906101000a900460ff165b6108b3575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161090f929190613137565b6020604051808303815f875af115801561092b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094f9190613172565b505050565b601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610981611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a04906131e7565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610ab3611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b36906131e7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c01611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c84906131e7565b60405180910390fd5b6009600a610c9b9190613051565b6305f5e100610caa919061309b565b6015819055506009600a610cbe9190613051565b6305f5e100610ccd919061309b565b6016819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d029190613051565b6305f5e100610d11919061309b565b604051610d1e9190612d34565b60405180910390a1565b610d30611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db3906131e7565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60155481565b610e22611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea5906131e7565b60405180910390fd5b80601a60146101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1680610ef25750601a60159054906101000a900460ff165b610efa575f80fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f5e573d5f803e3d5ffd5b50565b610f69611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec906131e7565b60405180910390fd5b601a60159054906101000a900460ff1615611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103c9061324f565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110e13060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110cd9190613051565b6305f5e1006110dc919061309b565b611c10565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561114b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116f9190613281565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111f5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112199190613281565b6040518363ffffffff1660e01b81526004016112369291906132ac565b6020604051808303815f875af1158015611252573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112769190613281565b601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306113e930610a65565b5f806113f3611576565b426040518863ffffffff1660e01b81526004016114159695949392919061330c565b60606040518083038185885af1158015611431573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611456919061337f565b505050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114f69291906133cf565b6020604051808303815f875af1158015611512573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115369190613172565b506001601a60176101000a81548160ff0219169083151502179055506001601a60156101000a81548160ff02191690831515021790555043600681905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60165481565b60606040518060400160405280600381526020017f4e4f540000000000000000000000000000000000000000000000000000000000815250905090565b6115e8611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611674576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166b906131e7565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b601a60149054906101000a900460ff1681565b5f6116b76116b0611936565b8484611dd3565b6001905092915050565b60175481565b601a60189054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611764611936565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e7906131e7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361185e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185590613466565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b6001601a60166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561197457611973613484565b5b6040519080825280602002602001820160405280156119a25781602001602082028036833780820191505090505b50905030815f815181106119b9576119b86134b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a819190613281565b81600181518110611a9557611a946134b1565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611afb3060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611c10565b60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611b5d959493929190613595565b5f604051808303815f87803b158015611b74575f80fd5b505af1158015611b86573d5f803e3d5ffd5b50505050505f601a60166101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611c0c573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c759061365d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce3906136eb565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611dc69190612d34565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e3890613779565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea690613807565b60405180910390fd5b5f8111611ef1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee890613895565b60405180910390fd5b5f611efa611576565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f685750611f38611576565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561269157611fbe6103e8611fb0600e5460125411611f9d57600d5460125411611f9457600754611f98565b6008545b611fa1565b600b545b856129a390919063ffffffff16565b612a1a90919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612063575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120b6575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561219957601554821115612100576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f7906138fd565b60405180910390fd5b6016548261210d85610a65565b612117919061391b565b1115612158576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214f90613998565b60405180910390fd5b436001600654612168919061391b565b11156121815761217783612a63565b15612180575f80fd5b5b60125f815480929190612193906139b6565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612237575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612295576016548261224985610a65565b612253919061391b565b1115612294576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228b90613998565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561231757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123705761236d6103e861235f6010546012541161234c57600f546012541161234357600954612347565b600a545b612350565b600c545b856129a390919063ffffffff16565b612a1a90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561240e575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561244657503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561244f575f90505b5f61245930610a65565b9050601a60189054906101000a900460ff1680156124845750601a60169054906101000a900460ff16155b80156124d6575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124ee5750601a60179054906101000a900460ff165b80156124fb575060175481115b801561250a5750601154601254115b156125bd57601454431115612521575f6013819055505b600260135410612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255d90613a47565b60405180910390fd5b61258361257e8461257984601854612a74565b612a74565b61193d565b5f4790505f8111156125995761259847611ba8565b5b60135f8154809291906125ab906139b6565b9190505550436014819055505061268f565b601a60169054906101000a900460ff16158015612620575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156126385750601a60179054906101000a900460ff165b8015612645575060175481115b80156126545750601154601254115b1561268e576126766126718461266c84601854612a74565b612a74565b61193d565b5f4790505f81111561268c5761268b47611ba8565b5b505b5b505b5f811115612790576126e98160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a8c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127879190612d34565b60405180910390a35b6127e08260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612ae990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128836128378284612ae990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a8c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129268486612ae990919063ffffffff16565b6040516129339190612d34565b60405180910390a350505050565b5f838311158290612988576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161297f9190612c03565b60405180910390fd5b505f83856129969190613a65565b9050809150509392505050565b5f8083036129b3575f9050612a14565b5f82846129c0919061309b565b90508284826129cf9190613ac5565b14612a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a0690613b65565b60405180910390fd5b809150505b92915050565b5f612a5b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612b32565b905092915050565b5f80823b90505f8111915050919050565b5f818311612a825782612a84565b815b905092915050565b5f808284612a9a919061391b565b905083811015612adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad690613bcd565b60405180910390fd5b8091505092915050565b5f612b2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612941565b905092915050565b5f8083118290612b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b6f9190612c03565b60405180910390fd5b505f8385612b869190613ac5565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612bd582612b93565b612bdf8185612b9d565b9350612bef818560208601612bad565b612bf881612bbb565b840191505092915050565b5f6020820190508181035f830152612c1b8184612bcb565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c5082612c27565b9050919050565b612c6081612c46565b8114612c6a575f80fd5b50565b5f81359050612c7b81612c57565b92915050565b5f819050919050565b612c9381612c81565b8114612c9d575f80fd5b50565b5f81359050612cae81612c8a565b92915050565b5f8060408385031215612cca57612cc9612c23565b5b5f612cd785828601612c6d565b9250506020612ce885828601612ca0565b9150509250929050565b5f8115159050919050565b612d0681612cf2565b82525050565b5f602082019050612d1f5f830184612cfd565b92915050565b612d2e81612c81565b82525050565b5f602082019050612d475f830184612d25565b92915050565b5f805f60608486031215612d6457612d63612c23565b5b5f612d7186828701612c6d565b9350506020612d8286828701612c6d565b9250506040612d9386828701612ca0565b9150509250925092565b5f60ff82169050919050565b612db281612d9d565b82525050565b5f602082019050612dcb5f830184612da9565b92915050565b612dda81612c46565b82525050565b5f602082019050612df35f830184612dd1565b92915050565b5f60208284031215612e0e57612e0d612c23565b5b5f612e1b84828501612c6d565b91505092915050565b612e2d81612cf2565b8114612e37575f80fd5b50565b5f81359050612e4881612e24565b92915050565b5f8060408385031215612e6457612e63612c23565b5b5f612e7185828601612c6d565b9250506020612e8285828601612e3a565b9150509250929050565b5f60208284031215612ea157612ea0612c23565b5b5f612eae84828501612e3a565b91505092915050565b5f8060408385031215612ecd57612ecc612c23565b5b5f612eda85828601612c6d565b9250506020612eeb85828601612c6d565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612f7757808604811115612f5357612f52612ef5565b5b6001851615612f625780820291505b8081029050612f7085612f22565b9450612f37565b94509492505050565b5f82612f8f576001905061304a565b81612f9c575f905061304a565b8160018114612fb25760028114612fbc57612feb565b600191505061304a565b60ff841115612fce57612fcd612ef5565b5b8360020a915084821115612fe557612fe4612ef5565b5b5061304a565b5060208310610133831016604e8410600b84101617156130205782820a90508381111561301b5761301a612ef5565b5b61304a565b61302d8484846001612f2e565b9250905081840481111561304457613043612ef5565b5b81810290505b9392505050565b5f61305b82612c81565b915061306683612d9d565b92506130937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612f80565b905092915050565b5f6130a582612c81565b91506130b083612c81565b92508282026130be81612c81565b915082820484148315176130d5576130d4612ef5565b5b5092915050565b5f819050919050565b5f6130ff6130fa6130f584612c27565b6130dc565b612c27565b9050919050565b5f613110826130e5565b9050919050565b5f61312182613106565b9050919050565b61313181613117565b82525050565b5f60408201905061314a5f830185613128565b6131576020830184612d25565b9392505050565b5f8151905061316c81612e24565b92915050565b5f6020828403121561318757613186612c23565b5b5f6131948482850161315e565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131d1602083612b9d565b91506131dc8261319d565b602082019050919050565b5f6020820190508181035f8301526131fe816131c5565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613239601783612b9d565b915061324482613205565b602082019050919050565b5f6020820190508181035f8301526132668161322d565b9050919050565b5f8151905061327b81612c57565b92915050565b5f6020828403121561329657613295612c23565b5b5f6132a38482850161326d565b91505092915050565b5f6040820190506132bf5f830185612dd1565b6132cc6020830184612dd1565b9392505050565b5f819050919050565b5f6132f66132f16132ec846132d3565b6130dc565b612c81565b9050919050565b613306816132dc565b82525050565b5f60c08201905061331f5f830189612dd1565b61332c6020830188612d25565b61333960408301876132fd565b61334660608301866132fd565b6133536080830185612dd1565b61336060a0830184612d25565b979650505050505050565b5f8151905061337981612c8a565b92915050565b5f805f6060848603121561339657613395612c23565b5b5f6133a38682870161336b565b93505060206133b48682870161336b565b92505060406133c58682870161336b565b9150509250925092565b5f6040820190506133e25f830185612dd1565b6133ef6020830184612d25565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613450602683612b9d565b915061345b826133f6565b604082019050919050565b5f6020820190508181035f83015261347d81613444565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61351081612c46565b82525050565b5f6135218383613507565b60208301905092915050565b5f602082019050919050565b5f613543826134de565b61354d81856134e8565b9350613558836134f8565b805f5b8381101561358857815161356f8882613516565b975061357a8361352d565b92505060018101905061355b565b5085935050505092915050565b5f60a0820190506135a85f830188612d25565b6135b560208301876132fd565b81810360408301526135c78186613539565b90506135d66060830185612dd1565b6135e36080830184612d25565b9695505050505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613647602483612b9d565b9150613652826135ed565b604082019050919050565b5f6020820190508181035f8301526136748161363b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6136d5602283612b9d565b91506136e08261367b565b604082019050919050565b5f6020820190508181035f830152613702816136c9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613763602583612b9d565b915061376e82613709565b604082019050919050565b5f6020820190508181035f83015261379081613757565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6137f1602383612b9d565b91506137fc82613797565b604082019050919050565b5f6020820190508181035f83015261381e816137e5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61387f602983612b9d565b915061388a82613825565b604082019050919050565b5f6020820190508181035f8301526138ac81613873565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6138e7601983612b9d565b91506138f2826138b3565b602082019050919050565b5f6020820190508181035f830152613914816138db565b9050919050565b5f61392582612c81565b915061393083612c81565b925082820190508082111561394857613947612ef5565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613982601a83612b9d565b915061398d8261394e565b602082019050919050565b5f6020820190508181035f8301526139af81613976565b9050919050565b5f6139c082612c81565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036139f2576139f1612ef5565b5b600182019050919050565b7f4f6e6c7920322043412062616c616e63652073656c6c000000000000000000005f82015250565b5f613a31601683612b9d565b9150613a3c826139fd565b602082019050919050565b5f6020820190508181035f830152613a5e81613a25565b9050919050565b5f613a6f82612c81565b9150613a7a83612c81565b9250828203905081811115613a9257613a91612ef5565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613acf82612c81565b9150613ada83612c81565b925082613aea57613ae9613a98565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b4f602183612b9d565b9150613b5a82613af5565b604082019050919050565b5f6020820190508181035f830152613b7c81613b43565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613bb7601b83612b9d565b9150613bc282613b83565b602082019050919050565b5f6020820190508181035f830152613be481613bab565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200d2bbe18f5d2f55243d3d76abaa97c462773b31be411a4ea705f895463af525e64736f6c63430008190033

Deployed Bytecode Sourcemap

4284:10044:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12842:351;;;;;;;;;;;;;:::i;:::-;;6523:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7356:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5632:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6800:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7525:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6709:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12656:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5741:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8189:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6903:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3115:148;;;;;;;;;;;;;:::i;:::-;;13201:159;;;;;;;;;;;;;:::i;:::-;;12276:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5445:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12176:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12507:141;;;;;;;;;;;;;:::i;:::-;;13468:820;;;;;;;;;;;;;:::i;:::-;;2901:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5507:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6614:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12405:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5776:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7030:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5569:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5917:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7205:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3271:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4556:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12842:351;12909:10;;;;;;;;;;;12895:24;;:12;:10;:12::i;:::-;:24;;;12887:33;;;;;;12931:20;12952:24;12970:4;12952:9;:24::i;:::-;12931:45;;13003:1;12990:12;:14;12987:73;;;13018:30;13035:12;13018:16;:30::i;:::-;12987:73;13070:18;13089:21;13070:40;;13135:1;13124:10;:12;13121:65;;;13150:24;13163:10;13150:12;:24::i;:::-;13121:65;12876:317;;12842:351::o;6523:83::-;6560:13;6593:5;;;;;;;;;;;;;;;;;6586:12;;6523:83;:::o;7356:161::-;7431:4;7448:39;7457:12;:10;:12::i;:::-;7471:7;7480:6;7448:8;:39::i;:::-;7505:4;7498:11;;7356:161;;;;:::o;5632:51::-;;;;:::o;6800:95::-;6853:7;5262:1;5317:2;:13;;;;:::i;:::-;5305:9;:25;;;;:::i;:::-;6873:14;;6800:95;:::o;7525:313::-;7623:4;7640:36;7650:6;7658:9;7669:6;7640:9;:36::i;:::-;7687:121;7696:6;7704:12;:10;:12::i;:::-;7718:89;7756:6;7718:89;;;;;;;;;;;;;;;;;:11;:19;7730:6;7718:19;;;;;;;;;;;;;;;:33;7738:12;:10;:12::i;:::-;7718:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7687:8;:121::i;:::-;7826:4;7819:11;;7525:313;;;;;:::o;6709:83::-;6750:5;5262:1;6768:16;;6709:83;:::o;12656:177::-;12740:10;;;;;;;;;;;:25;;;;12754:11;;;;;;;;;;;12740:25;12732:34;;;;;;12784:10;12777:27;;;12805:10;;;;;;;;;;;12817:7;12777:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12656:177;;:::o;5741:28::-;;;;;;;;;;;;;:::o;8189:96::-;3038:12;:10;:12::i;:::-;3028:22;;:6;;;;;;;;;;:22;;;3020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8273:4:::1;8254:10;:16;8265:4;8254:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;8189:96:::0;:::o;6903:119::-;6969:7;6996:9;:18;7006:7;6996:18;;;;;;;;;;;;;;;;6989:25;;6903:119;;;:::o;3115:148::-;3038:12;:10;:12::i;:::-;3028:22;;:6;;;;;;;;;;:22;;;3020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3222:1:::1;3185:40;;3206:6;::::0;::::1;;;;;;;;3185:40;;;;;;;;;;;;3253:1;3236:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3115:148::o:0;13201:159::-;3038:12;:10;:12::i;:::-;3028:22;;:6;;;;;;;;;;:22;;;3020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5262:1:::1;5317:2;:13;;;;:::i;:::-;5305:9;:25;;;;:::i;:::-;13254:12;:22;;;;5262:1;5317:2;:13;;;;:::i;:::-;5305:9;:25;;;;:::i;:::-;13287:14;:22;;;;13325:27;5262:1;5317:2;:13;;;;:::i;:::-;5305:9;:25;;;;:::i;:::-;13325:27;;;;;;:::i;:::-;;;;;;;;13201:159::o:0;12276:121::-;3038:12;:10;:12::i;:::-;3028:22;;:6;;;;;;;;;;:22;;;3020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12383:6:::1;12357:17;:23;12375:4;12357:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;12276:121:::0;;:::o;5445:55::-;;;;:::o;12176:92::-;3038:12;:10;:12::i;:::-;3028:22;;:6;;;;;;;;;;:22;;;3020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12253:7:::1;12240:10;;:20;;;;;;;;;;;;;;;;;;12176:92:::0;:::o;12507:141::-;12552:10;;;;;;;;;;;:25;;;;12566:11;;;;;;;;;;;12552:25;12544:34;;;;;;12597:10;;;;;;;;;;;12589:28;;:51;12618:21;12589:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12507:141::o;13468:820::-;3038:12;:10;:12::i;:::-;3028:22;;:6;;;;;;;;;;:22;;;3020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13534:11:::1;;;;;;;;;;;13533:12;13525:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13620:42;13583:15;;:80;;;;;;;;;;;;;;;;;;13674:58;13691:4;13706:15;;;;;;;;;;;5262:1;5317:2;:13;;;;:::i;:::-;5305:9;:25;;;;:::i;:::-;13674:8;:58::i;:::-;13777:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13759:55;;;13823:4;13830:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13759:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13743:13;;:110;;;;;;;;;;;;;;;;;;13901:4;13864:10;:34;13883:13;;;;;;;;;;;13864:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;13960:4;13916:17;:41;13942:13;;;;;;;;;;;13916:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;13975:15;;;;;;;;;;;:31;;;14014:21;14045:4;14051:24;14069:4;14051:9;:24::i;:::-;14076:1;14078::::0;14080:7:::1;:5;:7::i;:::-;14088:15;13975:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14122:13;;;;;;;;;;;14115:29;;;14153:15;;;;;;;;;;;14171:14;14115:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14211:4;14197:11;;:18;;;;;;;;;;;;;;;;;;14240:4;14226:11;;:18;;;;;;;;;;;;;;;;;;14268:12;14255:10;:25;;;;13468:820::o:0;2901:79::-;2939:7;2966:6;;;;;;;;;;;2959:13;;2901:79;:::o;5507:55::-;;;;:::o;6614:87::-;6653:13;6686:7;;;;;;;;;;;;;;;;;6679:14;;6614:87;:::o;12405:94::-;3038:12;:10;:12::i;:::-;3028:22;;:6;;;;;;;;;;:22;;;3020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12484:7:::1;12472:9;;:19;;;;;;;;;;;;;;;;;;12405:94:::0;:::o;5776:30::-;;;;;;;;;;;;;:::o;7030:167::-;7108:4;7125:42;7135:12;:10;:12::i;:::-;7149:9;7160:6;7125:9;:42::i;:::-;7185:4;7178:11;;7030:167;;;;:::o;5569:56::-;;;;:::o;5917:28::-;;;;;;;;;;;;;:::o;7205:143::-;7286:7;7313:11;:18;7325:5;7313:18;;;;;;;;;;;;;;;:27;7332:7;7313:27;;;;;;;;;;;;;;;;7306:34;;7205:143;;;;:::o;3271:244::-;3038:12;:10;:12::i;:::-;3028:22;;:6;;;;;;;;;;:22;;;3020:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3380:1:::1;3360:22;;:8;:22;;::::0;3352:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3470:8;3441:38;;3462:6;::::0;::::1;;;;;;;;3441:38;;;;;;;;;;;;3499:8;3490:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3271:244:::0;:::o;4556:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;656:98::-;709:7;736:10;729:17;;656:98;:::o;11685:483::-;6045:4;6036:6;;:13;;;;;;;;;;;;;;;;;;11763:21:::1;11801:1;11787:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11763:40;;11832:4;11814;11819:1;11814:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11858:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11848:4;11853:1;11848:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11891:62;11908:4;11923:15;;;;;;;;;;;11941:11;11891:8;:62::i;:::-;11964:15;;;;;;;;;;;:66;;;12045:11;12071:1;12087:4;12114;12134:15;11964:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11752:416;6081:5:::0;6072:6;;:14;;;;;;;;;;;;;;;;;;11685:483;:::o;13368:92::-;13425:10;;;;;;;;;;;:19;;:27;13445:6;13425:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13368:92;:::o;7846:335::-;7956:1;7939:19;;:5;:19;;;7931:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8037:1;8018:21;;:7;:21;;;8010:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8119:6;8089:11;:18;8101:5;8089:18;;;;;;;;;;;;;;;:27;8108:7;8089:27;;;;;;;;;;;;;;;:36;;;;8157:7;8141:32;;8150:5;8141:32;;;8166:6;8141:32;;;;;;:::i;:::-;;;;;;;;7846:335;;;:::o;8293:3073::-;8397:1;8381:18;;:4;:18;;;8373:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8474:1;8460:16;;:2;:16;;;8452:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8544:1;8535:6;:10;8527:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8602:17;8646:7;:5;:7::i;:::-;8638:15;;:4;:15;;;;:32;;;;;8663:7;:5;:7::i;:::-;8657:13;;:2;:13;;;;8638:32;8634:2376;;;8699:121;8815:4;8699:111;8722:15;;8711:9;;:26;8710:99;;8767:12;;8756:9;;:23;8755:53;;8794:14;;8755:53;;;8782:10;;8755:53;8710:99;;;8740:12;;8710:99;8699:6;:10;;:111;;;;:::i;:::-;:115;;:121;;;;:::i;:::-;8687:133;;8841:10;:16;8852:4;8841:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8875:15;;;;;;;;;;;8861:30;;:2;:30;;;;8841:50;:77;;;;;8897:17;:21;8915:2;8897:21;;;;;;;;;;;;;;;;;;;;;;;;;8895:23;8841:77;8837:430;;;8958:12;;8948:6;:22;;8940:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9053:14;;9043:6;9027:13;9037:2;9027:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9019:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9141:12;9136:1;9123:10;;:14;;;;:::i;:::-;:30;9119:103;;;9187:14;9198:2;9187:10;:14::i;:::-;9186:15;9178:24;;;;;;9119:103;9240:9;;:11;;;;;;;;;:::i;:::-;;;;;;8837:430;9288:10;:14;9299:2;9288:14;;;;;;;;;;;;;;;;;;;;;;;;;9287:15;:42;;;;;9308:17;:21;9326:2;9308:21;;;;;;;;;;;;;;;;;;;;;;;;;9306:23;9287:42;9283:162;;;9384:14;;9374:6;9358:13;9368:2;9358:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9350:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9283:162;9464:10;:14;9475:2;9464:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;9497:4;9482:20;;:4;:20;;;;9464:38;9461:216;;;9535:126;9656:4;9535:116;9558:16;;9547:9;;:27;9546:104;;9605:13;;9594:9;;:24;9593:56;;9634:15;;9593:56;;;9621:11;;9593:56;9546:104;;;9577:13;;9546:104;9535:6;:10;;:116;;;;:::i;:::-;:120;;:126;;;;:::i;:::-;9523:138;;9461:216;9691:10;:16;9702:4;9691:16;;;;;;;;;;;;;;;;;;;;;;;;;9690:17;:36;;;;;9712:10;:14;9723:2;9712:14;;;;;;;;;;;;;;;;;;;;;;;;;9711:15;9690:36;:60;;;;;9745:4;9730:20;;:4;:20;;;;9690:60;9686:115;;;9784:1;9772:13;;9686:115;9817:28;9848:24;9866:4;9848:9;:24::i;:::-;9817:55;;9891:9;;;;;;;;;;;:20;;;;;9905:6;;;;;;;;;;;9904:7;9891:20;:38;;;;;9915:10;:14;9926:2;9915:14;;;;;;;;;;;;;;;;;;;;;;;;;9891:38;:53;;;;;9933:11;;;;;;;;;;;9891:53;:95;;;;;9969:17;;9948:20;:38;9891:95;:127;;;;;10000:18;;9990:9;;:28;9891:127;9887:1112;;;10058:13;;10043:12;:28;10039:90;;;10108:1;10096:9;:13;;;;10039:90;10166:1;10155:9;;:12;10147:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;10213:67;10230:49;10234:6;10241:37;10245:20;10266:11;;10241:3;:37::i;:::-;10230:3;:49::i;:::-;10213:16;:67::i;:::-;10299:26;10328:21;10299:50;;10392:1;10371:18;:22;10368:105;;;10418:35;10431:21;10418:12;:35::i;:::-;10368:105;10491:9;;:11;;;;;;;;;:::i;:::-;;;;;;10537:12;10521:13;:28;;;;10020:545;9887:1112;;;10590:6;;;;;;;;;;;10589:7;:25;;;;;10600:10;:14;10611:2;10600:14;;;;;;;;;;;;;;;;;;;;;;;;;10589:25;:40;;;;;10618:11;;;;;;;;;;;10589:40;:82;;;;;10654:17;;10633:20;:38;10589:82;:114;;;;;10685:18;;10675:9;;:28;10589:114;10586:413;;;10724:67;10741:49;10745:6;10752:37;10756:20;10777:11;;10752:3;:37::i;:::-;10741:3;:49::i;:::-;10724:16;:67::i;:::-;10810:26;10839:21;10810:50;;10903:1;10882:18;:22;10879:105;;;10929:35;10942:21;10929:12;:35::i;:::-;10879:105;10705:294;10586:413;9887:1112;8672:2338;8634:2376;11035:1;11025:9;:11;11022:161;;;11075:39;11104:9;11075;:24;11093:4;11075:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11050:9;:24;11068:4;11050:24;;;;;;;;;;;;;;;:64;;;;11155:4;11132:39;;11141:4;11132:39;;;11161:9;11132:39;;;;;;:::i;:::-;;;;;;;;11022:161;11209:27;11229:6;11209:9;:15;11219:4;11209:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11193:9;:15;11203:4;11193:15;;;;;;;;;;;;;;;:43;;;;11261:40;11279:21;11290:9;11279:6;:10;;:21;;;;:::i;:::-;11261:9;:13;11271:2;11261:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11247:9;:13;11257:2;11247:13;;;;;;;;;;;;;;;:54;;;;11332:2;11317:41;;11326:4;11317:41;;;11336:21;11347:9;11336:6;:10;;:21;;;;:::i;:::-;11317:41;;;;;;:::i;:::-;;;;;;;;8362:3004;8293:3073;;;:::o;1793:190::-;1879:7;1912:1;1907;:6;;1915:12;1899:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1939:9;1955:1;1951;:5;;;;:::i;:::-;1939:17;;1974:1;1967:8;;;1793:190;;;;;:::o;1991:246::-;2049:7;2078:1;2073;:6;2069:47;;2103:1;2096:8;;;;2069:47;2126:9;2142:1;2138;:5;;;;:::i;:::-;2126:17;;2171:1;2166;2162;:5;;;;:::i;:::-;:10;2154:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2228:1;2221:8;;;1991:246;;;;;:::o;2245:132::-;2303:7;2330:39;2334:1;2337;2330:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2323:46;;2245:132;;;;:::o;11482:195::-;11541:4;11558:12;11625:7;11613:20;11605:28;;11668:1;11661:4;:8;11654:15;;;11482:195;;;:::o;11376:98::-;11433:7;11460:1;11458;:3;11457:9;;11465:1;11457:9;;;11463:1;11457:9;11450:16;;11376:98;;;;:::o;1462:179::-;1520:7;1540:9;1556:1;1552;:5;;;;:::i;:::-;1540:17;;1581:1;1576;:6;;1568:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1632:1;1625:8;;;1462:179;;;;:::o;1649:136::-;1707:7;1734:43;1738:1;1741;1734:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1727:50;;1649:136;;;;:::o;2385:189::-;2471:7;2503:1;2499;:5;2506:12;2491:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2530:9;2546:1;2542;:5;;;;:::i;:::-;2530:17;;2565:1;2558:8;;;2385: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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:118::-;4833:24;4851:5;4833:24;:::i;:::-;4828:3;4821:37;4746:118;;:::o;4870:222::-;4963:4;5001:2;4990:9;4986:18;4978:26;;5014:71;5082:1;5071:9;5067:17;5058:6;5014:71;:::i;:::-;4870:222;;;;:::o;5098:329::-;5157:6;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5098:329;;;;:::o;5433:116::-;5503:21;5518:5;5503:21;:::i;:::-;5496:5;5493:32;5483:60;;5539:1;5536;5529:12;5483:60;5433:116;:::o;5555:133::-;5598:5;5636:6;5623:20;5614:29;;5652:30;5676:5;5652:30;:::i;:::-;5555:133;;;;:::o;5694:468::-;5759:6;5767;5816:2;5804:9;5795:7;5791:23;5787:32;5784:119;;;5822:79;;:::i;:::-;5784:119;5942:1;5967:53;6012:7;6003:6;5992:9;5988:22;5967:53;:::i;:::-;5957:63;;5913:117;6069:2;6095:50;6137:7;6128:6;6117:9;6113:22;6095:50;:::i;:::-;6085:60;;6040:115;5694:468;;;;;:::o;6168:323::-;6224:6;6273:2;6261:9;6252:7;6248:23;6244:32;6241:119;;;6279:79;;:::i;:::-;6241:119;6399:1;6424:50;6466:7;6457:6;6446:9;6442:22;6424:50;:::i;:::-;6414:60;;6370:114;6168:323;;;;:::o;6497:474::-;6565:6;6573;6622:2;6610:9;6601:7;6597:23;6593:32;6590:119;;;6628:79;;:::i;:::-;6590:119;6748:1;6773:53;6818:7;6809:6;6798:9;6794:22;6773:53;:::i;:::-;6763:63;;6719:117;6875:2;6901:53;6946:7;6937:6;6926:9;6922:22;6901:53;:::i;:::-;6891:63;;6846:118;6497:474;;;;;:::o;6977:180::-;7025:77;7022:1;7015:88;7122:4;7119:1;7112:15;7146:4;7143:1;7136:15;7163:102;7205:8;7252:5;7249:1;7245:13;7224:34;;7163:102;;;:::o;7271:848::-;7332:5;7339:4;7363:6;7354:15;;7387:5;7378:14;;7401:712;7422:1;7412:8;7409:15;7401:712;;;7517:4;7512:3;7508:14;7502:4;7499:24;7496:50;;;7526:18;;:::i;:::-;7496:50;7576:1;7566:8;7562:16;7559:451;;;7991:4;7984:5;7980:16;7971:25;;7559:451;8041:4;8035;8031:15;8023:23;;8071:32;8094:8;8071:32;:::i;:::-;8059:44;;7401:712;;;7271:848;;;;;;;:::o;8125:1073::-;8179:5;8370:8;8360:40;;8391:1;8382:10;;8393:5;;8360:40;8419:4;8409:36;;8436:1;8427:10;;8438:5;;8409:36;8505:4;8553:1;8548:27;;;;8589:1;8584:191;;;;8498:277;;8548:27;8566:1;8557:10;;8568:5;;;8584:191;8629:3;8619:8;8616:17;8613:43;;;8636:18;;:::i;:::-;8613:43;8685:8;8682:1;8678:16;8669:25;;8720:3;8713:5;8710:14;8707:40;;;8727:18;;:::i;:::-;8707:40;8760:5;;;8498:277;;8884:2;8874:8;8871:16;8865:3;8859:4;8856:13;8852:36;8834:2;8824:8;8821:16;8816:2;8810:4;8807:12;8803:35;8787:111;8784:246;;;8940:8;8934:4;8930:19;8921:28;;8975:3;8968:5;8965:14;8962:40;;;8982:18;;:::i;:::-;8962:40;9015:5;;8784:246;9055:42;9093:3;9083:8;9077:4;9074:1;9055:42;:::i;:::-;9040:57;;;;9129:4;9124:3;9120:14;9113:5;9110:25;9107:51;;;9138:18;;:::i;:::-;9107:51;9187:4;9180:5;9176:16;9167:25;;8125:1073;;;;;;:::o;9204:281::-;9262:5;9286:23;9304:4;9286:23;:::i;:::-;9278:31;;9330:25;9346:8;9330:25;:::i;:::-;9318:37;;9374:104;9411:66;9401:8;9395:4;9374:104;:::i;:::-;9365:113;;9204:281;;;;:::o;9491:410::-;9531:7;9554:20;9572:1;9554:20;:::i;:::-;9549:25;;9588:20;9606:1;9588:20;:::i;:::-;9583:25;;9643:1;9640;9636:9;9665:30;9683:11;9665:30;:::i;:::-;9654:41;;9844:1;9835:7;9831:15;9828:1;9825:22;9805:1;9798:9;9778:83;9755:139;;9874:18;;:::i;:::-;9755:139;9539:362;9491:410;;;;:::o;9907:60::-;9935:3;9956:5;9949:12;;9907:60;;;:::o;9973:142::-;10023:9;10056:53;10074:34;10083:24;10101:5;10083:24;:::i;:::-;10074:34;:::i;:::-;10056:53;:::i;:::-;10043:66;;9973:142;;;:::o;10121:126::-;10171:9;10204:37;10235:5;10204:37;:::i;:::-;10191:50;;10121:126;;;:::o;10253:134::-;10311:9;10344:37;10375:5;10344:37;:::i;:::-;10331:50;;10253:134;;;:::o;10393:147::-;10488:45;10527:5;10488:45;:::i;:::-;10483:3;10476:58;10393:147;;:::o;10546:348::-;10675:4;10713:2;10702:9;10698:18;10690:26;;10726:79;10802:1;10791:9;10787:17;10778:6;10726:79;:::i;:::-;10815:72;10883:2;10872:9;10868:18;10859:6;10815:72;:::i;:::-;10546:348;;;;;:::o;10900:137::-;10954:5;10985:6;10979:13;10970:22;;11001:30;11025:5;11001:30;:::i;:::-;10900:137;;;;:::o;11043:345::-;11110:6;11159:2;11147:9;11138:7;11134:23;11130:32;11127:119;;;11165:79;;:::i;:::-;11127:119;11285:1;11310:61;11363:7;11354:6;11343:9;11339:22;11310:61;:::i;:::-;11300:71;;11256:125;11043:345;;;;:::o;11394:182::-;11534:34;11530:1;11522:6;11518:14;11511:58;11394:182;:::o;11582:366::-;11724:3;11745:67;11809:2;11804:3;11745:67;:::i;:::-;11738:74;;11821:93;11910:3;11821:93;:::i;:::-;11939:2;11934:3;11930:12;11923:19;;11582:366;;;:::o;11954:419::-;12120:4;12158:2;12147:9;12143:18;12135:26;;12207:9;12201:4;12197:20;12193:1;12182:9;12178:17;12171:47;12235:131;12361:4;12235:131;:::i;:::-;12227:139;;11954:419;;;:::o;12379:173::-;12519:25;12515:1;12507:6;12503:14;12496:49;12379:173;:::o;12558:366::-;12700:3;12721:67;12785:2;12780:3;12721:67;:::i;:::-;12714:74;;12797:93;12886:3;12797:93;:::i;:::-;12915:2;12910:3;12906:12;12899:19;;12558:366;;;:::o;12930:419::-;13096:4;13134:2;13123:9;13119:18;13111:26;;13183:9;13177:4;13173:20;13169:1;13158:9;13154:17;13147:47;13211:131;13337:4;13211:131;:::i;:::-;13203:139;;12930:419;;;:::o;13355:143::-;13412:5;13443:6;13437:13;13428:22;;13459:33;13486:5;13459:33;:::i;:::-;13355:143;;;;:::o;13504:351::-;13574:6;13623:2;13611:9;13602:7;13598:23;13594:32;13591:119;;;13629:79;;:::i;:::-;13591:119;13749:1;13774:64;13830:7;13821:6;13810:9;13806:22;13774:64;:::i;:::-;13764:74;;13720:128;13504:351;;;;:::o;13861:332::-;13982:4;14020:2;14009:9;14005:18;13997:26;;14033:71;14101:1;14090:9;14086:17;14077:6;14033:71;:::i;:::-;14114:72;14182:2;14171:9;14167:18;14158:6;14114:72;:::i;:::-;13861:332;;;;;:::o;14199:85::-;14244:7;14273:5;14262:16;;14199:85;;;:::o;14290:158::-;14348:9;14381:61;14399:42;14408:32;14434:5;14408:32;:::i;:::-;14399:42;:::i;:::-;14381:61;:::i;:::-;14368:74;;14290:158;;;:::o;14454:147::-;14549:45;14588:5;14549:45;:::i;:::-;14544:3;14537:58;14454:147;;:::o;14607:807::-;14856:4;14894:3;14883:9;14879:19;14871:27;;14908:71;14976:1;14965:9;14961:17;14952:6;14908:71;:::i;:::-;14989:72;15057:2;15046:9;15042:18;15033:6;14989:72;:::i;:::-;15071:80;15147:2;15136:9;15132:18;15123:6;15071:80;:::i;:::-;15161;15237:2;15226:9;15222:18;15213:6;15161:80;:::i;:::-;15251:73;15319:3;15308:9;15304:19;15295:6;15251:73;:::i;:::-;15334;15402:3;15391:9;15387:19;15378:6;15334:73;:::i;:::-;14607:807;;;;;;;;;:::o;15420:143::-;15477:5;15508:6;15502:13;15493:22;;15524:33;15551:5;15524:33;:::i;:::-;15420:143;;;;:::o;15569:663::-;15657:6;15665;15673;15722:2;15710:9;15701:7;15697:23;15693:32;15690:119;;;15728:79;;:::i;:::-;15690:119;15848:1;15873:64;15929:7;15920:6;15909:9;15905:22;15873:64;:::i;:::-;15863:74;;15819:128;15986:2;16012:64;16068:7;16059:6;16048:9;16044:22;16012:64;:::i;:::-;16002:74;;15957:129;16125:2;16151:64;16207:7;16198:6;16187:9;16183:22;16151:64;:::i;:::-;16141:74;;16096:129;15569:663;;;;;:::o;16238:332::-;16359:4;16397:2;16386:9;16382:18;16374:26;;16410:71;16478:1;16467:9;16463:17;16454:6;16410:71;:::i;:::-;16491:72;16559:2;16548:9;16544:18;16535:6;16491:72;:::i;:::-;16238:332;;;;;:::o;16576:225::-;16716:34;16712:1;16704:6;16700:14;16693:58;16785:8;16780:2;16772:6;16768:15;16761:33;16576:225;:::o;16807:366::-;16949:3;16970:67;17034:2;17029:3;16970:67;:::i;:::-;16963:74;;17046:93;17135:3;17046:93;:::i;:::-;17164:2;17159:3;17155:12;17148:19;;16807:366;;;:::o;17179:419::-;17345:4;17383:2;17372:9;17368:18;17360:26;;17432:9;17426:4;17422:20;17418:1;17407:9;17403:17;17396:47;17460:131;17586:4;17460:131;:::i;:::-;17452:139;;17179:419;;;:::o;17604:180::-;17652:77;17649:1;17642:88;17749:4;17746:1;17739:15;17773:4;17770:1;17763:15;17790:180;17838:77;17835:1;17828:88;17935:4;17932:1;17925:15;17959:4;17956:1;17949:15;17976:114;18043:6;18077:5;18071:12;18061:22;;17976:114;;;:::o;18096:184::-;18195:11;18229:6;18224:3;18217:19;18269:4;18264:3;18260:14;18245:29;;18096:184;;;;:::o;18286:132::-;18353:4;18376:3;18368:11;;18406:4;18401:3;18397:14;18389:22;;18286:132;;;:::o;18424:108::-;18501:24;18519:5;18501:24;:::i;:::-;18496:3;18489:37;18424:108;;:::o;18538:179::-;18607:10;18628:46;18670:3;18662:6;18628:46;:::i;:::-;18706:4;18701:3;18697:14;18683:28;;18538:179;;;;:::o;18723:113::-;18793:4;18825;18820:3;18816:14;18808:22;;18723:113;;;:::o;18872:732::-;18991:3;19020:54;19068:5;19020:54;:::i;:::-;19090:86;19169:6;19164:3;19090:86;:::i;:::-;19083:93;;19200:56;19250:5;19200:56;:::i;:::-;19279:7;19310:1;19295:284;19320:6;19317:1;19314:13;19295:284;;;19396:6;19390:13;19423:63;19482:3;19467:13;19423:63;:::i;:::-;19416:70;;19509:60;19562:6;19509:60;:::i;:::-;19499:70;;19355:224;19342:1;19339;19335:9;19330:14;;19295:284;;;19299:14;19595:3;19588:10;;18996:608;;;18872:732;;;;:::o;19610:831::-;19873:4;19911:3;19900:9;19896:19;19888:27;;19925:71;19993:1;19982:9;19978:17;19969:6;19925:71;:::i;:::-;20006:80;20082:2;20071:9;20067:18;20058:6;20006:80;:::i;:::-;20133:9;20127:4;20123:20;20118:2;20107:9;20103:18;20096:48;20161:108;20264:4;20255:6;20161:108;:::i;:::-;20153:116;;20279:72;20347:2;20336:9;20332:18;20323:6;20279:72;:::i;:::-;20361:73;20429:3;20418:9;20414:19;20405:6;20361:73;:::i;:::-;19610:831;;;;;;;;:::o;20447:223::-;20587:34;20583:1;20575:6;20571:14;20564:58;20656:6;20651:2;20643:6;20639:15;20632:31;20447:223;:::o;20676:366::-;20818:3;20839:67;20903:2;20898:3;20839:67;:::i;:::-;20832:74;;20915:93;21004:3;20915:93;:::i;:::-;21033:2;21028:3;21024:12;21017:19;;20676:366;;;:::o;21048:419::-;21214:4;21252:2;21241:9;21237:18;21229:26;;21301:9;21295:4;21291:20;21287:1;21276:9;21272:17;21265:47;21329:131;21455:4;21329:131;:::i;:::-;21321:139;;21048:419;;;:::o;21473:221::-;21613:34;21609:1;21601:6;21597:14;21590:58;21682:4;21677:2;21669:6;21665:15;21658:29;21473:221;:::o;21700:366::-;21842:3;21863:67;21927:2;21922:3;21863:67;:::i;:::-;21856:74;;21939:93;22028:3;21939:93;:::i;:::-;22057:2;22052:3;22048:12;22041:19;;21700:366;;;:::o;22072:419::-;22238:4;22276:2;22265:9;22261:18;22253:26;;22325:9;22319:4;22315:20;22311:1;22300:9;22296:17;22289:47;22353:131;22479:4;22353:131;:::i;:::-;22345:139;;22072:419;;;:::o;22497:224::-;22637:34;22633:1;22625:6;22621:14;22614:58;22706:7;22701:2;22693:6;22689:15;22682:32;22497:224;:::o;22727:366::-;22869:3;22890:67;22954:2;22949:3;22890:67;:::i;:::-;22883:74;;22966:93;23055:3;22966:93;:::i;:::-;23084:2;23079:3;23075:12;23068:19;;22727:366;;;:::o;23099:419::-;23265:4;23303:2;23292:9;23288:18;23280:26;;23352:9;23346:4;23342:20;23338:1;23327:9;23323:17;23316:47;23380:131;23506:4;23380:131;:::i;:::-;23372:139;;23099:419;;;:::o;23524:222::-;23664:34;23660:1;23652:6;23648:14;23641:58;23733:5;23728:2;23720:6;23716:15;23709:30;23524:222;:::o;23752:366::-;23894:3;23915:67;23979:2;23974:3;23915:67;:::i;:::-;23908:74;;23991:93;24080:3;23991:93;:::i;:::-;24109:2;24104:3;24100:12;24093:19;;23752:366;;;:::o;24124:419::-;24290:4;24328:2;24317:9;24313:18;24305:26;;24377:9;24371:4;24367:20;24363:1;24352:9;24348:17;24341:47;24405:131;24531:4;24405:131;:::i;:::-;24397:139;;24124:419;;;:::o;24549:228::-;24689:34;24685:1;24677:6;24673:14;24666:58;24758:11;24753:2;24745:6;24741:15;24734:36;24549:228;:::o;24783:366::-;24925:3;24946:67;25010:2;25005:3;24946:67;:::i;:::-;24939:74;;25022:93;25111:3;25022:93;:::i;:::-;25140:2;25135:3;25131:12;25124:19;;24783:366;;;:::o;25155:419::-;25321:4;25359:2;25348:9;25344:18;25336:26;;25408:9;25402:4;25398:20;25394:1;25383:9;25379:17;25372:47;25436:131;25562:4;25436:131;:::i;:::-;25428:139;;25155:419;;;:::o;25580:175::-;25720:27;25716:1;25708:6;25704:14;25697:51;25580:175;:::o;25761:366::-;25903:3;25924:67;25988:2;25983:3;25924:67;:::i;:::-;25917:74;;26000:93;26089:3;26000:93;:::i;:::-;26118:2;26113:3;26109:12;26102:19;;25761:366;;;:::o;26133:419::-;26299:4;26337:2;26326:9;26322:18;26314:26;;26386:9;26380:4;26376:20;26372:1;26361:9;26357:17;26350:47;26414:131;26540:4;26414:131;:::i;:::-;26406:139;;26133:419;;;:::o;26558:191::-;26598:3;26617:20;26635:1;26617:20;:::i;:::-;26612:25;;26651:20;26669:1;26651:20;:::i;:::-;26646:25;;26694:1;26691;26687:9;26680:16;;26715:3;26712:1;26709:10;26706:36;;;26722:18;;:::i;:::-;26706:36;26558:191;;;;:::o;26755:176::-;26895:28;26891:1;26883:6;26879:14;26872:52;26755:176;:::o;26937:366::-;27079:3;27100:67;27164:2;27159:3;27100:67;:::i;:::-;27093:74;;27176:93;27265:3;27176:93;:::i;:::-;27294:2;27289:3;27285:12;27278:19;;26937:366;;;:::o;27309:419::-;27475:4;27513:2;27502:9;27498:18;27490:26;;27562:9;27556:4;27552:20;27548:1;27537:9;27533:17;27526:47;27590:131;27716:4;27590:131;:::i;:::-;27582:139;;27309:419;;;:::o;27734:233::-;27773:3;27796:24;27814:5;27796:24;:::i;:::-;27787:33;;27842:66;27835:5;27832:77;27829:103;;27912:18;;:::i;:::-;27829:103;27959:1;27952:5;27948:13;27941:20;;27734:233;;;:::o;27973:172::-;28113:24;28109:1;28101:6;28097:14;28090:48;27973:172;:::o;28151:366::-;28293:3;28314:67;28378:2;28373:3;28314:67;:::i;:::-;28307:74;;28390:93;28479:3;28390:93;:::i;:::-;28508:2;28503:3;28499:12;28492:19;;28151:366;;;:::o;28523:419::-;28689:4;28727:2;28716:9;28712:18;28704:26;;28776:9;28770:4;28766:20;28762:1;28751:9;28747:17;28740:47;28804:131;28930:4;28804:131;:::i;:::-;28796:139;;28523:419;;;:::o;28948:194::-;28988:4;29008:20;29026:1;29008:20;:::i;:::-;29003:25;;29042:20;29060:1;29042:20;:::i;:::-;29037:25;;29086:1;29083;29079:9;29071:17;;29110:1;29104:4;29101:11;29098:37;;;29115:18;;:::i;:::-;29098:37;28948:194;;;;:::o;29148:180::-;29196:77;29193:1;29186:88;29293:4;29290:1;29283:15;29317:4;29314:1;29307:15;29334:185;29374:1;29391:20;29409:1;29391:20;:::i;:::-;29386:25;;29425:20;29443:1;29425:20;:::i;:::-;29420:25;;29464:1;29454:35;;29469:18;;:::i;:::-;29454:35;29511:1;29508;29504:9;29499:14;;29334:185;;;;:::o;29525:220::-;29665:34;29661:1;29653:6;29649:14;29642:58;29734:3;29729:2;29721:6;29717:15;29710:28;29525:220;:::o;29751:366::-;29893:3;29914:67;29978:2;29973:3;29914:67;:::i;:::-;29907:74;;29990:93;30079:3;29990:93;:::i;:::-;30108:2;30103:3;30099:12;30092:19;;29751:366;;;:::o;30123:419::-;30289:4;30327:2;30316:9;30312:18;30304:26;;30376:9;30370:4;30366:20;30362:1;30351:9;30347:17;30340:47;30404:131;30530:4;30404:131;:::i;:::-;30396:139;;30123:419;;;:::o;30548:177::-;30688:29;30684:1;30676:6;30672:14;30665:53;30548:177;:::o;30731:366::-;30873:3;30894:67;30958:2;30953:3;30894:67;:::i;:::-;30887:74;;30970:93;31059:3;30970:93;:::i;:::-;31088:2;31083:3;31079:12;31072:19;;30731:366;;;:::o;31103:419::-;31269:4;31307:2;31296:9;31292:18;31284:26;;31356:9;31350:4;31346:20;31342:1;31331:9;31327:17;31320:47;31384:131;31510:4;31384:131;:::i;:::-;31376:139;;31103:419;;;:::o

Swarm Source

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