ETH Price: $3,845.16 (+6.55%)

Token

ERC-20: DowJones69420 (DJX)
 

Overview

Max Total Supply

69,420,000 DJX

Holders

66

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 DJX

Value
$0.00
0x0c514383a91d723c5bd806340a5a4e6b360866e0
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:
DowJones69420ERC20

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-04
*/

// SPDX-License-Identifier: MIT
/*

    Portal  : https://t.me/DowJonesDJX
    Website : https://dowjonesdjx.com
    Twitter : https://x.com/DJX_ERC20


*/
pragma solidity 0.8.26;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

contract DowJones69420ERC20 is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromMax;
    mapping (address => bool) public marketPair;
    mapping (uint256 => uint256) private perBuyCount;
    address payable private _taxWallet;
    uint256 private firstBlock = 0;

    uint256 private _initialBuyTax=15;
    uint256 private _initialSellTax=15;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=1;
    uint256 private _reduceSellTaxAt=1;
    uint256 private _preventSwapBefore=35;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 69420000 * 10**_decimals;
    string private constant _name = unicode"DowJones69420";
    string private constant _symbol = unicode"DJX";
    uint256 public _maxTxAmount =   694200 * 10**_decimals;
    uint256 public _maxWalletSize = 694200 * 10**_decimals;
    uint256 public _taxSwapThreshold= 69420 * 10**_decimals;
    uint256 public _maxTaxSwap= 694200 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 private sellsPerBlock = 3;
    uint256 private buysFirstBlock = 100;
    bool private inSwap = false;
    bool private swapEnabled = false;

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

    constructor () {

        _taxWallet = payable(_msgSender());
        _balances[_taxWallet] = _tTotal;
        _isExcludedFromMax[_taxWallet] = true;
        _isExcludedFromMax[address(this)] = true;
        _isExcludedFromMax[address(uniswapV2Pair)] = true;
        emit Transfer(address(0),_taxWallet, _tTotal);

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketPair[address(uniswapV2Pair)] = true;
        _isExcludedFromMax[address(uniswapV2Pair)] = true;
    }

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

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

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;

        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(100);

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

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

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

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

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

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

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

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

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

    function rescueETH() external {
        require(_msgSender() == _taxWallet);
        payable(_taxWallet).transfer(address(this).balance);
    }

    function rescueTokens(address _tokenAddr, uint _amount) external {
        require(_msgSender() == _taxWallet);
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

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

    function enableTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }
    function _setCaSellsBlock(uint256 _sells) external onlyOwner(){
        sellsPerBlock=_sells;
    }
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sells","type":"uint256"}],"name":"_setCaSellsBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600755600f600855600f6009555f600a555f600b556001600c556001600d556023600e555f600f555f6010555f6011556009600a6100439190610af6565b620a97b86100519190610b40565b6012556009600a6100629190610af6565b620a97b86100709190610b40565b6013556009600a6100819190610af6565b62010f2c61008f9190610b40565b6014556009600a6100a09190610af6565b620a97b86100ae9190610b40565b601555600360185560646019555f601a5f6101000a81548160ff0219169083151502179055505f601a60016101000a81548160ff0219169083151502179055503480156100f9575f80fd5b505f6101096107bb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101b36107bb60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6102009190610af6565b63042343e061020f9190610b40565b60015f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6104309190610af6565b63042343e061043f9190610b40565b60405161044c9190610b90565b60405180910390a3737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104f63060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6104dc9190610af6565b63042343e06104eb9190610b40565b6107c260201b60201c565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610560573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105849190610c07565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561060a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061062e9190610c07565b6040518363ffffffff1660e01b815260040161064b929190610c41565b6020604051808303815f875af1158015610667573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068b9190610c07565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610d94565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610830576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082790610ce8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361089e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089590610d76565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516109789190610b90565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115610a07578086048111156109e3576109e2610985565b5b60018516156109f25780820291505b8081029050610a00856109b2565b94506109c7565b94509492505050565b5f82610a1f5760019050610ada565b81610a2c575f9050610ada565b8160018114610a425760028114610a4c57610a7b565b6001915050610ada565b60ff841115610a5e57610a5d610985565b5b8360020a915084821115610a7557610a74610985565b5b50610ada565b5060208310610133831016604e8410600b8410161715610ab05782820a905083811115610aab57610aaa610985565b5b610ada565b610abd84848460016109be565b92509050818404811115610ad457610ad3610985565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610b0082610ae1565b9150610b0b83610aea565b9250610b387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610a10565b905092915050565b5f610b4a82610ae1565b9150610b5583610ae1565b9250828202610b6381610ae1565b91508282048414831517610b7a57610b79610985565b5b5092915050565b610b8a81610ae1565b82525050565b5f602082019050610ba35f830184610b81565b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610bd682610bad565b9050919050565b610be681610bcc565b8114610bf0575f80fd5b50565b5f81519050610c0181610bdd565b92915050565b5f60208284031215610c1c57610c1b610ba9565b5b5f610c2984828501610bf3565b91505092915050565b610c3b81610bcc565b82525050565b5f604082019050610c545f830185610c32565b610c616020830184610c32565b9392505050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610cd2602483610c68565b9150610cdd82610c78565b604082019050919050565b5f6020820190508181035f830152610cff81610cc6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610d60602283610c68565b9150610d6b82610d06565b604082019050919050565b5f6020820190508181035f830152610d8d81610d54565b9050919050565b6133e680610da15f395ff3fe608060405260043610610143575f3560e01c8063715018a6116100b557806395d89b411161006e57806395d89b41146103fa578063a9059cbb14610424578063bf474bed14610460578063dd62ed3e1461048a578063f2fde38b146104c6578063f5b3c3bf146104ee5761014a565b8063715018a61461033a578063751039fc146103505780637d1db4a5146103665780638a8c523c146103905780638da5cb5b146103a65780638f9a55c0146103d05761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806349bd5a5e1461028457806357376198146102ae57806367dd8ff5146102d657806370a08231146102fe5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b457806318160ddd146101de57806320800a00146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052a565b60405161016f9190612419565b60405180910390f35b348015610183575f80fd5b5061019e600480360381019061019991906124ca565b610567565b6040516101ab9190612522565b60405180910390f35b3480156101bf575f80fd5b506101c8610584565b6040516101d5919061254a565b60405180910390f35b3480156101e9575f80fd5b506101f261058a565b6040516101ff919061254a565b60405180910390f35b348015610213575f80fd5b5061021c6105ad565b005b348015610229575f80fd5b50610244600480360381019061023f9190612563565b610673565b6040516102519190612522565b60405180910390f35b348015610265575f80fd5b5061026e610747565b60405161027b91906125ce565b60405180910390f35b34801561028f575f80fd5b5061029861074f565b6040516102a591906125f6565b60405180910390f35b3480156102b9575f80fd5b506102d460048036038101906102cf91906124ca565b610774565b005b3480156102e1575f80fd5b506102fc60048036038101906102f7919061260f565b610874565b005b348015610309575f80fd5b50610324600480360381019061031f919061263a565b610912565b604051610331919061254a565b60405180910390f35b348015610345575f80fd5b5061034e610958565b005b34801561035b575f80fd5b50610364610aa6565b005b348015610371575f80fd5b5061037a610bd5565b604051610387919061254a565b60405180910390f35b34801561039b575f80fd5b506103a4610bdb565b005b3480156103b1575f80fd5b506103ba610e94565b6040516103c791906125f6565b60405180910390f35b3480156103db575f80fd5b506103e4610ebb565b6040516103f1919061254a565b60405180910390f35b348015610405575f80fd5b5061040e610ec1565b60405161041b9190612419565b60405180910390f35b34801561042f575f80fd5b5061044a600480360381019061044591906124ca565b610efe565b6040516104579190612522565b60405180910390f35b34801561046b575f80fd5b50610474610f1b565b604051610481919061254a565b60405180910390f35b348015610495575f80fd5b506104b060048036038101906104ab9190612665565b610f21565b6040516104bd919061254a565b60405180910390f35b3480156104d1575f80fd5b506104ec60048036038101906104e7919061263a565b610fa3565b005b3480156104f9575f80fd5b50610514600480360381019061050f919061263a565b611160565b6040516105219190612522565b60405180910390f35b60606040518060400160405280600d81526020017f446f774a6f6e6573363934323000000000000000000000000000000000000000815250905090565b5f61057a61057361117d565b8484611184565b6001905092915050565b60155481565b5f6009600a61059991906127ff565b63042343e06105a89190612849565b905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105ed61117d565b73ffffffffffffffffffffffffffffffffffffffff161461060c575f80fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610670573d5f803e3d5ffd5b50565b5f61067f848484611347565b61073c8461068b61117d565b610737856040518060600160405280602881526020016133896028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106ee61117d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e979092919063ffffffff16565b611184565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107b461117d565b73ffffffffffffffffffffffffffffffffffffffff16146107d3575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161082f9291906128e5565b6020604051808303815f875af115801561084b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086f9190612936565b505050565b61087c61117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff906129ab565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61096061117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e3906129ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aae61117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b31906129ab565b60405180910390fd5b6009600a610b4891906127ff565b63042343e0610b579190612849565b6012819055506009600a610b6b91906127ff565b63042343e0610b7a9190612849565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610baf91906127ff565b63042343e0610bbe9190612849565b604051610bcb919061254a565b60405180910390a1565b60125481565b610be361117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906129ab565b60405180910390fd5b601760149054906101000a900460ff1615610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb690612a13565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d0730610912565b5f80610d11610e94565b426040518863ffffffff1660e01b8152600401610d3396959493929190612a6a565b60606040518083038185885af1158015610d4f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d749190612add565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e14929190612b2d565b6020604051808303815f875af1158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e549190612936565b506001601a60016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600381526020017f444a580000000000000000000000000000000000000000000000000000000000815250905090565b5f610f11610f0a61117d565b8484611347565b6001905092915050565b60145481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fab61117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e906129ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c90612bc4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990612c52565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790612ce0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161133a919061254a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90612d6e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90612dfc565b60405180910390fd5b5f8111611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90612e8a565b60405180910390fd5b5f61146e610e94565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114dc57506114ac610e94565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611be75761151d606461150f600c54600f54116114fc57600854611500565b600a545b85611ef990919063ffffffff16565b611f7090919063ffffffff16565b905060075443036115a45760195460055f4381526020019081526020015f20541061157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612ef2565b60405180910390fd5b60055f4381526020019081526020015f205f81548092919061159e90612f10565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611647575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561169a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611754576012548211156116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db90612fa1565b60405180910390fd5b601354826116f185610912565b6116fb9190612fbf565b111561173c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117339061303c565b60405180910390fd5b600f5f81548092919061174e90612f10565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117f2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611850576013548261180485610912565b61180e9190612fbf565b111561184f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118469061303c565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118d257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611916576119136064611905600d54600f54116118f2576009546118f6565b600b545b85611ef990919063ffffffff16565b611f7090919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119b4575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119ec57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119f5575f90505b5f6119ff30610912565b9050601a5f9054906101000a900460ff16158015611a63575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a7b5750601a60019054906101000a900460ff165b8015611a88575060145481115b8015611a975750600e54600f54115b15611b1457601154431115611aae575f6010819055505b60185460105410611abd575f80fd5b611ada611ad584611ad084601554611fb9565b611fb9565b611fd1565b5f4790505f811115611af057611aef4761223a565b5b60105f815480929190611b0290612f10565b91905055504360118190555050611be5565b601a5f9054906101000a900460ff16158015611b76575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611b8e5750601a60019054906101000a900460ff165b8015611b9b575060145481115b8015611baa5750600e54600f54115b15611be457611bcc611bc784611bc284601554611fb9565b611fb9565b611fd1565b5f4790505f811115611be257611be14761223a565b5b505b5b505b5f811115611ce657611c3f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cdd919061254a565b60405180910390a35b611d368260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122ff90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dd9611d8d82846122ff90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e7c84866122ff90919063ffffffff16565b604051611e89919061254a565b60405180910390a350505050565b5f838311158290611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed59190612419565b60405180910390fd5b505f8385611eec919061305a565b9050809150509392505050565b5f808303611f09575f9050611f6a565b5f8284611f169190612849565b9050828482611f2591906130ba565b14611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9061315a565b60405180910390fd5b809150505b92915050565b5f611fb183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612348565b905092915050565b5f818311611fc75782611fc9565b815b905092915050565b6001601a5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561200757612006613178565b5b6040519080825280602002602001820160405280156120355781602001602082028036833780820191505090505b50905030815f8151811061204c5761204b6131a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061211491906131e6565b81600181518110612128576121276131a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061218e3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611184565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121f09594939291906132c8565b5f604051808303815f87803b158015612207575f80fd5b505af1158015612219573d5f803e3d5ffd5b50505050505f601a5f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561229e573d5f803e3d5ffd5b5050565b5f8082846122b09190612fbf565b9050838110156122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec9061336a565b60405180910390fd5b8091505092915050565b5f61234083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e97565b905092915050565b5f808311829061238e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123859190612419565b60405180910390fd5b505f838561239c91906130ba565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6123eb826123a9565b6123f581856123b3565b93506124058185602086016123c3565b61240e816123d1565b840191505092915050565b5f6020820190508181035f83015261243181846123e1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124668261243d565b9050919050565b6124768161245c565b8114612480575f80fd5b50565b5f813590506124918161246d565b92915050565b5f819050919050565b6124a981612497565b81146124b3575f80fd5b50565b5f813590506124c4816124a0565b92915050565b5f80604083850312156124e0576124df612439565b5b5f6124ed85828601612483565b92505060206124fe858286016124b6565b9150509250929050565b5f8115159050919050565b61251c81612508565b82525050565b5f6020820190506125355f830184612513565b92915050565b61254481612497565b82525050565b5f60208201905061255d5f83018461253b565b92915050565b5f805f6060848603121561257a57612579612439565b5b5f61258786828701612483565b935050602061259886828701612483565b92505060406125a9868287016124b6565b9150509250925092565b5f60ff82169050919050565b6125c8816125b3565b82525050565b5f6020820190506125e15f8301846125bf565b92915050565b6125f08161245c565b82525050565b5f6020820190506126095f8301846125e7565b92915050565b5f6020828403121561262457612623612439565b5b5f612631848285016124b6565b91505092915050565b5f6020828403121561264f5761264e612439565b5b5f61265c84828501612483565b91505092915050565b5f806040838503121561267b5761267a612439565b5b5f61268885828601612483565b925050602061269985828601612483565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561272557808604811115612701576127006126a3565b5b60018516156127105780820291505b808102905061271e856126d0565b94506126e5565b94509492505050565b5f8261273d57600190506127f8565b8161274a575f90506127f8565b8160018114612760576002811461276a57612799565b60019150506127f8565b60ff84111561277c5761277b6126a3565b5b8360020a915084821115612793576127926126a3565b5b506127f8565b5060208310610133831016604e8410600b84101617156127ce5782820a9050838111156127c9576127c86126a3565b5b6127f8565b6127db84848460016126dc565b925090508184048111156127f2576127f16126a3565b5b81810290505b9392505050565b5f61280982612497565b9150612814836125b3565b92506128417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461272e565b905092915050565b5f61285382612497565b915061285e83612497565b925082820261286c81612497565b91508282048414831517612883576128826126a3565b5b5092915050565b5f819050919050565b5f6128ad6128a86128a38461243d565b61288a565b61243d565b9050919050565b5f6128be82612893565b9050919050565b5f6128cf826128b4565b9050919050565b6128df816128c5565b82525050565b5f6040820190506128f85f8301856128d6565b612905602083018461253b565b9392505050565b61291581612508565b811461291f575f80fd5b50565b5f815190506129308161290c565b92915050565b5f6020828403121561294b5761294a612439565b5b5f61295884828501612922565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129956020836123b3565b91506129a082612961565b602082019050919050565b5f6020820190508181035f8301526129c281612989565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129fd6017836123b3565b9150612a08826129c9565b602082019050919050565b5f6020820190508181035f830152612a2a816129f1565b9050919050565b5f819050919050565b5f612a54612a4f612a4a84612a31565b61288a565b612497565b9050919050565b612a6481612a3a565b82525050565b5f60c082019050612a7d5f8301896125e7565b612a8a602083018861253b565b612a976040830187612a5b565b612aa46060830186612a5b565b612ab160808301856125e7565b612abe60a083018461253b565b979650505050505050565b5f81519050612ad7816124a0565b92915050565b5f805f60608486031215612af457612af3612439565b5b5f612b0186828701612ac9565b9350506020612b1286828701612ac9565b9250506040612b2386828701612ac9565b9150509250925092565b5f604082019050612b405f8301856125e7565b612b4d602083018461253b565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612bae6026836123b3565b9150612bb982612b54565b604082019050919050565b5f6020820190508181035f830152612bdb81612ba2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c3c6024836123b3565b9150612c4782612be2565b604082019050919050565b5f6020820190508181035f830152612c6981612c30565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cca6022836123b3565b9150612cd582612c70565b604082019050919050565b5f6020820190508181035f830152612cf781612cbe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d586025836123b3565b9150612d6382612cfe565b604082019050919050565b5f6020820190508181035f830152612d8581612d4c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612de66023836123b3565b9150612df182612d8c565b604082019050919050565b5f6020820190508181035f830152612e1381612dda565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e746029836123b3565b9150612e7f82612e1a565b604082019050919050565b5f6020820190508181035f830152612ea181612e68565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f612edc6020836123b3565b9150612ee782612ea8565b602082019050919050565b5f6020820190508181035f830152612f0981612ed0565b9050919050565b5f612f1a82612497565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f4c57612f4b6126a3565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f8b6019836123b3565b9150612f9682612f57565b602082019050919050565b5f6020820190508181035f830152612fb881612f7f565b9050919050565b5f612fc982612497565b9150612fd483612497565b9250828201905080821115612fec57612feb6126a3565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613026601a836123b3565b915061303182612ff2565b602082019050919050565b5f6020820190508181035f8301526130538161301a565b9050919050565b5f61306482612497565b915061306f83612497565b9250828203905081811115613087576130866126a3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130c482612497565b91506130cf83612497565b9250826130df576130de61308d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131446021836123b3565b915061314f826130ea565b604082019050919050565b5f6020820190508181035f83015261317181613138565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506131e08161246d565b92915050565b5f602082840312156131fb576131fa612439565b5b5f613208848285016131d2565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132438161245c565b82525050565b5f613254838361323a565b60208301905092915050565b5f602082019050919050565b5f61327682613211565b613280818561321b565b935061328b8361322b565b805f5b838110156132bb5781516132a28882613249565b97506132ad83613260565b92505060018101905061328e565b5085935050505092915050565b5f60a0820190506132db5f83018861253b565b6132e86020830187612a5b565b81810360408301526132fa818661326c565b905061330960608301856125e7565b613316608083018461253b565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613354601b836123b3565b915061335f82613320565b602082019050919050565b5f6020820190508181035f83015261338181613348565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202702db82800285e1601de698dbb09b3dd24abaf1e17c695dd1ff39a1dded985c64736f6c634300081a0033

Deployed Bytecode

0x608060405260043610610143575f3560e01c8063715018a6116100b557806395d89b411161006e57806395d89b41146103fa578063a9059cbb14610424578063bf474bed14610460578063dd62ed3e1461048a578063f2fde38b146104c6578063f5b3c3bf146104ee5761014a565b8063715018a61461033a578063751039fc146103505780637d1db4a5146103665780638a8c523c146103905780638da5cb5b146103a65780638f9a55c0146103d05761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806349bd5a5e1461028457806357376198146102ae57806367dd8ff5146102d657806370a08231146102fe5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b457806318160ddd146101de57806320800a00146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052a565b60405161016f9190612419565b60405180910390f35b348015610183575f80fd5b5061019e600480360381019061019991906124ca565b610567565b6040516101ab9190612522565b60405180910390f35b3480156101bf575f80fd5b506101c8610584565b6040516101d5919061254a565b60405180910390f35b3480156101e9575f80fd5b506101f261058a565b6040516101ff919061254a565b60405180910390f35b348015610213575f80fd5b5061021c6105ad565b005b348015610229575f80fd5b50610244600480360381019061023f9190612563565b610673565b6040516102519190612522565b60405180910390f35b348015610265575f80fd5b5061026e610747565b60405161027b91906125ce565b60405180910390f35b34801561028f575f80fd5b5061029861074f565b6040516102a591906125f6565b60405180910390f35b3480156102b9575f80fd5b506102d460048036038101906102cf91906124ca565b610774565b005b3480156102e1575f80fd5b506102fc60048036038101906102f7919061260f565b610874565b005b348015610309575f80fd5b50610324600480360381019061031f919061263a565b610912565b604051610331919061254a565b60405180910390f35b348015610345575f80fd5b5061034e610958565b005b34801561035b575f80fd5b50610364610aa6565b005b348015610371575f80fd5b5061037a610bd5565b604051610387919061254a565b60405180910390f35b34801561039b575f80fd5b506103a4610bdb565b005b3480156103b1575f80fd5b506103ba610e94565b6040516103c791906125f6565b60405180910390f35b3480156103db575f80fd5b506103e4610ebb565b6040516103f1919061254a565b60405180910390f35b348015610405575f80fd5b5061040e610ec1565b60405161041b9190612419565b60405180910390f35b34801561042f575f80fd5b5061044a600480360381019061044591906124ca565b610efe565b6040516104579190612522565b60405180910390f35b34801561046b575f80fd5b50610474610f1b565b604051610481919061254a565b60405180910390f35b348015610495575f80fd5b506104b060048036038101906104ab9190612665565b610f21565b6040516104bd919061254a565b60405180910390f35b3480156104d1575f80fd5b506104ec60048036038101906104e7919061263a565b610fa3565b005b3480156104f9575f80fd5b50610514600480360381019061050f919061263a565b611160565b6040516105219190612522565b60405180910390f35b60606040518060400160405280600d81526020017f446f774a6f6e6573363934323000000000000000000000000000000000000000815250905090565b5f61057a61057361117d565b8484611184565b6001905092915050565b60155481565b5f6009600a61059991906127ff565b63042343e06105a89190612849565b905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105ed61117d565b73ffffffffffffffffffffffffffffffffffffffff161461060c575f80fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610670573d5f803e3d5ffd5b50565b5f61067f848484611347565b61073c8461068b61117d565b610737856040518060600160405280602881526020016133896028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106ee61117d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e979092919063ffffffff16565b611184565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107b461117d565b73ffffffffffffffffffffffffffffffffffffffff16146107d3575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b815260040161082f9291906128e5565b6020604051808303815f875af115801561084b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061086f9190612936565b505050565b61087c61117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610908576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ff906129ab565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61096061117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e3906129ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aae61117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b31906129ab565b60405180910390fd5b6009600a610b4891906127ff565b63042343e0610b579190612849565b6012819055506009600a610b6b91906127ff565b63042343e0610b7a9190612849565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610baf91906127ff565b63042343e0610bbe9190612849565b604051610bcb919061254a565b60405180910390a1565b60125481565b610be361117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c66906129ab565b60405180910390fd5b601760149054906101000a900460ff1615610cbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb690612a13565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610d0730610912565b5f80610d11610e94565b426040518863ffffffff1660e01b8152600401610d3396959493929190612a6a565b60606040518083038185885af1158015610d4f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610d749190612add565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610e14929190612b2d565b6020604051808303815f875af1158015610e30573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e549190612936565b506001601a60016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600381526020017f444a580000000000000000000000000000000000000000000000000000000000815250905090565b5f610f11610f0a61117d565b8484611347565b6001905092915050565b60145481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fab61117d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611037576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102e906129ab565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109c90612bc4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e990612c52565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125790612ce0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161133a919061254a565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ac90612d6e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611423576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141a90612dfc565b60405180910390fd5b5f8111611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90612e8a565b60405180910390fd5b5f61146e610e94565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114dc57506114ac610e94565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611be75761151d606461150f600c54600f54116114fc57600854611500565b600a545b85611ef990919063ffffffff16565b611f7090919063ffffffff16565b905060075443036115a45760195460055f4381526020019081526020015f20541061157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612ef2565b60405180910390fd5b60055f4381526020019081526020015f205f81548092919061159e90612f10565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611647575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561169a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611754576012548211156116e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116db90612fa1565b60405180910390fd5b601354826116f185610912565b6116fb9190612fbf565b111561173c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117339061303c565b60405180910390fd5b600f5f81548092919061174e90612f10565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156117f2575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611850576013548261180485610912565b61180e9190612fbf565b111561184f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118469061303c565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156118d257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611916576119136064611905600d54600f54116118f2576009546118f6565b600b545b85611ef990919063ffffffff16565b611f7090919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119b4575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156119ec57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119f5575f90505b5f6119ff30610912565b9050601a5f9054906101000a900460ff16158015611a63575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611a7b5750601a60019054906101000a900460ff165b8015611a88575060145481115b8015611a975750600e54600f54115b15611b1457601154431115611aae575f6010819055505b60185460105410611abd575f80fd5b611ada611ad584611ad084601554611fb9565b611fb9565b611fd1565b5f4790505f811115611af057611aef4761223a565b5b60105f815480929190611b0290612f10565b91905055504360118190555050611be5565b601a5f9054906101000a900460ff16158015611b76575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611b8e5750601a60019054906101000a900460ff165b8015611b9b575060145481115b8015611baa5750600e54600f54115b15611be457611bcc611bc784611bc284601554611fb9565b611fb9565b611fd1565b5f4790505f811115611be257611be14761223a565b5b505b5b505b5f811115611ce657611c3f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a290919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cdd919061254a565b60405180910390a35b611d368260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122ff90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611dd9611d8d82846122ff90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a290919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e7c84866122ff90919063ffffffff16565b604051611e89919061254a565b60405180910390a350505050565b5f838311158290611ede576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed59190612419565b60405180910390fd5b505f8385611eec919061305a565b9050809150509392505050565b5f808303611f09575f9050611f6a565b5f8284611f169190612849565b9050828482611f2591906130ba565b14611f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f5c9061315a565b60405180910390fd5b809150505b92915050565b5f611fb183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612348565b905092915050565b5f818311611fc75782611fc9565b815b905092915050565b6001601a5f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561200757612006613178565b5b6040519080825280602002602001820160405280156120355781602001602082028036833780820191505090505b50905030815f8151811061204c5761204b6131a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120f0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061211491906131e6565b81600181518110612128576121276131a5565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061218e3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611184565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016121f09594939291906132c8565b5f604051808303815f87803b158015612207575f80fd5b505af1158015612219573d5f803e3d5ffd5b50505050505f601a5f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561229e573d5f803e3d5ffd5b5050565b5f8082846122b09190612fbf565b9050838110156122f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ec9061336a565b60405180910390fd5b8091505092915050565b5f61234083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e97565b905092915050565b5f808311829061238e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123859190612419565b60405180910390fd5b505f838561239c91906130ba565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6123eb826123a9565b6123f581856123b3565b93506124058185602086016123c3565b61240e816123d1565b840191505092915050565b5f6020820190508181035f83015261243181846123e1565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6124668261243d565b9050919050565b6124768161245c565b8114612480575f80fd5b50565b5f813590506124918161246d565b92915050565b5f819050919050565b6124a981612497565b81146124b3575f80fd5b50565b5f813590506124c4816124a0565b92915050565b5f80604083850312156124e0576124df612439565b5b5f6124ed85828601612483565b92505060206124fe858286016124b6565b9150509250929050565b5f8115159050919050565b61251c81612508565b82525050565b5f6020820190506125355f830184612513565b92915050565b61254481612497565b82525050565b5f60208201905061255d5f83018461253b565b92915050565b5f805f6060848603121561257a57612579612439565b5b5f61258786828701612483565b935050602061259886828701612483565b92505060406125a9868287016124b6565b9150509250925092565b5f60ff82169050919050565b6125c8816125b3565b82525050565b5f6020820190506125e15f8301846125bf565b92915050565b6125f08161245c565b82525050565b5f6020820190506126095f8301846125e7565b92915050565b5f6020828403121561262457612623612439565b5b5f612631848285016124b6565b91505092915050565b5f6020828403121561264f5761264e612439565b5b5f61265c84828501612483565b91505092915050565b5f806040838503121561267b5761267a612439565b5b5f61268885828601612483565b925050602061269985828601612483565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561272557808604811115612701576127006126a3565b5b60018516156127105780820291505b808102905061271e856126d0565b94506126e5565b94509492505050565b5f8261273d57600190506127f8565b8161274a575f90506127f8565b8160018114612760576002811461276a57612799565b60019150506127f8565b60ff84111561277c5761277b6126a3565b5b8360020a915084821115612793576127926126a3565b5b506127f8565b5060208310610133831016604e8410600b84101617156127ce5782820a9050838111156127c9576127c86126a3565b5b6127f8565b6127db84848460016126dc565b925090508184048111156127f2576127f16126a3565b5b81810290505b9392505050565b5f61280982612497565b9150612814836125b3565b92506128417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461272e565b905092915050565b5f61285382612497565b915061285e83612497565b925082820261286c81612497565b91508282048414831517612883576128826126a3565b5b5092915050565b5f819050919050565b5f6128ad6128a86128a38461243d565b61288a565b61243d565b9050919050565b5f6128be82612893565b9050919050565b5f6128cf826128b4565b9050919050565b6128df816128c5565b82525050565b5f6040820190506128f85f8301856128d6565b612905602083018461253b565b9392505050565b61291581612508565b811461291f575f80fd5b50565b5f815190506129308161290c565b92915050565b5f6020828403121561294b5761294a612439565b5b5f61295884828501612922565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129956020836123b3565b91506129a082612961565b602082019050919050565b5f6020820190508181035f8301526129c281612989565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6129fd6017836123b3565b9150612a08826129c9565b602082019050919050565b5f6020820190508181035f830152612a2a816129f1565b9050919050565b5f819050919050565b5f612a54612a4f612a4a84612a31565b61288a565b612497565b9050919050565b612a6481612a3a565b82525050565b5f60c082019050612a7d5f8301896125e7565b612a8a602083018861253b565b612a976040830187612a5b565b612aa46060830186612a5b565b612ab160808301856125e7565b612abe60a083018461253b565b979650505050505050565b5f81519050612ad7816124a0565b92915050565b5f805f60608486031215612af457612af3612439565b5b5f612b0186828701612ac9565b9350506020612b1286828701612ac9565b9250506040612b2386828701612ac9565b9150509250925092565b5f604082019050612b405f8301856125e7565b612b4d602083018461253b565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612bae6026836123b3565b9150612bb982612b54565b604082019050919050565b5f6020820190508181035f830152612bdb81612ba2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612c3c6024836123b3565b9150612c4782612be2565b604082019050919050565b5f6020820190508181035f830152612c6981612c30565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612cca6022836123b3565b9150612cd582612c70565b604082019050919050565b5f6020820190508181035f830152612cf781612cbe565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d586025836123b3565b9150612d6382612cfe565b604082019050919050565b5f6020820190508181035f830152612d8581612d4c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612de66023836123b3565b9150612df182612d8c565b604082019050919050565b5f6020820190508181035f830152612e1381612dda565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e746029836123b3565b9150612e7f82612e1a565b604082019050919050565b5f6020820190508181035f830152612ea181612e68565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f612edc6020836123b3565b9150612ee782612ea8565b602082019050919050565b5f6020820190508181035f830152612f0981612ed0565b9050919050565b5f612f1a82612497565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f4c57612f4b6126a3565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612f8b6019836123b3565b9150612f9682612f57565b602082019050919050565b5f6020820190508181035f830152612fb881612f7f565b9050919050565b5f612fc982612497565b9150612fd483612497565b9250828201905080821115612fec57612feb6126a3565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613026601a836123b3565b915061303182612ff2565b602082019050919050565b5f6020820190508181035f8301526130538161301a565b9050919050565b5f61306482612497565b915061306f83612497565b9250828203905081811115613087576130866126a3565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130c482612497565b91506130cf83612497565b9250826130df576130de61308d565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131446021836123b3565b915061314f826130ea565b604082019050919050565b5f6020820190508181035f83015261317181613138565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506131e08161246d565b92915050565b5f602082840312156131fb576131fa612439565b5b5f613208848285016131d2565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132438161245c565b82525050565b5f613254838361323a565b60208301905092915050565b5f602082019050919050565b5f61327682613211565b613280818561321b565b935061328b8361322b565b805f5b838110156132bb5781516132a28882613249565b97506132ad83613260565b92505060018101905061328e565b5085935050505092915050565b5f60a0820190506132db5f83018861253b565b6132e86020830187612a5b565b81810360408301526132fa818661326c565b905061330960608301856125e7565b613316608083018461253b565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613354601b836123b3565b915061335f82613320565b602082019050919050565b5f6020820190508181035f83015261338181613348565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202702db82800285e1601de698dbb09b3dd24abaf1e17c695dd1ff39a1dded985c64736f6c634300081a0033

Deployed Bytecode Sourcemap

3853:8984:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6332:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7165:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5122:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6609:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11757:146;;;;;;;;;;;;;:::i;:::-;;7334:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6518:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5230:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11911:178;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12698:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6712:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2684:148;;;;;;;;;;;;;:::i;:::-;;12097:159;;;;;;;;;;;;;:::i;:::-;;4938:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12264:428;;;;;;;;;;;;;:::i;:::-;;2470:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4999:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6423:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6839:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5060:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7014:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2840:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4137:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6332:83;6369:13;6402:5;;;;;;;;;;;;;;;;;6395:12;;6332:83;:::o;7165:161::-;7240:4;7257:39;7266:12;:10;:12::i;:::-;7280:7;7289:6;7257:8;:39::i;:::-;7314:4;7307:11;;7165:161;;;;:::o;5122:50::-;;;;:::o;6609:95::-;6662:7;4750:1;4804:2;:13;;;;:::i;:::-;4793:8;:24;;;;:::i;:::-;6682:14;;6609:95;:::o;11757:146::-;11822:10;;;;;;;;;;;11806:26;;:12;:10;:12::i;:::-;:26;;;11798:35;;;;;;11852:10;;;;;;;;;;;11844:28;;:51;11873:21;11844:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11757:146::o;7334:313::-;7432:4;7449:36;7459:6;7467:9;7478:6;7449:9;:36::i;:::-;7496:121;7505:6;7513:12;:10;:12::i;:::-;7527:89;7565:6;7527:89;;;;;;;;;;;;;;;;;:11;:19;7539:6;7527:19;;;;;;;;;;;;;;;:33;7547:12;:10;:12::i;:::-;7527:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7496:8;:121::i;:::-;7635:4;7628:11;;7334:313;;;;;:::o;6518:83::-;6559:5;4750:1;6577:16;;6518:83;:::o;5230:28::-;;;;;;;;;;;;;:::o;11911:178::-;12011:10;;;;;;;;;;;11995:26;;:12;:10;:12::i;:::-;:26;;;11987:35;;;;;;12040:10;12033:27;;;12061:10;;;;;;;;;;;12073:7;12033:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11911:178;;:::o;12698:101::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12785:6:::1;12771:13;:20;;;;12698:101:::0;:::o;6712:119::-;6778:7;6805:9;:18;6815:7;6805:18;;;;;;;;;;;;;;;;6798:25;;6712:119;;;:::o;2684:148::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2791:1:::1;2754:40;;2775:6;::::0;::::1;;;;;;;;2754:40;;;;;;;;;;;;2822:1;2805:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2684:148::o:0;12097:159::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4750:1:::1;4804:2;:13;;;;:::i;:::-;4793:8;:24;;;;:::i;:::-;12150:12;:22;;;;4750:1;4804:2;:13;;;;:::i;:::-;4793:8;:24;;;;:::i;:::-;12183:14;:22;;;;12221:27;4750:1;4804:2;:13;;;;:::i;:::-;4793:8;:24;;;;:::i;:::-;12221:27;;;;;;:::i;:::-;;;;;;;;12097:159::o:0;4938:54::-;;;;:::o;12264:428::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12330:11:::1;;;;;;;;;;;12329:12;12321:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12379:15;;;;;;;;;;;:31;;;12418:21;12449:4;12455:24;12473:4;12455:9;:24::i;:::-;12480:1;12482::::0;12484:7:::1;:5;:7::i;:::-;12492:15;12379:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12526:13;;;;;;;;;;;12519:29;;;12557:15;;;;;;;;;;;12575:14;12519:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12615:4;12601:11;;:18;;;;;;;;;;;;;;;;;;12644:4;12630:11;;:18;;;;;;;;;;;;;;;;;;12672:12;12659:10;:25;;;;12264:428::o:0;2470:79::-;2508:7;2535:6;;;;;;;;;;;2528:13;;2470:79;:::o;4999:54::-;;;;:::o;6423:87::-;6462:13;6495:7;;;;;;;;;;;;;;;;;6488:14;;6423:87;:::o;6839:167::-;6917:4;6934:42;6944:12;:10;:12::i;:::-;6958:9;6969:6;6934:9;:42::i;:::-;6994:4;6987:11;;6839:167;;;;:::o;5060:55::-;;;;:::o;7014:143::-;7095:7;7122:11;:18;7134:5;7122:18;;;;;;;;;;;;;;;:27;7141:7;7122:27;;;;;;;;;;;;;;;;7115:34;;7014:143;;;;:::o;2840:244::-;2607:12;:10;:12::i;:::-;2597:22;;:6;;;;;;;;;;:22;;;2589:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2949:1:::1;2929:22;;:8;:22;;::::0;2921:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3039:8;3010:38;;3031:6;::::0;::::1;;;;;;;;3010:38;;;;;;;;;;;;3068:8;3059:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2840:244:::0;:::o;4137:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;225:98::-;278:7;305:10;298:17;;225:98;:::o;7655:335::-;7765:1;7748:19;;:5;:19;;;7740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7846:1;7827:21;;:7;:21;;;7819:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7928:6;7898:11;:18;7910:5;7898:18;;;;;;;;;;;;;;;:27;7917:7;7898:27;;;;;;;;;;;;;;;:36;;;;7966:7;7950:32;;7959:5;7950:32;;;7975:6;7950:32;;;;;;:::i;:::-;;;;;;;;7655:335;;;:::o;7998:3052::-;8102:1;8086:18;;:4;:18;;;8078:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8179:1;8165:16;;:2;:16;;;8157:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8249:1;8240:6;:10;8232:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8307:17;8351:7;:5;:7::i;:::-;8343:15;;:4;:15;;;;:32;;;;;8368:7;:5;:7::i;:::-;8362:13;;:2;:13;;;;8343:32;8339:2355;;;8404:79;8479:3;8404:70;8427:15;;8416:9;;:26;8415:58;;8459:14;;8415:58;;;8445:12;;8415:58;8404:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8392:91;;8519:10;;8503:12;:26;8500:196;;8584:14;;8556:11;:25;8568:12;8556:25;;;;;;;;;;;;:42;8548:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;8653:11;:25;8665:12;8653:25;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;8500:196;8716:10;:16;8727:4;8716:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8750:15;;;;;;;;;;;8736:30;;:2;:30;;;;8716:50;:78;;;;;8772:18;:22;8791:2;8772:22;;;;;;;;;;;;;;;;;;;;;;;;;8770:24;8716:78;8712:308;;;8834:12;;8824:6;:22;;8816:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8929:14;;8919:6;8903:13;8913:2;8903:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8895:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8993:9;;:11;;;;;;;;;:::i;:::-;;;;;;8712:308;9041:10;:14;9052:2;9041:14;;;;;;;;;;;;;;;;;;;;;;;;;9040:15;:43;;;;;9061:18;:22;9080:2;9061:22;;;;;;;;;;;;;;;;;;;;;;;;;9059:24;9040:43;9036:163;;;9138:14;;9128:6;9112:13;9122:2;9112:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9104:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9036:163;9218:10;:14;9229:2;9218:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;9251:4;9236:20;;:4;:20;;;;9218:38;9215:172;;;9289:82;9367:3;9289:73;9312:16;;9301:9;;:27;9300:61;;9346:15;;9300:61;;;9331:13;;9300:61;9289:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9277:94;;9215:172;9401:10;:16;9412:4;9401:16;;;;;;;;;;;;;;;;;;;;;;;;;9400:17;:36;;;;;9422:10;:14;9433:2;9422:14;;;;;;;;;;;;;;;;;;;;;;;;;9421:15;9400:36;:60;;;;;9455:4;9440:20;;:4;:20;;;;9400:60;9396:115;;;9494:1;9482:13;;9396:115;9527:28;9558:24;9576:4;9558:9;:24::i;:::-;9527:55;;9602:6;;;;;;;;;;;9601:7;:25;;;;;9612:10;:14;9623:2;9612:14;;;;;;;;;;;;;;;;;;;;;;;;;9601:25;:40;;;;;9630:11;;;;;;;;;;;9601:40;:82;;;;;9666:17;;9645:20;:38;9601:82;:114;;;;;9697:18;;9687:9;;:28;9601:114;9597:1086;;;9755:13;;9740:12;:28;9736:90;;;9805:1;9793:9;:13;;;;9736:90;9864:13;;9852:9;;:25;9844:34;;;;;;9897:67;9914:49;9918:6;9925:37;9929:20;9950:11;;9925:3;:37::i;:::-;9914:3;:49::i;:::-;9897:16;:67::i;:::-;9983:26;10012:21;9983:50;;10076:1;10055:18;:22;10052:105;;;10102:35;10115:21;10102:12;:35::i;:::-;10052:105;10175:9;;:11;;;;;;;;;:::i;:::-;;;;;;10221:12;10205:13;:28;;;;9717:532;9597:1086;;;10274:6;;;;;;;;;;;10273:7;:25;;;;;10284:10;:14;10295:2;10284:14;;;;;;;;;;;;;;;;;;;;;;;;;10273:25;:40;;;;;10302:11;;;;;;;;;;;10273:40;:82;;;;;10338:17;;10317:20;:38;10273:82;:114;;;;;10369:18;;10359:9;;:28;10273:114;10270:413;;;10408:67;10425:49;10429:6;10436:37;10440:20;10461:11;;10436:3;:37::i;:::-;10425:3;:49::i;:::-;10408:16;:67::i;:::-;10494:26;10523:21;10494:50;;10587:1;10566:18;:22;10563:105;;;10613:35;10626:21;10613:12;:35::i;:::-;10563:105;10389:294;10270:413;9597:1086;8377:2317;8339:2355;10719:1;10709:9;:11;10706:161;;;10759:39;10788:9;10759;:24;10777:4;10759:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10734:9;:24;10752:4;10734:24;;;;;;;;;;;;;;;:64;;;;10839:4;10816:39;;10825:4;10816:39;;;10845:9;10816:39;;;;;;:::i;:::-;;;;;;;;10706:161;10893:27;10913:6;10893:9;:15;10903:4;10893:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10877:9;:15;10887:4;10877:15;;;;;;;;;;;;;;;:43;;;;10945:40;10963:21;10974:9;10963:6;:10;;:21;;;;:::i;:::-;10945:9;:13;10955:2;10945:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10931:9;:13;10941:2;10931:13;;;;;;;;;;;;;;;:54;;;;11016:2;11001:41;;11010:4;11001:41;;;11020:21;11031:9;11020:6;:10;;:21;;;;:::i;:::-;11001:41;;;;;;:::i;:::-;;;;;;;;8067:2983;7998:3052;;;:::o;1362:190::-;1448:7;1481:1;1476;:6;;1484:12;1468:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1508:9;1524:1;1520;:5;;;;:::i;:::-;1508:17;;1543:1;1536:8;;;1362:190;;;;;:::o;1560:246::-;1618:7;1647:1;1642;:6;1638:47;;1672:1;1665:8;;;;1638:47;1695:9;1711:1;1707;:5;;;;:::i;:::-;1695:17;;1740:1;1735;1731;:5;;;;:::i;:::-;:10;1723:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1797:1;1790:8;;;1560:246;;;;;:::o;1814:132::-;1872:7;1899:39;1903:1;1906;1899:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1892:46;;1814:132;;;;:::o;11060:98::-;11117:7;11144:1;11142;:3;11141:9;;11149:1;11141:9;;;11147:1;11141:9;11134:16;;11060:98;;;;:::o;11166:483::-;5545:4;5536:6;;:13;;;;;;;;;;;;;;;;;;11244:21:::1;11282:1;11268:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11244:40;;11313:4;11295;11300:1;11295:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11339:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11329:4;11334:1;11329:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11372:62;11389:4;11404:15;;;;;;;;;;;11422:11;11372:8;:62::i;:::-;11445:15;;;;;;;;;;;:66;;;11526:11;11552:1;11568:4;11595;11615:15;11445:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11233:416;5581:5:::0;5572:6;;:14;;;;;;;;;;;;;;;;;;11166:483;:::o;11657:92::-;11714:10;;;;;;;;;;;:19;;:27;11734:6;11714:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11657:92;:::o;1031:179::-;1089:7;1109:9;1125:1;1121;:5;;;;:::i;:::-;1109:17;;1150:1;1145;:6;;1137:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1201:1;1194:8;;;1031:179;;;;:::o;1218:136::-;1276:7;1303:43;1307:1;1310;1303:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1296:50;;1218:136;;;;:::o;1954:189::-;2040:7;2072:1;2068;:5;2075:12;2060:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2099:9;2115:1;2111;:5;;;;:::i;:::-;2099:17;;2134:1;2127:8;;;1954:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:118::-;4833:24;4851:5;4833:24;:::i;:::-;4828:3;4821:37;4746:118;;:::o;4870:222::-;4963:4;5001:2;4990:9;4986:18;4978:26;;5014:71;5082:1;5071:9;5067:17;5058:6;5014:71;:::i;:::-;4870:222;;;;:::o;5098:329::-;5157:6;5206:2;5194:9;5185:7;5181:23;5177:32;5174:119;;;5212:79;;:::i;:::-;5174:119;5332:1;5357:53;5402:7;5393:6;5382:9;5378:22;5357:53;:::i;:::-;5347:63;;5303:117;5098:329;;;;:::o;5433:::-;5492:6;5541:2;5529:9;5520:7;5516:23;5512:32;5509:119;;;5547:79;;:::i;:::-;5509:119;5667:1;5692:53;5737:7;5728:6;5717:9;5713:22;5692:53;:::i;:::-;5682:63;;5638:117;5433:329;;;;:::o;5768:474::-;5836:6;5844;5893:2;5881:9;5872:7;5868:23;5864:32;5861:119;;;5899:79;;:::i;:::-;5861:119;6019:1;6044:53;6089:7;6080:6;6069:9;6065:22;6044:53;:::i;:::-;6034:63;;5990:117;6146:2;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6117:118;5768:474;;;;;:::o;6248:180::-;6296:77;6293:1;6286:88;6393:4;6390:1;6383:15;6417:4;6414:1;6407:15;6434:102;6476:8;6523:5;6520:1;6516:13;6495:34;;6434:102;;;:::o;6542:848::-;6603:5;6610:4;6634:6;6625:15;;6658:5;6649:14;;6672:712;6693:1;6683:8;6680:15;6672:712;;;6788:4;6783:3;6779:14;6773:4;6770:24;6767:50;;;6797:18;;:::i;:::-;6767:50;6847:1;6837:8;6833:16;6830:451;;;7262:4;7255:5;7251:16;7242:25;;6830:451;7312:4;7306;7302:15;7294:23;;7342:32;7365:8;7342:32;:::i;:::-;7330:44;;6672:712;;;6542:848;;;;;;;:::o;7396:1073::-;7450:5;7641:8;7631:40;;7662:1;7653:10;;7664:5;;7631:40;7690:4;7680:36;;7707:1;7698:10;;7709:5;;7680:36;7776:4;7824:1;7819:27;;;;7860:1;7855:191;;;;7769:277;;7819:27;7837:1;7828:10;;7839:5;;;7855:191;7900:3;7890:8;7887:17;7884:43;;;7907:18;;:::i;:::-;7884:43;7956:8;7953:1;7949:16;7940:25;;7991:3;7984:5;7981:14;7978:40;;;7998:18;;:::i;:::-;7978:40;8031:5;;;7769:277;;8155:2;8145:8;8142:16;8136:3;8130:4;8127:13;8123:36;8105:2;8095:8;8092:16;8087:2;8081:4;8078:12;8074:35;8058:111;8055:246;;;8211:8;8205:4;8201:19;8192:28;;8246:3;8239:5;8236:14;8233:40;;;8253:18;;:::i;:::-;8233:40;8286:5;;8055:246;8326:42;8364:3;8354:8;8348:4;8345:1;8326:42;:::i;:::-;8311:57;;;;8400:4;8395:3;8391:14;8384:5;8381:25;8378:51;;;8409:18;;:::i;:::-;8378:51;8458:4;8451:5;8447:16;8438:25;;7396:1073;;;;;;:::o;8475:281::-;8533:5;8557:23;8575:4;8557:23;:::i;:::-;8549:31;;8601:25;8617:8;8601:25;:::i;:::-;8589:37;;8645:104;8682:66;8672:8;8666:4;8645:104;:::i;:::-;8636:113;;8475:281;;;;:::o;8762:410::-;8802:7;8825:20;8843:1;8825:20;:::i;:::-;8820:25;;8859:20;8877:1;8859:20;:::i;:::-;8854:25;;8914:1;8911;8907:9;8936:30;8954:11;8936:30;:::i;:::-;8925:41;;9115:1;9106:7;9102:15;9099:1;9096:22;9076:1;9069:9;9049:83;9026:139;;9145:18;;:::i;:::-;9026:139;8810:362;8762:410;;;;:::o;9178:60::-;9206:3;9227:5;9220:12;;9178:60;;;:::o;9244:142::-;9294:9;9327:53;9345:34;9354:24;9372:5;9354:24;:::i;:::-;9345:34;:::i;:::-;9327:53;:::i;:::-;9314:66;;9244:142;;;:::o;9392:126::-;9442:9;9475:37;9506:5;9475:37;:::i;:::-;9462:50;;9392:126;;;:::o;9524:134::-;9582:9;9615:37;9646:5;9615:37;:::i;:::-;9602:50;;9524:134;;;:::o;9664:147::-;9759:45;9798:5;9759:45;:::i;:::-;9754:3;9747:58;9664:147;;:::o;9817:348::-;9946:4;9984:2;9973:9;9969:18;9961:26;;9997:79;10073:1;10062:9;10058:17;10049:6;9997:79;:::i;:::-;10086:72;10154:2;10143:9;10139:18;10130:6;10086:72;:::i;:::-;9817:348;;;;;:::o;10171:116::-;10241:21;10256:5;10241:21;:::i;:::-;10234:5;10231:32;10221:60;;10277:1;10274;10267:12;10221:60;10171:116;:::o;10293:137::-;10347:5;10378:6;10372:13;10363:22;;10394:30;10418:5;10394:30;:::i;:::-;10293:137;;;;:::o;10436:345::-;10503:6;10552:2;10540:9;10531:7;10527:23;10523:32;10520:119;;;10558:79;;:::i;:::-;10520:119;10678:1;10703:61;10756:7;10747:6;10736:9;10732:22;10703:61;:::i;:::-;10693:71;;10649:125;10436:345;;;;:::o;10787:182::-;10927:34;10923:1;10915:6;10911:14;10904:58;10787:182;:::o;10975:366::-;11117:3;11138:67;11202:2;11197:3;11138:67;:::i;:::-;11131:74;;11214:93;11303:3;11214:93;:::i;:::-;11332:2;11327:3;11323:12;11316:19;;10975:366;;;:::o;11347:419::-;11513:4;11551:2;11540:9;11536:18;11528:26;;11600:9;11594:4;11590:20;11586:1;11575:9;11571:17;11564:47;11628:131;11754:4;11628:131;:::i;:::-;11620:139;;11347:419;;;:::o;11772:173::-;11912:25;11908:1;11900:6;11896:14;11889:49;11772:173;:::o;11951:366::-;12093:3;12114:67;12178:2;12173:3;12114:67;:::i;:::-;12107:74;;12190:93;12279:3;12190:93;:::i;:::-;12308:2;12303:3;12299:12;12292:19;;11951:366;;;:::o;12323:419::-;12489:4;12527:2;12516:9;12512:18;12504:26;;12576:9;12570:4;12566:20;12562:1;12551:9;12547:17;12540:47;12604:131;12730:4;12604:131;:::i;:::-;12596:139;;12323:419;;;:::o;12748:85::-;12793:7;12822:5;12811:16;;12748:85;;;:::o;12839:158::-;12897:9;12930:61;12948:42;12957:32;12983:5;12957:32;:::i;:::-;12948:42;:::i;:::-;12930:61;:::i;:::-;12917:74;;12839:158;;;:::o;13003:147::-;13098:45;13137:5;13098:45;:::i;:::-;13093:3;13086:58;13003:147;;:::o;13156:807::-;13405:4;13443:3;13432:9;13428:19;13420:27;;13457:71;13525:1;13514:9;13510:17;13501:6;13457:71;:::i;:::-;13538:72;13606:2;13595:9;13591:18;13582:6;13538:72;:::i;:::-;13620:80;13696:2;13685:9;13681:18;13672:6;13620:80;:::i;:::-;13710;13786:2;13775:9;13771:18;13762:6;13710:80;:::i;:::-;13800:73;13868:3;13857:9;13853:19;13844:6;13800:73;:::i;:::-;13883;13951:3;13940:9;13936:19;13927:6;13883:73;:::i;:::-;13156:807;;;;;;;;;:::o;13969:143::-;14026:5;14057:6;14051:13;14042:22;;14073:33;14100:5;14073:33;:::i;:::-;13969:143;;;;:::o;14118:663::-;14206:6;14214;14222;14271:2;14259:9;14250:7;14246:23;14242:32;14239:119;;;14277:79;;:::i;:::-;14239:119;14397:1;14422:64;14478:7;14469:6;14458:9;14454:22;14422:64;:::i;:::-;14412:74;;14368:128;14535:2;14561:64;14617:7;14608:6;14597:9;14593:22;14561:64;:::i;:::-;14551:74;;14506:129;14674:2;14700:64;14756:7;14747:6;14736:9;14732:22;14700:64;:::i;:::-;14690:74;;14645:129;14118:663;;;;;:::o;14787:332::-;14908:4;14946:2;14935:9;14931:18;14923:26;;14959:71;15027:1;15016:9;15012:17;15003:6;14959:71;:::i;:::-;15040:72;15108:2;15097:9;15093:18;15084:6;15040:72;:::i;:::-;14787:332;;;;;:::o;15125:225::-;15265:34;15261:1;15253:6;15249:14;15242:58;15334:8;15329:2;15321:6;15317:15;15310:33;15125:225;:::o;15356:366::-;15498:3;15519:67;15583:2;15578:3;15519:67;:::i;:::-;15512:74;;15595:93;15684:3;15595:93;:::i;:::-;15713:2;15708:3;15704:12;15697:19;;15356:366;;;:::o;15728:419::-;15894:4;15932:2;15921:9;15917:18;15909:26;;15981:9;15975:4;15971:20;15967:1;15956:9;15952:17;15945:47;16009:131;16135:4;16009:131;:::i;:::-;16001:139;;15728:419;;;:::o;16153:223::-;16293:34;16289:1;16281:6;16277:14;16270:58;16362:6;16357:2;16349:6;16345:15;16338:31;16153:223;:::o;16382:366::-;16524:3;16545:67;16609:2;16604:3;16545:67;:::i;:::-;16538:74;;16621:93;16710:3;16621:93;:::i;:::-;16739:2;16734:3;16730:12;16723:19;;16382:366;;;:::o;16754:419::-;16920:4;16958:2;16947:9;16943:18;16935:26;;17007:9;17001:4;16997:20;16993:1;16982:9;16978:17;16971:47;17035:131;17161:4;17035:131;:::i;:::-;17027:139;;16754:419;;;:::o;17179:221::-;17319:34;17315:1;17307:6;17303:14;17296:58;17388:4;17383:2;17375:6;17371:15;17364:29;17179:221;:::o;17406:366::-;17548:3;17569:67;17633:2;17628:3;17569:67;:::i;:::-;17562:74;;17645:93;17734:3;17645:93;:::i;:::-;17763:2;17758:3;17754:12;17747:19;;17406:366;;;:::o;17778:419::-;17944:4;17982:2;17971:9;17967:18;17959:26;;18031:9;18025:4;18021:20;18017:1;18006:9;18002:17;17995:47;18059:131;18185:4;18059:131;:::i;:::-;18051:139;;17778:419;;;:::o;18203:224::-;18343:34;18339:1;18331:6;18327:14;18320:58;18412:7;18407:2;18399:6;18395:15;18388:32;18203:224;:::o;18433:366::-;18575:3;18596:67;18660:2;18655:3;18596:67;:::i;:::-;18589:74;;18672:93;18761:3;18672:93;:::i;:::-;18790:2;18785:3;18781:12;18774:19;;18433:366;;;:::o;18805:419::-;18971:4;19009:2;18998:9;18994:18;18986:26;;19058:9;19052:4;19048:20;19044:1;19033:9;19029:17;19022:47;19086:131;19212:4;19086:131;:::i;:::-;19078:139;;18805:419;;;:::o;19230:222::-;19370:34;19366:1;19358:6;19354:14;19347:58;19439:5;19434:2;19426:6;19422:15;19415:30;19230:222;:::o;19458:366::-;19600:3;19621:67;19685:2;19680:3;19621:67;:::i;:::-;19614:74;;19697:93;19786:3;19697:93;:::i;:::-;19815:2;19810:3;19806:12;19799:19;;19458:366;;;:::o;19830:419::-;19996:4;20034:2;20023:9;20019:18;20011:26;;20083:9;20077:4;20073:20;20069:1;20058:9;20054:17;20047:47;20111:131;20237:4;20111:131;:::i;:::-;20103:139;;19830:419;;;:::o;20255:228::-;20395:34;20391:1;20383:6;20379:14;20372:58;20464:11;20459:2;20451:6;20447:15;20440:36;20255:228;:::o;20489:366::-;20631:3;20652:67;20716:2;20711:3;20652:67;:::i;:::-;20645:74;;20728:93;20817:3;20728:93;:::i;:::-;20846:2;20841:3;20837:12;20830:19;;20489:366;;;:::o;20861:419::-;21027:4;21065:2;21054:9;21050:18;21042:26;;21114:9;21108:4;21104:20;21100:1;21089:9;21085:17;21078:47;21142:131;21268:4;21142:131;:::i;:::-;21134:139;;20861:419;;;:::o;21286:182::-;21426:34;21422:1;21414:6;21410:14;21403:58;21286:182;:::o;21474:366::-;21616:3;21637:67;21701:2;21696:3;21637:67;:::i;:::-;21630:74;;21713:93;21802:3;21713:93;:::i;:::-;21831:2;21826:3;21822:12;21815:19;;21474:366;;;:::o;21846:419::-;22012:4;22050:2;22039:9;22035:18;22027:26;;22099:9;22093:4;22089:20;22085:1;22074:9;22070:17;22063:47;22127:131;22253:4;22127:131;:::i;:::-;22119:139;;21846:419;;;:::o;22271:233::-;22310:3;22333:24;22351:5;22333:24;:::i;:::-;22324:33;;22379:66;22372:5;22369:77;22366:103;;22449:18;;:::i;:::-;22366:103;22496:1;22489:5;22485:13;22478:20;;22271:233;;;:::o;22510:175::-;22650:27;22646:1;22638:6;22634:14;22627:51;22510:175;:::o;22691:366::-;22833:3;22854:67;22918:2;22913:3;22854:67;:::i;:::-;22847:74;;22930:93;23019:3;22930:93;:::i;:::-;23048:2;23043:3;23039:12;23032:19;;22691:366;;;:::o;23063:419::-;23229:4;23267:2;23256:9;23252:18;23244:26;;23316:9;23310:4;23306:20;23302:1;23291:9;23287:17;23280:47;23344:131;23470:4;23344:131;:::i;:::-;23336:139;;23063:419;;;:::o;23488:191::-;23528:3;23547:20;23565:1;23547:20;:::i;:::-;23542:25;;23581:20;23599:1;23581:20;:::i;:::-;23576:25;;23624:1;23621;23617:9;23610:16;;23645:3;23642:1;23639:10;23636:36;;;23652:18;;:::i;:::-;23636:36;23488:191;;;;:::o;23685:176::-;23825:28;23821:1;23813:6;23809:14;23802:52;23685:176;:::o;23867:366::-;24009:3;24030:67;24094:2;24089:3;24030:67;:::i;:::-;24023:74;;24106:93;24195:3;24106:93;:::i;:::-;24224:2;24219:3;24215:12;24208:19;;23867:366;;;:::o;24239:419::-;24405:4;24443:2;24432:9;24428:18;24420:26;;24492:9;24486:4;24482:20;24478:1;24467:9;24463:17;24456:47;24520:131;24646:4;24520:131;:::i;:::-;24512:139;;24239:419;;;:::o;24664:194::-;24704:4;24724:20;24742:1;24724:20;:::i;:::-;24719:25;;24758:20;24776:1;24758:20;:::i;:::-;24753:25;;24802:1;24799;24795:9;24787:17;;24826:1;24820:4;24817:11;24814:37;;;24831:18;;:::i;:::-;24814:37;24664:194;;;;:::o;24864:180::-;24912:77;24909:1;24902:88;25009:4;25006:1;24999:15;25033:4;25030:1;25023:15;25050:185;25090:1;25107:20;25125:1;25107:20;:::i;:::-;25102:25;;25141:20;25159:1;25141:20;:::i;:::-;25136:25;;25180:1;25170:35;;25185:18;;:::i;:::-;25170:35;25227:1;25224;25220:9;25215:14;;25050:185;;;;:::o;25241:220::-;25381:34;25377:1;25369:6;25365:14;25358:58;25450:3;25445:2;25437:6;25433:15;25426:28;25241:220;:::o;25467:366::-;25609:3;25630:67;25694:2;25689:3;25630:67;:::i;:::-;25623:74;;25706:93;25795:3;25706:93;:::i;:::-;25824:2;25819:3;25815:12;25808:19;;25467:366;;;:::o;25839:419::-;26005:4;26043:2;26032:9;26028:18;26020:26;;26092:9;26086:4;26082:20;26078:1;26067:9;26063:17;26056:47;26120:131;26246:4;26120:131;:::i;:::-;26112:139;;25839:419;;;:::o;26264:180::-;26312:77;26309:1;26302:88;26409:4;26406:1;26399:15;26433:4;26430:1;26423:15;26450:180;26498:77;26495:1;26488:88;26595:4;26592:1;26585:15;26619:4;26616:1;26609:15;26636:143;26693:5;26724:6;26718:13;26709:22;;26740:33;26767:5;26740:33;:::i;:::-;26636:143;;;;:::o;26785:351::-;26855:6;26904:2;26892:9;26883:7;26879:23;26875:32;26872:119;;;26910:79;;:::i;:::-;26872:119;27030:1;27055:64;27111:7;27102:6;27091:9;27087:22;27055:64;:::i;:::-;27045:74;;27001:128;26785:351;;;;:::o;27142:114::-;27209:6;27243:5;27237:12;27227:22;;27142:114;;;:::o;27262:184::-;27361:11;27395:6;27390:3;27383:19;27435:4;27430:3;27426:14;27411:29;;27262:184;;;;:::o;27452:132::-;27519:4;27542:3;27534:11;;27572:4;27567:3;27563:14;27555:22;;27452:132;;;:::o;27590:108::-;27667:24;27685:5;27667:24;:::i;:::-;27662:3;27655:37;27590:108;;:::o;27704:179::-;27773:10;27794:46;27836:3;27828:6;27794:46;:::i;:::-;27872:4;27867:3;27863:14;27849:28;;27704:179;;;;:::o;27889:113::-;27959:4;27991;27986:3;27982:14;27974:22;;27889:113;;;:::o;28038:732::-;28157:3;28186:54;28234:5;28186:54;:::i;:::-;28256:86;28335:6;28330:3;28256:86;:::i;:::-;28249:93;;28366:56;28416:5;28366:56;:::i;:::-;28445:7;28476:1;28461:284;28486:6;28483:1;28480:13;28461:284;;;28562:6;28556:13;28589:63;28648:3;28633:13;28589:63;:::i;:::-;28582:70;;28675:60;28728:6;28675:60;:::i;:::-;28665:70;;28521:224;28508:1;28505;28501:9;28496:14;;28461:284;;;28465:14;28761:3;28754:10;;28162:608;;;28038:732;;;;:::o;28776:831::-;29039:4;29077:3;29066:9;29062:19;29054:27;;29091:71;29159:1;29148:9;29144:17;29135:6;29091:71;:::i;:::-;29172:80;29248:2;29237:9;29233:18;29224:6;29172:80;:::i;:::-;29299:9;29293:4;29289:20;29284:2;29273:9;29269:18;29262:48;29327:108;29430:4;29421:6;29327:108;:::i;:::-;29319:116;;29445:72;29513:2;29502:9;29498:18;29489:6;29445:72;:::i;:::-;29527:73;29595:3;29584:9;29580:19;29571:6;29527:73;:::i;:::-;28776:831;;;;;;;;:::o;29613:177::-;29753:29;29749:1;29741:6;29737:14;29730:53;29613:177;:::o;29796:366::-;29938:3;29959:67;30023:2;30018:3;29959:67;:::i;:::-;29952:74;;30035:93;30124:3;30035:93;:::i;:::-;30153:2;30148:3;30144:12;30137:19;;29796:366;;;:::o;30168:419::-;30334:4;30372:2;30361:9;30357:18;30349:26;;30421:9;30415:4;30411:20;30407:1;30396:9;30392:17;30385:47;30449:131;30575:4;30449:131;:::i;:::-;30441:139;;30168:419;;;:::o

Swarm Source

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