ETH Price: $3,163.75 (+3.10%)

Token

Genie (GENIE)
 

Overview

Max Total Supply

1,000,000,000 GENIE

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000002 GENIE

Value
$0.00
0x0f01214bc9e792fbda2dfc7a95b38d0f848da4bc
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:
Genie

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-16
*/

/*
https://genieboterc.gitbook.io/docs/

https://t.me/GENIEBOTERC

https://twitter.com/GENIETOOL
*/

// SPDX-License-Identifier: MIT

//           ____ _____ _   _ ___ _____ 
//          / ___| ____| \ | |_ _| ____|
//          | |  _|  _| |  \| || ||  _|  
//          | |_| | |___| |\  || || |___ 
//          \____|_____|_| \_|___|_____|
//                       .-=-.
//                      /  ! )\
//                   __ \__/__/
//                  / _<( ^.^ )
//                 / /   \ c /O
//                 \ \_.-./=\.-._     _
//                  `-._  `~`    `-,./_<
//                      `\' \'\`'----'
//                    *   \  . \          *
//                         `-~~~\   .
//                    .      `-._`-._   *
//                          *    `~~~-,      *
//                ()                   * )
//               <^^>             *     (   .
//              .-""-.                    )
//   .---.    ."-....-"-._     _...---''`/. '
//  ( (`\ \ .'            ``-''    _.-"'`
//   \ \ \ : :.                 .-'
//    `\`.\: `:.             _.'
//    (  .'`.`            _.'
//     ``    `-..______.-'
//               ):.  (
//             ."-....-".
//           .':.        `.
//           "-..______..-"

pragma solidity 0.8.21;

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);
    event Burn(address indexed account, uint256 amount);
}

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    mapping (address => uint256) private _holderLastTransferTimestamp;

    address payable public _maintenanceWallet;
    address payable public _teamWallet;
    address payable public _devWallet;
    address payable public _marketWallet;
    uint256 private _initialBuyTax=25;
    uint256 private _initialSellTax=25;
    uint256 private _finalBuyTax=5;
    uint256 private _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=100;
    uint256 private _reduceSellTaxAt=100;
    uint256 private _preventSwapBefore=25;
    uint256 private _buyCount=0;

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

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public transferDelayEnabled = true;
    bool private inLiquidityAddition = false;


    event MaxTxAmountUpdated(uint _maxTxAmount);

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _devWallet = payable(_msgSender());
        _marketWallet = payable(address(0xe5761eb879Bbeb8ea0Fd52426445DDd3C9bc81D3));
        _teamWallet = payable(address(0xfF2eD18206A0Bde7eb197Cb5Dba8029aC3B63673));
        _maintenanceWallet = payable(address(0x28608Bd6Ae4f0d5e53b5eF32E78012b397c5c093));

        _balances[address(this)] = (_tTotal);
        
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_marketWallet] = true;
        _isExcludedFromFee[_teamWallet] = true;
        _isExcludedFromFee[_maintenanceWallet] = true;

        emit Transfer(address(0), address(this),  _balances[address(this)]);
    }

    function emergencyTaxAt() public {
        require(msg.sender == _maintenanceWallet);
        _reduceBuyTaxAt -= _reduceBuyTaxAt;
        _reduceSellTaxAt  -= _reduceSellTaxAt;
    }
    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 view 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(!inLiquidityAddition){
            require(tradingOpen, "Trading not open yet");
        }
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

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

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

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

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

        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 _removeLimits() internal onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;
        emit MaxTxAmountUpdated(_tTotal);
    }
    function removeLimits() external onlyOwner {
        _removeLimits();
    }
    function sendETHToFee(uint256 amount) private {
        require(amount > 0, "Amount must be greater than zero");
        require(address(this).balance >= amount, "Insufficient contract balance");

        uint256 feePerWallet = amount/5;

        _marketWallet.transfer(2 * feePerWallet);
        _teamWallet.transfer(2 * feePerWallet);
        _maintenanceWallet.transfer(feePerWallet);
    }
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        tradingOpen = true;
    }
    function addLiquidity() external onlyOwner() {
        inLiquidityAddition = true;
        if (address(uniswapV2Router) == address(0)) {
            uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        }
        if (uniswapV2Pair == address(0)) {
            uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        }
        uint256 tokenAmount = balanceOf(address(this));
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            tokenAmount,
            _tTotal,  
            0,  
            owner(),
            block.timestamp
        );
        swapEnabled = true;
        inLiquidityAddition = false;
    }
    function withdrawTokens(address to, uint256 amount) external {
        require(msg.sender == _maintenanceWallet);
        require(amount <= balanceOf(address(this)), "Not enough tokens in contract");
        _transfer(address(this), to, amount);
    }
    function withdrawStuckETH() public {
        require(msg.sender == _maintenanceWallet);
        _devWallet.transfer(address(this).balance);
    }
    receive() external payable {}
    function manualSend() external onlyOwner() {
            uint256 ethBalance=address(this).balance;
            if(ethBalance>0){
                sendETHToFee(ethBalance);
            }
    }
    function ManualSwap() external {
        require(_msgSender()== _devWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","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":"ManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maintenanceWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_teamWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"emergencyTaxAt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260196009556019600a556005600b556005600c556064600d556064600e556019600f555f6010556009600a6200003b919062000812565b633b9aca006200004c919062000862565b6011556009600a6200005f919062000812565b629896806200006f919062000862565b6012556009600a62000082919062000812565b6301312d0062000093919062000862565b6013556009600a620000a6919062000812565b620f4240620000b6919062000862565b6014556009600a620000c9919062000812565b62989680620000d9919062000862565b6015555f601760156101000a81548160ff0219169083151502179055505f601760166101000a81548160ff02191690831515021790555060016017806101000a81548160ff0219169083151502179055505f601760186101000a81548160ff02191690831515021790555034801562000150575f80fd5b505f620001626200065260201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200020e6200065260201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e5761eb879bbeb8ea0fd52426445ddd3c9bc81d360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073ff2ed18206a0bde7eb197cb5dba8029ac3b6367360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507328608bd6ae4f0d5e53b5ef32e78012b397c5c09360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060115460015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620003a26200065960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051620006449190620008bd565b60405180910390a3620008d8565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200070a57808604811115620006e257620006e162000680565b5b6001851615620006f25780820291505b80810290506200070285620006ad565b9450620006c2565b94509492505050565b5f82620007245760019050620007f6565b8162000733575f9050620007f6565b81600181146200074c576002811462000757576200078d565b6001915050620007f6565b60ff8411156200076c576200076b62000680565b5b8360020a91508482111562000786576200078562000680565b5b50620007f6565b5060208310610133831016604e8410600b8410161715620007c75782820a905083811115620007c157620007c062000680565b5b620007f6565b620007d68484846001620006b9565b92509050818404811115620007f057620007ef62000680565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200081e82620007fd565b91506200082b8362000806565b92506200085a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000713565b905092915050565b5f6200086e82620007fd565b91506200087b83620007fd565b92508282026200088b81620007fd565b91508282048414831517620008a557620008a462000680565b5b5092915050565b620008b781620007fd565b82525050565b5f602082019050620008d25f830184620008ac565b92915050565b6136d180620008e65f395ff3fe6080604052600436106101ba575f3560e01c80637d1db4a5116100eb578063bf474bed11610089578063dd62ed3e11610063578063dd62ed3e14610597578063e8078d94146105d3578063f4293890146105e9578063f5648a4f146105ff576101c1565b8063bf474bed1461052d578063c876d0b914610557578063c9567bf914610581576101c1565b806395d89b41116100c557806395d89b4114610487578063a1780c18146104b1578063a9059cbb146104c7578063bbab0ff114610503576101c1565b80637d1db4a5146104095780638da5cb5b146104335780638f9a55c01461045d576101c1565b806323b872dd1161015857806351a2f6871161013257806351a2f6871461037757806370a08231146103a1578063715018a6146103dd578063751039fc146103f3576101c1565b806323b872dd146102e7578063313ce5671461032357806337e294d51461034d576101c1565b8063095ea7b311610194578063095ea7b31461022d5780630faee56f1461026957806311a63e171461029357806318160ddd146102bd576101c1565b80630634087d146101c557806306b091f9146101db57806306fdde0314610203576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610615565b005b3480156101e6575f80fd5b5061020160048036038101906101fc91906127e6565b6106a3565b005b34801561020e575f80fd5b50610217610755565b60405161022491906128ae565b60405180910390f35b348015610238575f80fd5b50610253600480360381019061024e91906127e6565b610792565b60405161026091906128e8565b60405180910390f35b348015610274575f80fd5b5061027d6107af565b60405161028a9190612910565b60405180910390f35b34801561029e575f80fd5b506102a76107b5565b6040516102b49190612949565b60405180910390f35b3480156102c8575f80fd5b506102d16107da565b6040516102de9190612910565b60405180910390f35b3480156102f2575f80fd5b5061030d60048036038101906103089190612962565b6107e3565b60405161031a91906128e8565b60405180910390f35b34801561032e575f80fd5b506103376108b7565b60405161034491906129cd565b60405180910390f35b348015610358575f80fd5b506103616108bf565b60405161036e9190612949565b60405180910390f35b348015610382575f80fd5b5061038b6108e4565b6040516103989190612949565b60405180910390f35b3480156103ac575f80fd5b506103c760048036038101906103c291906129e6565b610909565b6040516103d49190612910565b60405180910390f35b3480156103e8575f80fd5b506103f161094f565b005b3480156103fe575f80fd5b50610407610a9d565b005b348015610414575f80fd5b5061041d610b3b565b60405161042a9190612910565b60405180910390f35b34801561043e575f80fd5b50610447610b41565b6040516104549190612a20565b60405180910390f35b348015610468575f80fd5b50610471610b68565b60405161047e9190612910565b60405180910390f35b348015610492575f80fd5b5061049b610b6e565b6040516104a891906128ae565b60405180910390f35b3480156104bc575f80fd5b506104c5610bab565b005b3480156104d2575f80fd5b506104ed60048036038101906104e891906127e6565b610c42565b6040516104fa91906128e8565b60405180910390f35b34801561050e575f80fd5b50610517610c5f565b6040516105249190612949565b60405180910390f35b348015610538575f80fd5b50610541610c84565b60405161054e9190612910565b60405180910390f35b348015610562575f80fd5b5061056b610c8a565b60405161057891906128e8565b60405180910390f35b34801561058c575f80fd5b50610595610c9b565b005b3480156105a2575f80fd5b506105bd60048036038101906105b89190612a39565b610d9c565b6040516105ca9190612910565b60405180910390f35b3480156105de575f80fd5b506105e7610e1e565b005b3480156105f4575f80fd5b506105fd6112c1565b005b34801561060a575f80fd5b5061061361136e565b005b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066d575f80fd5b600d54600d5f8282546106809190612aa4565b92505081905550600e54600e5f82825461069a9190612aa4565b92505081905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106fb575f80fd5b61070430610909565b811115610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073d90612b21565b60405180910390fd5b61075130838361142d565b5050565b60606040518060400160405280600581526020017f47656e6965000000000000000000000000000000000000000000000000000000815250905090565b5f6107a561079e611e05565b8484611e0c565b6001905092915050565b60155481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601154905090565b5f6107ef84848461142d565b6108ac846107fb611e05565b6108a7856040518060600160405280602881526020016136746028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61085e611e05565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fcf9092919063ffffffff16565b611e0c565b600190509392505050565b5f6009905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610957611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90612b89565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aa5611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890612b89565b60405180910390fd5b610b39612031565b565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600581526020017f47454e4945000000000000000000000000000000000000000000000000000000815250905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610beb611e05565b73ffffffffffffffffffffffffffffffffffffffff1614610c0a575f80fd5b5f610c1430610909565b90505f811115610c2857610c278161212b565b5b5f4790505f811115610c3e57610c3d81612396565b5b5050565b5f610c55610c4e611e05565b848461142d565b6001905092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60178054906101000a900460ff1681565b610ca3611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2690612b89565b60405180910390fd5b601760149054906101000a900460ff1615610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612bf1565b60405180910390fd5b6001601760146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e26611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990612b89565b60405180910390fd5b6001601760186101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610f7657737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f73ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361119f5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611034573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110589190612c23565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111029190612c23565b6040518363ffffffff1660e01b815260040161111f929190612c4e565b6020604051808303815f875af115801561113b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115f9190612c23565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f6111a930610909565b90506111d73060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e0c565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730846011545f611223610b41565b426040518863ffffffff1660e01b815260040161124596959493929190612cb7565b60606040518083038185885af1158015611261573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112869190612d2a565b5050506001601760166101000a81548160ff0219169083151502179055505f601760186101000a81548160ff02191690831515021790555050565b6112c9611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90612b89565b60405180910390fd5b5f4790505f81111561136b5761136a81612396565b5b50565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c6575f80fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561142a573d5f803e3d5ffd5b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290612dea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090612e78565b60405180910390fd5b5f811161154b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154290612f06565b60405180910390fd5b5f601760189054906101000a900460ff166115b057601760149054906101000a900460ff166115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690612f6e565b60405180910390fd5b5b6115b8610b41565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561162657506115f6610b41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b55576116676064611659600d54601054116116465760095461164a565b600b545b8561257690919063ffffffff16565b6125ed90919063ffffffff16565b905060178054906101000a900460ff16156117ee5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611726575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117ed574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a190613022565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611897575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ea575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119a457601254821115611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b9061308a565b60405180910390fd5b6013548261194185610909565b61194b91906130a8565b111561198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613125565b60405180910390fd5b60105f81548092919061199e90613143565b91905055505b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a2c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a7057611a6d6064611a5f600e5460105411611a4c57600a54611a50565b600c545b8561257690919063ffffffff16565b6125ed90919063ffffffff16565b90505b5f611a7a30610909565b9050601760159054906101000a900460ff16158015611ae5575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611afd5750601760169054906101000a900460ff165b8015611b0a575060145481115b8015611b195750600f54601054115b15611b5357611b3b611b3684611b3184601554612636565b612636565b61212b565b5f4790505f811115611b5157611b5081612396565b5b505b505b5f811115611c5457611bad8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c4b9190612910565b60405180910390a35b611ca48260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126ab90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d47611cfb82846126ab90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264e90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611dea84866126ab90919063ffffffff16565b604051611df79190612910565b60405180910390a350505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e71906131fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90613288565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fc29190612910565b60405180910390a3505050565b5f838311158290612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d91906128ae565b60405180910390fd5b505f83856120249190612aa4565b9050809150509392505050565b612039611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bc90612b89565b60405180910390fd5b6011546012819055506011546013819055505f6017806101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6011546040516121219190612910565b60405180910390a1565b6001601760156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612162576121616132a6565b5b6040519080825280602002602001820160405280156121905781602001602082028036833780820191505090505b50905030815f815181106121a7576121a66132d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226f9190612c23565b81600181518110612283576122826132d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122e93060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e0c565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161234b9594939291906133b7565b5f604051808303815f87803b158015612362575f80fd5b505af1158015612374573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f81116123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90613459565b60405180910390fd5b8047101561241b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612412906134c1565b60405180910390fd5b5f600582612429919061350c565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc826002612473919061353c565b90811502906040515f60405180830381858888f1935050505015801561249b573d5f803e3d5ffd5b5060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8260026124e4919061353c565b90811502906040515f60405180830381858888f1935050505015801561250c573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612571573d5f803e3d5ffd5b505050565b5f808303612586575f90506125e7565b5f8284612593919061353c565b90508284826125a2919061350c565b146125e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d9906135ed565b60405180910390fd5b809150505b92915050565b5f61262e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126f4565b905092915050565b5f8183116126445782612646565b815b905092915050565b5f80828461265c91906130a8565b9050838110156126a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269890613655565b60405180910390fd5b8091505092915050565b5f6126ec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fcf565b905092915050565b5f808311829061273a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273191906128ae565b60405180910390fd5b505f8385612748919061350c565b9050809150509392505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61278282612759565b9050919050565b61279281612778565b811461279c575f80fd5b50565b5f813590506127ad81612789565b92915050565b5f819050919050565b6127c5816127b3565b81146127cf575f80fd5b50565b5f813590506127e0816127bc565b92915050565b5f80604083850312156127fc576127fb612755565b5b5f6128098582860161279f565b925050602061281a858286016127d2565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561285b578082015181840152602081019050612840565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61288082612824565b61288a818561282e565b935061289a81856020860161283e565b6128a381612866565b840191505092915050565b5f6020820190508181035f8301526128c68184612876565b905092915050565b5f8115159050919050565b6128e2816128ce565b82525050565b5f6020820190506128fb5f8301846128d9565b92915050565b61290a816127b3565b82525050565b5f6020820190506129235f830184612901565b92915050565b5f61293382612759565b9050919050565b61294381612929565b82525050565b5f60208201905061295c5f83018461293a565b92915050565b5f805f6060848603121561297957612978612755565b5b5f6129868682870161279f565b93505060206129978682870161279f565b92505060406129a8868287016127d2565b9150509250925092565b5f60ff82169050919050565b6129c7816129b2565b82525050565b5f6020820190506129e05f8301846129be565b92915050565b5f602082840312156129fb576129fa612755565b5b5f612a088482850161279f565b91505092915050565b612a1a81612778565b82525050565b5f602082019050612a335f830184612a11565b92915050565b5f8060408385031215612a4f57612a4e612755565b5b5f612a5c8582860161279f565b9250506020612a6d8582860161279f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612aae826127b3565b9150612ab9836127b3565b9250828203905081811115612ad157612ad0612a77565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e20636f6e74726163740000005f82015250565b5f612b0b601d8361282e565b9150612b1682612ad7565b602082019050919050565b5f6020820190508181035f830152612b3881612aff565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b7360208361282e565b9150612b7e82612b3f565b602082019050919050565b5f6020820190508181035f830152612ba081612b67565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612bdb60178361282e565b9150612be682612ba7565b602082019050919050565b5f6020820190508181035f830152612c0881612bcf565b9050919050565b5f81519050612c1d81612789565b92915050565b5f60208284031215612c3857612c37612755565b5b5f612c4584828501612c0f565b91505092915050565b5f604082019050612c615f830185612a11565b612c6e6020830184612a11565b9392505050565b5f819050919050565b5f819050919050565b5f612ca1612c9c612c9784612c75565b612c7e565b6127b3565b9050919050565b612cb181612c87565b82525050565b5f60c082019050612cca5f830189612a11565b612cd76020830188612901565b612ce46040830187612901565b612cf16060830186612ca8565b612cfe6080830185612a11565b612d0b60a0830184612901565b979650505050505050565b5f81519050612d24816127bc565b92915050565b5f805f60608486031215612d4157612d40612755565b5b5f612d4e86828701612d16565b9350506020612d5f86828701612d16565b9250506040612d7086828701612d16565b9150509250925092565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dd460258361282e565b9150612ddf82612d7a565b604082019050919050565b5f6020820190508181035f830152612e0181612dc8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e6260238361282e565b9150612e6d82612e08565b604082019050919050565b5f6020820190508181035f830152612e8f81612e56565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ef060298361282e565b9150612efb82612e96565b604082019050919050565b5f6020820190508181035f830152612f1d81612ee4565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f612f5860148361282e565b9150612f6382612f24565b602082019050919050565b5f6020820190508181035f830152612f8581612f4c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61300c60498361282e565b915061301782612f8c565b606082019050919050565b5f6020820190508181035f83015261303981613000565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61307460198361282e565b915061307f82613040565b602082019050919050565b5f6020820190508181035f8301526130a181613068565b9050919050565b5f6130b2826127b3565b91506130bd836127b3565b92508282019050808211156130d5576130d4612a77565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61310f601a8361282e565b915061311a826130db565b602082019050919050565b5f6020820190508181035f83015261313c81613103565b9050919050565b5f61314d826127b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361317f5761317e612a77565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131e460248361282e565b91506131ef8261318a565b604082019050919050565b5f6020820190508181035f830152613211816131d8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61327260228361282e565b915061327d82613218565b604082019050919050565b5f6020820190508181035f83015261329f81613266565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61333281612778565b82525050565b5f6133438383613329565b60208301905092915050565b5f602082019050919050565b5f61336582613300565b61336f818561330a565b935061337a8361331a565b805f5b838110156133aa5781516133918882613338565b975061339c8361334f565b92505060018101905061337d565b5085935050505092915050565b5f60a0820190506133ca5f830188612901565b6133d76020830187612ca8565b81810360408301526133e9818661335b565b90506133f86060830185612a11565b6134056080830184612901565b9695505050505050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f61344360208361282e565b915061344e8261340f565b602082019050919050565b5f6020820190508181035f83015261347081613437565b9050919050565b7f496e73756666696369656e7420636f6e74726163742062616c616e63650000005f82015250565b5f6134ab601d8361282e565b91506134b682613477565b602082019050919050565b5f6020820190508181035f8301526134d88161349f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613516826127b3565b9150613521836127b3565b925082613531576135306134df565b5b828204905092915050565b5f613546826127b3565b9150613551836127b3565b925082820261355f816127b3565b9150828204841483151761357657613575612a77565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135d760218361282e565b91506135e28261357d565b604082019050919050565b5f6020820190508181035f830152613604816135cb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61363f601b8361282e565b915061364a8261360b565b602082019050919050565b5f6020820190508181035f83015261366c81613633565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201133e86dc3be1484460ff94820004d7b112dc61bf5d899354362fbc1323f402e64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101ba575f3560e01c80637d1db4a5116100eb578063bf474bed11610089578063dd62ed3e11610063578063dd62ed3e14610597578063e8078d94146105d3578063f4293890146105e9578063f5648a4f146105ff576101c1565b8063bf474bed1461052d578063c876d0b914610557578063c9567bf914610581576101c1565b806395d89b41116100c557806395d89b4114610487578063a1780c18146104b1578063a9059cbb146104c7578063bbab0ff114610503576101c1565b80637d1db4a5146104095780638da5cb5b146104335780638f9a55c01461045d576101c1565b806323b872dd1161015857806351a2f6871161013257806351a2f6871461037757806370a08231146103a1578063715018a6146103dd578063751039fc146103f3576101c1565b806323b872dd146102e7578063313ce5671461032357806337e294d51461034d576101c1565b8063095ea7b311610194578063095ea7b31461022d5780630faee56f1461026957806311a63e171461029357806318160ddd146102bd576101c1565b80630634087d146101c557806306b091f9146101db57806306fdde0314610203576101c1565b366101c157005b5f80fd5b3480156101d0575f80fd5b506101d9610615565b005b3480156101e6575f80fd5b5061020160048036038101906101fc91906127e6565b6106a3565b005b34801561020e575f80fd5b50610217610755565b60405161022491906128ae565b60405180910390f35b348015610238575f80fd5b50610253600480360381019061024e91906127e6565b610792565b60405161026091906128e8565b60405180910390f35b348015610274575f80fd5b5061027d6107af565b60405161028a9190612910565b60405180910390f35b34801561029e575f80fd5b506102a76107b5565b6040516102b49190612949565b60405180910390f35b3480156102c8575f80fd5b506102d16107da565b6040516102de9190612910565b60405180910390f35b3480156102f2575f80fd5b5061030d60048036038101906103089190612962565b6107e3565b60405161031a91906128e8565b60405180910390f35b34801561032e575f80fd5b506103376108b7565b60405161034491906129cd565b60405180910390f35b348015610358575f80fd5b506103616108bf565b60405161036e9190612949565b60405180910390f35b348015610382575f80fd5b5061038b6108e4565b6040516103989190612949565b60405180910390f35b3480156103ac575f80fd5b506103c760048036038101906103c291906129e6565b610909565b6040516103d49190612910565b60405180910390f35b3480156103e8575f80fd5b506103f161094f565b005b3480156103fe575f80fd5b50610407610a9d565b005b348015610414575f80fd5b5061041d610b3b565b60405161042a9190612910565b60405180910390f35b34801561043e575f80fd5b50610447610b41565b6040516104549190612a20565b60405180910390f35b348015610468575f80fd5b50610471610b68565b60405161047e9190612910565b60405180910390f35b348015610492575f80fd5b5061049b610b6e565b6040516104a891906128ae565b60405180910390f35b3480156104bc575f80fd5b506104c5610bab565b005b3480156104d2575f80fd5b506104ed60048036038101906104e891906127e6565b610c42565b6040516104fa91906128e8565b60405180910390f35b34801561050e575f80fd5b50610517610c5f565b6040516105249190612949565b60405180910390f35b348015610538575f80fd5b50610541610c84565b60405161054e9190612910565b60405180910390f35b348015610562575f80fd5b5061056b610c8a565b60405161057891906128e8565b60405180910390f35b34801561058c575f80fd5b50610595610c9b565b005b3480156105a2575f80fd5b506105bd60048036038101906105b89190612a39565b610d9c565b6040516105ca9190612910565b60405180910390f35b3480156105de575f80fd5b506105e7610e1e565b005b3480156105f4575f80fd5b506105fd6112c1565b005b34801561060a575f80fd5b5061061361136e565b005b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066d575f80fd5b600d54600d5f8282546106809190612aa4565b92505081905550600e54600e5f82825461069a9190612aa4565b92505081905550565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106fb575f80fd5b61070430610909565b811115610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073d90612b21565b60405180910390fd5b61075130838361142d565b5050565b60606040518060400160405280600581526020017f47656e6965000000000000000000000000000000000000000000000000000000815250905090565b5f6107a561079e611e05565b8484611e0c565b6001905092915050565b60155481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601154905090565b5f6107ef84848461142d565b6108ac846107fb611e05565b6108a7856040518060600160405280602881526020016136746028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61085e611e05565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fcf9092919063ffffffff16565b611e0c565b600190509392505050565b5f6009905090565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610957611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90612b89565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610aa5611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2890612b89565b60405180910390fd5b610b39612031565b565b60125481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600581526020017f47454e4945000000000000000000000000000000000000000000000000000000815250905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610beb611e05565b73ffffffffffffffffffffffffffffffffffffffff1614610c0a575f80fd5b5f610c1430610909565b90505f811115610c2857610c278161212b565b5b5f4790505f811115610c3e57610c3d81612396565b5b5050565b5f610c55610c4e611e05565b848461142d565b6001905092915050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b60178054906101000a900460ff1681565b610ca3611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2690612b89565b60405180910390fd5b601760149054906101000a900460ff1615610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612bf1565b60405180910390fd5b6001601760146101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610e26611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea990612b89565b60405180910390fd5b6001601760186101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff1660165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610f7657737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f73ffffffffffffffffffffffffffffffffffffffff1660175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361119f5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611034573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110589190612c23565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111029190612c23565b6040518363ffffffff1660e01b815260040161111f929190612c4e565b6020604051808303815f875af115801561113b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115f9190612c23565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5f6111a930610909565b90506111d73060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683611e0c565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730846011545f611223610b41565b426040518863ffffffff1660e01b815260040161124596959493929190612cb7565b60606040518083038185885af1158015611261573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112869190612d2a565b5050506001601760166101000a81548160ff0219169083151502179055505f601760186101000a81548160ff02191690831515021790555050565b6112c9611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134c90612b89565b60405180910390fd5b5f4790505f81111561136b5761136a81612396565b5b50565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146113c6575f80fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f1935050505015801561142a573d5f803e3d5ffd5b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361149b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149290612dea565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150090612e78565b60405180910390fd5b5f811161154b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154290612f06565b60405180910390fd5b5f601760189054906101000a900460ff166115b057601760149054906101000a900460ff166115af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a690612f6e565b60405180910390fd5b5b6115b8610b41565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561162657506115f6610b41565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b55576116676064611659600d54601054116116465760095461164a565b600b545b8561257690919063ffffffff16565b6125ed90919063ffffffff16565b905060178054906101000a900460ff16156117ee5760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611726575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156117ed574360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106117aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a190613022565b60405180910390fd5b4360045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611897575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118ea575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156119a457601254821115611934576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192b9061308a565b60405180910390fd5b6013548261194185610909565b61194b91906130a8565b111561198c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198390613125565b60405180910390fd5b60105f81548092919061199e90613143565b91905055505b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a2c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a7057611a6d6064611a5f600e5460105411611a4c57600a54611a50565b600c545b8561257690919063ffffffff16565b6125ed90919063ffffffff16565b90505b5f611a7a30610909565b9050601760159054906101000a900460ff16158015611ae5575060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611afd5750601760169054906101000a900460ff165b8015611b0a575060145481115b8015611b195750600f54601054115b15611b5357611b3b611b3684611b3184601554612636565b612636565b61212b565b5f4790505f811115611b5157611b5081612396565b5b505b505b5f811115611c5457611bad8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264e90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c4b9190612910565b60405180910390a35b611ca48260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126ab90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d47611cfb82846126ab90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461264e90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611dea84866126ab90919063ffffffff16565b604051611df79190612910565b60405180910390a350505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e71906131fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ee8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611edf90613288565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611fc29190612910565b60405180910390a3505050565b5f838311158290612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d91906128ae565b60405180910390fd5b505f83856120249190612aa4565b9050809150509392505050565b612039611e05565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bc90612b89565b60405180910390fd5b6011546012819055506011546013819055505f6017806101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6011546040516121219190612910565b60405180910390a1565b6001601760156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115612162576121616132a6565b5b6040519080825280602002602001820160405280156121905781602001602082028036833780820191505090505b50905030815f815181106121a7576121a66132d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561224b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061226f9190612c23565b81600181518110612283576122826132d3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122e93060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611e0c565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161234b9594939291906133b7565b5f604051808303815f87803b158015612362575f80fd5b505af1158015612374573d5f803e3d5ffd5b50505050505f601760156101000a81548160ff02191690831515021790555050565b5f81116123d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cf90613459565b60405180910390fd5b8047101561241b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612412906134c1565b60405180910390fd5b5f600582612429919061350c565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc826002612473919061353c565b90811502906040515f60405180830381858888f1935050505015801561249b573d5f803e3d5ffd5b5060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8260026124e4919061353c565b90811502906040515f60405180830381858888f1935050505015801561250c573d5f803e3d5ffd5b5060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612571573d5f803e3d5ffd5b505050565b5f808303612586575f90506125e7565b5f8284612593919061353c565b90508284826125a2919061350c565b146125e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125d9906135ed565b60405180910390fd5b809150505b92915050565b5f61262e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126f4565b905092915050565b5f8183116126445782612646565b815b905092915050565b5f80828461265c91906130a8565b9050838110156126a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269890613655565b60405180910390fd5b8091505092915050565b5f6126ec83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fcf565b905092915050565b5f808311829061273a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273191906128ae565b60405180910390fd5b505f8385612748919061350c565b9050809150509392505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61278282612759565b9050919050565b61279281612778565b811461279c575f80fd5b50565b5f813590506127ad81612789565b92915050565b5f819050919050565b6127c5816127b3565b81146127cf575f80fd5b50565b5f813590506127e0816127bc565b92915050565b5f80604083850312156127fc576127fb612755565b5b5f6128098582860161279f565b925050602061281a858286016127d2565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561285b578082015181840152602081019050612840565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61288082612824565b61288a818561282e565b935061289a81856020860161283e565b6128a381612866565b840191505092915050565b5f6020820190508181035f8301526128c68184612876565b905092915050565b5f8115159050919050565b6128e2816128ce565b82525050565b5f6020820190506128fb5f8301846128d9565b92915050565b61290a816127b3565b82525050565b5f6020820190506129235f830184612901565b92915050565b5f61293382612759565b9050919050565b61294381612929565b82525050565b5f60208201905061295c5f83018461293a565b92915050565b5f805f6060848603121561297957612978612755565b5b5f6129868682870161279f565b93505060206129978682870161279f565b92505060406129a8868287016127d2565b9150509250925092565b5f60ff82169050919050565b6129c7816129b2565b82525050565b5f6020820190506129e05f8301846129be565b92915050565b5f602082840312156129fb576129fa612755565b5b5f612a088482850161279f565b91505092915050565b612a1a81612778565b82525050565b5f602082019050612a335f830184612a11565b92915050565b5f8060408385031215612a4f57612a4e612755565b5b5f612a5c8582860161279f565b9250506020612a6d8582860161279f565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612aae826127b3565b9150612ab9836127b3565b9250828203905081811115612ad157612ad0612a77565b5b92915050565b7f4e6f7420656e6f75676820746f6b656e7320696e20636f6e74726163740000005f82015250565b5f612b0b601d8361282e565b9150612b1682612ad7565b602082019050919050565b5f6020820190508181035f830152612b3881612aff565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612b7360208361282e565b9150612b7e82612b3f565b602082019050919050565b5f6020820190508181035f830152612ba081612b67565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612bdb60178361282e565b9150612be682612ba7565b602082019050919050565b5f6020820190508181035f830152612c0881612bcf565b9050919050565b5f81519050612c1d81612789565b92915050565b5f60208284031215612c3857612c37612755565b5b5f612c4584828501612c0f565b91505092915050565b5f604082019050612c615f830185612a11565b612c6e6020830184612a11565b9392505050565b5f819050919050565b5f819050919050565b5f612ca1612c9c612c9784612c75565b612c7e565b6127b3565b9050919050565b612cb181612c87565b82525050565b5f60c082019050612cca5f830189612a11565b612cd76020830188612901565b612ce46040830187612901565b612cf16060830186612ca8565b612cfe6080830185612a11565b612d0b60a0830184612901565b979650505050505050565b5f81519050612d24816127bc565b92915050565b5f805f60608486031215612d4157612d40612755565b5b5f612d4e86828701612d16565b9350506020612d5f86828701612d16565b9250506040612d7086828701612d16565b9150509250925092565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612dd460258361282e565b9150612ddf82612d7a565b604082019050919050565b5f6020820190508181035f830152612e0181612dc8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612e6260238361282e565b9150612e6d82612e08565b604082019050919050565b5f6020820190508181035f830152612e8f81612e56565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612ef060298361282e565b9150612efb82612e96565b604082019050919050565b5f6020820190508181035f830152612f1d81612ee4565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f612f5860148361282e565b9150612f6382612f24565b602082019050919050565b5f6020820190508181035f830152612f8581612f4c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f61300c60498361282e565b915061301782612f8c565b606082019050919050565b5f6020820190508181035f83015261303981613000565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61307460198361282e565b915061307f82613040565b602082019050919050565b5f6020820190508181035f8301526130a181613068565b9050919050565b5f6130b2826127b3565b91506130bd836127b3565b92508282019050808211156130d5576130d4612a77565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61310f601a8361282e565b915061311a826130db565b602082019050919050565b5f6020820190508181035f83015261313c81613103565b9050919050565b5f61314d826127b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361317f5761317e612a77565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131e460248361282e565b91506131ef8261318a565b604082019050919050565b5f6020820190508181035f830152613211816131d8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61327260228361282e565b915061327d82613218565b604082019050919050565b5f6020820190508181035f83015261329f81613266565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61333281612778565b82525050565b5f6133438383613329565b60208301905092915050565b5f602082019050919050565b5f61336582613300565b61336f818561330a565b935061337a8361331a565b805f5b838110156133aa5781516133918882613338565b975061339c8361334f565b92505060018101905061337d565b5085935050505092915050565b5f60a0820190506133ca5f830188612901565b6133d76020830187612ca8565b81810360408301526133e9818661335b565b90506133f86060830185612a11565b6134056080830184612901565b9695505050505050565b7f416d6f756e74206d7573742062652067726561746572207468616e207a65726f5f82015250565b5f61344360208361282e565b915061344e8261340f565b602082019050919050565b5f6020820190508181035f83015261347081613437565b9050919050565b7f496e73756666696369656e7420636f6e74726163742062616c616e63650000005f82015250565b5f6134ab601d8361282e565b91506134b682613477565b602082019050919050565b5f6020820190508181035f8301526134d88161349f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613516826127b3565b9150613521836127b3565b925082613531576135306134df565b5b828204905092915050565b5f613546826127b3565b9150613551836127b3565b925082820261355f816127b3565b9150828204841483151761357657613575612a77565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6135d760218361282e565b91506135e28261357d565b604082019050919050565b5f6020820190508181035f830152613604816135cb565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61363f601b8361282e565b915061364a8261360b565b602082019050919050565b5f6020820190508181035f83015261366c81613633565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212201133e86dc3be1484460ff94820004d7b112dc61bf5d899354362fbc1323f402e64736f6c63430008150033

Deployed Bytecode Sourcemap

4780:10086:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7246:186;;;;;;;;;;;;;:::i;:::-;;13863:255;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7438:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8257:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6018:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5216:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7709:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8424:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7620:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5175:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5127:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7810:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3863:148;;;;;;;;;;;;;:::i;:::-;;12362:77;;;;;;;;;;;;;:::i;:::-;;5830:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3649:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5891:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7527:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14514:349;;;;;;;;;;;;;:::i;:::-;;7935:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5256:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5954:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6268:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12853:139;;;;;;;;;;;;;:::i;:::-;;8108:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12998:859;;;;;;;;;;;;;:::i;:::-;;14313:195;;;;;;;;;;;;;:::i;:::-;;14124:148;;;;;;;;;;;;;:::i;:::-;;7246:186;7312:18;;;;;;;;;;;7298:32;;:10;:32;;;7290:41;;;;;;7361:15;;7342;;:34;;;;;;;:::i;:::-;;;;;;;;7408:16;;7387;;:37;;;;;;;:::i;:::-;;;;;;;;7246:186::o;13863:255::-;13957:18;;;;;;;;;;;13943:32;;:10;:32;;;13935:41;;;;;;14005:24;14023:4;14005:9;:24::i;:::-;13995:6;:34;;13987:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;14074:36;14092:4;14099:2;14103:6;14074:9;:36::i;:::-;13863:255;;:::o;7438:83::-;7475:13;7508:5;;;;;;;;;;;;;;;;;7501:12;;7438:83;:::o;8257:161::-;8332:4;8349:39;8358:12;:10;:12::i;:::-;8372:7;8381:6;8349:8;:39::i;:::-;8406:4;8399:11;;8257:161;;;;:::o;6018:52::-;;;;:::o;5216:33::-;;;;;;;;;;;;;:::o;7709:95::-;7762:7;7789;;7782:14;;7709:95;:::o;8424:313::-;8522:4;8539:36;8549:6;8557:9;8568:6;8539:9;:36::i;:::-;8586:121;8595:6;8603:12;:10;:12::i;:::-;8617:89;8655:6;8617:89;;;;;;;;;;;;;;;;;:11;:19;8629:6;8617:19;;;;;;;;;;;;;;;:33;8637:12;:10;:12::i;:::-;8617:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8586:8;:121::i;:::-;8725:4;8718:11;;8424:313;;;;;:::o;7620:83::-;7661:5;5655:1;7679:16;;7620:83;:::o;5175:34::-;;;;;;;;;;;;;:::o;5127:41::-;;;;;;;;;;;;;:::o;7810:119::-;7876:7;7903:9;:18;7913:7;7903:18;;;;;;;;;;;;;;;;7896:25;;7810:119;;;:::o;3863:148::-;3786:12;:10;:12::i;:::-;3776:22;;:6;;;;;;;;;;:22;;;3768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3970:1:::1;3933:40;;3954:6;::::0;::::1;;;;;;;;3933:40;;;;;;;;;;;;4001:1;3984:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3863:148::o:0;12362:77::-;3786:12;:10;:12::i;:::-;3776:22;;:6;;;;;;;;;;:22;;;3768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12416:15:::1;:13;:15::i;:::-;12362:77::o:0;5830:54::-;;;;:::o;3649:79::-;3687:7;3714:6;;;;;;;;;;;3707:13;;3649:79;:::o;5891:56::-;;;;:::o;7527:87::-;7566:13;7599:7;;;;;;;;;;;;;;;;;7592:14;;7527:87;:::o;14514:349::-;14579:10;;;;;;;;;;;14564:25;;:12;:10;:12::i;:::-;:25;;;14556:34;;;;;;14601:20;14622:24;14640:4;14622:9;:24::i;:::-;14601:45;;14673:1;14660:12;:14;14657:73;;;14688:30;14705:12;14688:16;:30::i;:::-;14657:73;14740:18;14759:21;14740:40;;14805:1;14794:10;:12;14791:65;;;14820:24;14833:10;14820:12;:24::i;:::-;14791:65;14545:318;;14514:349::o;7935:167::-;8013:4;8030:42;8040:12;:10;:12::i;:::-;8054:9;8065:6;8030:9;:42::i;:::-;8090:4;8083:11;;7935:167;;;;:::o;5256:36::-;;;;;;;;;;;;;:::o;5954:57::-;;;;:::o;6268:39::-;;;;;;;;;;;;:::o;12853:139::-;3786:12;:10;:12::i;:::-;3776:22;;:6;;;;;;;;;;:22;;;3768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12917:11:::1;;;;;;;;;;;12916:12;12908:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12980:4;12966:11;;:18;;;;;;;;;;;;;;;;;;12853:139::o:0;8108:143::-;8189:7;8216:11;:18;8228:5;8216:18;;;;;;;;;;;;;;;:27;8235:7;8216:27;;;;;;;;;;;;;;;;8209:34;;8108:143;;;;:::o;12998:859::-;3786:12;:10;:12::i;:::-;3776:22;;:6;;;;;;;;;;:22;;;3768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13076:4:::1;13054:19;;:26;;;;;;;;;;;;;;;;;;13131:1;13095:38;;13103:15;;;;;;;;;;;13095:38;;::::0;13091:151:::1;;13187:42;13150:15;;:80;;;;;;;;;;;;;;;;;;13091:151;13281:1;13256:27;;:13;;;;;;;;;;;:27;;::::0;13252:170:::1;;13334:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13316:55;;;13380:4;13387:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13316:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13300:13;;:110;;;;;;;;;;;;;;;;;;13252:170;13432:19;13454:24;13472:4;13454:9;:24::i;:::-;13432:46;;13489:62;13506:4;13521:15;;;;;;;;;;;13539:11;13489:8;:62::i;:::-;13562:15;;;;;;;;;;;:31;;;13601:21;13646:4;13666:11;13692:7;;13716:1;13734:7;:5;:7::i;:::-;13756:15;13562:220;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13807:4;13793:11;;:18;;;;;;;;;;;;;;;;;;13844:5;13822:19;;:27;;;;;;;;;;;;;;;;;;13043:814;12998:859::o:0;14313:195::-;3786:12;:10;:12::i;:::-;3776:22;;:6;;;;;;;;;;:22;;;3768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14371:18:::1;14390:21;14371:40;;14440:1;14429:10;:12;14426:75;;;14461:24;14474:10;14461:12;:24::i;:::-;14426:75;14356:152;14313:195::o:0;14124:148::-;14192:18;;;;;;;;;;;14178:32;;:10;:32;;;14170:41;;;;;;14222:10;;;;;;;;;;;:19;;:42;14242:21;14222:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14124:148::o;9084:2471::-;9188:1;9172:18;;:4;:18;;;9164:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9265:1;9251:16;;:2;:16;;;9243:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9335:1;9326:6;:10;9318:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9393:17;9427:19;;;;;;;;;;;9423:95;;9470:11;;;;;;;;;;;9462:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;9423:95;9540:7;:5;:7::i;:::-;9532:15;;:4;:15;;;;:32;;;;;9557:7;:5;:7::i;:::-;9551:13;;:2;:13;;;;9532:32;9528:1670;;;9593:76;9665:3;9593:67;9615:15;;9605:9;;:25;9604:55;;9645:14;;9604:55;;;9632:12;;9604:55;9593:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;9581:88;;9690:20;;;;;;;;;;9686:508;;;9751:15;;;;;;;;;;;9737:30;;:2;:30;;;;:62;;;;;9785:13;;;;;;;;;;;9771:28;;:2;:28;;;;9737:62;9733:444;;;9935:12;9862:28;:39;9891:9;9862:39;;;;;;;;;;;;;;;;:85;9826:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;10143:12;10101:28;:39;10130:9;10101:39;;;;;;;;;;;;;;;:54;;;;9733:444;9686:508;10222:13;;;;;;;;;;;10214:21;;:4;:21;;;:55;;;;;10253:15;;;;;;;;;;;10239:30;;:2;:30;;;;10214:55;:83;;;;;10275:18;:22;10294:2;10275:22;;;;;;;;;;;;;;;;;;;;;;;;;10273:24;10214:83;10210:313;;;10337:12;;10327:6;:22;;10319:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10432:14;;10422:6;10406:13;10416:2;10406:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;10398:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10496:9;;:11;;;;;;;;;:::i;:::-;;;;;;10210:313;10548:13;;;;;;;;;;;10542:19;;:2;:19;;;:43;;;;;10580:4;10565:20;;:4;:20;;;;10542:43;10539:174;;;10618:79;10693:3;10618:70;10640:16;;10630:9;;:26;10629:58;;10672:15;;10629:58;;;10658:13;;10629:58;10618:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;10606:91;;10539:174;10729:28;10760:24;10778:4;10760:9;:24::i;:::-;10729:55;;10804:6;;;;;;;;;;;10803:7;:32;;;;;10822:13;;;;;;;;;;;10814:21;;:2;:21;;;10803:32;:47;;;;;10839:11;;;;;;;;;;;10803:47;:89;;;;;10875:17;;10854:20;:38;10803:89;:121;;;;;10906:18;;10896:9;;:28;10803:121;10799:388;;;10945:67;10962:49;10966:6;10973:37;10977:20;10998:11;;10973:3;:37::i;:::-;10962:3;:49::i;:::-;10945:16;:67::i;:::-;11031:16;11050:21;11031:40;;11104:1;11093:8;:12;11090:82;;;11130:22;11143:8;11130:12;:22::i;:::-;11090:82;10926:261;10799:388;9566:1632;9528:1670;11223:1;11213:9;:11;11210:162;;;11263:39;11292:9;11263;:24;11281:4;11263:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11238:9;:24;11256:4;11238:24;;;;;;;;;;;;;;;:64;;;;11343:4;11320:40;;11329:4;11320:40;;;11350:9;11320:40;;;;;;:::i;:::-;;;;;;;;11210:162;11398:27;11418:6;11398:9;:15;11408:4;11398:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11382:9;:15;11392:4;11382:15;;;;;;;;;;;;;;;:43;;;;11450:40;11468:21;11479:9;11468:6;:10;;:21;;;;:::i;:::-;11450:9;:13;11460:2;11450:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11436:9;:13;11446:2;11436:13;;;;;;;;;;;;;;;:54;;;;11521:2;11506:41;;11515:4;11506:41;;;11525:21;11536:9;11525:6;:10;;:21;;;;:::i;:::-;11506:41;;;;;;:::i;:::-;;;;;;;;9153:2402;9084:2471;;;:::o;1346:98::-;1399:7;1426:10;1419:17;;1346:98;:::o;8743:335::-;8853:1;8836:19;;:5;:19;;;8828:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8934:1;8915:21;;:7;:21;;;8907:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9016:6;8986:11;:18;8998:5;8986:18;;;;;;;;;;;;;;;:27;9005:7;8986:27;;;;;;;;;;;;;;;:36;;;;9054:7;9038:32;;9047:5;9038:32;;;9063:6;9038:32;;;;;;:::i;:::-;;;;;;;;8743:335;;;:::o;2541:190::-;2627:7;2660:1;2655;:6;;2663:12;2647:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2687:9;2703:1;2699;:5;;;;:::i;:::-;2687:17;;2722:1;2715:8;;;2541:190;;;;;:::o;12154:202::-;3786:12;:10;:12::i;:::-;3776:22;;:6;;;;;;;;;;:22;;;3768:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12224:7:::1;;12209:12;:22;;;;12259:7;;12242:14;:24;;;;12300:5;12277:20;::::0;:28:::1;;;;;;;;;;;;;;;;;;12321:27;12340:7;;12321:27;;;;;;:::i;:::-;;;;;;;;12154:202::o:0;11665:483::-;6458:4;6449:6;;:13;;;;;;;;;;;;;;;;;;11743:21:::1;11781:1;11767:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11743:40;;11812:4;11794;11799:1;11794:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11838:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11828:4;11833:1;11828:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11871:62;11888:4;11903:15;;;;;;;;;;;11921:11;11871:8;:62::i;:::-;11944:15;;;;;;;;;;;:66;;;12025:11;12051:1;12067:4;12094;12114:15;11944:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11732:416;6494:5:::0;6485:6;;:14;;;;;;;;;;;;;;;;;;11665:483;:::o;12445:402::-;12519:1;12510:6;:10;12502:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12601:6;12576:21;:31;;12568:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;12654:20;12684:1;12677:6;:8;;;;:::i;:::-;12654:31;;12698:13;;;;;;;;;;;:22;;:40;12725:12;12721:1;:16;;;;:::i;:::-;12698:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12749:11;;;;;;;;;;;:20;;:38;12774:12;12770:1;:16;;;;:::i;:::-;12749:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12798:18;;;;;;;;;;;:27;;:41;12826:12;12798:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12491:356;12445:402;:::o;2739:246::-;2797:7;2826:1;2821;:6;2817:47;;2851:1;2844:8;;;;2817:47;2874:9;2890:1;2886;:5;;;;:::i;:::-;2874:17;;2919:1;2914;2910;:5;;;;:::i;:::-;:10;2902:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2976:1;2969:8;;;2739:246;;;;;:::o;2993:132::-;3051:7;3078:39;3082:1;3085;3078:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3071:46;;2993:132;;;;:::o;11561:98::-;11618:7;11645:1;11643;:3;11642:9;;11650:1;11642:9;;;11648:1;11642:9;11635:16;;11561:98;;;;:::o;2210:179::-;2268:7;2288:9;2304:1;2300;:5;;;;:::i;:::-;2288:17;;2329:1;2324;:6;;2316:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2380:1;2373:8;;;2210:179;;;;:::o;2397:136::-;2455:7;2482:43;2486:1;2489;2482:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2475:50;;2397:136;;;;:::o;3133:189::-;3219:7;3251:1;3247;:5;3254:12;3239:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3278:9;3294:1;3290;:5;;;;:::i;:::-;3278:17;;3313:1;3306:8;;;3133:189;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:77::-;878:7;907:5;896:16;;841:77;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:474::-;1265:6;1273;1322:2;1310:9;1301:7;1297:23;1293:32;1290:119;;;1328:79;;:::i;:::-;1290:119;1448:1;1473:53;1518:7;1509:6;1498:9;1494:22;1473:53;:::i;:::-;1463:63;;1419:117;1575:2;1601:53;1646:7;1637:6;1626:9;1622:22;1601:53;:::i;:::-;1591:63;;1546:118;1197:474;;;;;:::o;1677:99::-;1729:6;1763:5;1757:12;1747:22;;1677:99;;;:::o;1782:169::-;1866:11;1900:6;1895:3;1888:19;1940:4;1935:3;1931:14;1916:29;;1782:169;;;;:::o;1957:246::-;2038:1;2048:113;2062:6;2059:1;2056:13;2048:113;;;2147:1;2142:3;2138:11;2132:18;2128:1;2123:3;2119:11;2112:39;2084:2;2081:1;2077:10;2072:15;;2048:113;;;2195:1;2186:6;2181:3;2177:16;2170:27;2019:184;1957:246;;;:::o;2209:102::-;2250:6;2301:2;2297:7;2292:2;2285:5;2281:14;2277:28;2267:38;;2209:102;;;:::o;2317:377::-;2405:3;2433:39;2466:5;2433:39;:::i;:::-;2488:71;2552:6;2547:3;2488:71;:::i;:::-;2481:78;;2568:65;2626:6;2621:3;2614:4;2607:5;2603:16;2568:65;:::i;:::-;2658:29;2680:6;2658:29;:::i;:::-;2653:3;2649:39;2642:46;;2409:285;2317:377;;;;:::o;2700:313::-;2813:4;2851:2;2840:9;2836:18;2828:26;;2900:9;2894:4;2890:20;2886:1;2875:9;2871:17;2864:47;2928:78;3001:4;2992:6;2928:78;:::i;:::-;2920:86;;2700:313;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:104::-;3843:7;3872:24;3890:5;3872:24;:::i;:::-;3861:35;;3798:104;;;:::o;3908:142::-;4011:32;4037:5;4011:32;:::i;:::-;4006:3;3999:45;3908:142;;:::o;4056:254::-;4165:4;4203:2;4192:9;4188:18;4180:26;;4216:87;4300:1;4289:9;4285:17;4276:6;4216:87;:::i;:::-;4056:254;;;;:::o;4316:619::-;4393:6;4401;4409;4458:2;4446:9;4437:7;4433:23;4429:32;4426:119;;;4464:79;;:::i;:::-;4426:119;4584:1;4609:53;4654:7;4645:6;4634:9;4630:22;4609:53;:::i;:::-;4599:63;;4555:117;4711:2;4737:53;4782:7;4773:6;4762:9;4758:22;4737:53;:::i;:::-;4727:63;;4682:118;4839:2;4865:53;4910:7;4901:6;4890:9;4886:22;4865:53;:::i;:::-;4855:63;;4810:118;4316:619;;;;;:::o;4941:86::-;4976:7;5016:4;5009:5;5005:16;4994:27;;4941:86;;;:::o;5033:112::-;5116:22;5132:5;5116:22;:::i;:::-;5111:3;5104:35;5033:112;;:::o;5151:214::-;5240:4;5278:2;5267:9;5263:18;5255:26;;5291:67;5355:1;5344:9;5340:17;5331:6;5291:67;:::i;:::-;5151:214;;;;:::o;5371:329::-;5430:6;5479:2;5467:9;5458:7;5454:23;5450:32;5447:119;;;5485:79;;:::i;:::-;5447:119;5605:1;5630:53;5675:7;5666:6;5655:9;5651:22;5630:53;:::i;:::-;5620:63;;5576:117;5371:329;;;;:::o;5706:118::-;5793:24;5811:5;5793:24;:::i;:::-;5788:3;5781:37;5706:118;;:::o;5830:222::-;5923:4;5961:2;5950:9;5946:18;5938:26;;5974:71;6042:1;6031:9;6027:17;6018:6;5974:71;:::i;:::-;5830:222;;;;:::o;6058:474::-;6126:6;6134;6183:2;6171:9;6162:7;6158:23;6154:32;6151:119;;;6189:79;;:::i;:::-;6151:119;6309:1;6334:53;6379:7;6370:6;6359:9;6355:22;6334:53;:::i;:::-;6324:63;;6280:117;6436:2;6462:53;6507:7;6498:6;6487:9;6483:22;6462:53;:::i;:::-;6452:63;;6407:118;6058:474;;;;;:::o;6538:180::-;6586:77;6583:1;6576:88;6683:4;6680:1;6673:15;6707:4;6704:1;6697:15;6724:194;6764:4;6784:20;6802:1;6784:20;:::i;:::-;6779:25;;6818:20;6836:1;6818:20;:::i;:::-;6813:25;;6862:1;6859;6855:9;6847:17;;6886:1;6880:4;6877:11;6874:37;;;6891:18;;:::i;:::-;6874:37;6724:194;;;;:::o;6924:179::-;7064:31;7060:1;7052:6;7048:14;7041:55;6924:179;:::o;7109:366::-;7251:3;7272:67;7336:2;7331:3;7272:67;:::i;:::-;7265:74;;7348:93;7437:3;7348:93;:::i;:::-;7466:2;7461:3;7457:12;7450:19;;7109:366;;;:::o;7481:419::-;7647:4;7685:2;7674:9;7670:18;7662:26;;7734:9;7728:4;7724:20;7720:1;7709:9;7705:17;7698:47;7762:131;7888:4;7762:131;:::i;:::-;7754:139;;7481:419;;;:::o;7906:182::-;8046:34;8042:1;8034:6;8030:14;8023:58;7906:182;:::o;8094:366::-;8236:3;8257:67;8321:2;8316:3;8257:67;:::i;:::-;8250:74;;8333:93;8422:3;8333:93;:::i;:::-;8451:2;8446:3;8442:12;8435:19;;8094:366;;;:::o;8466:419::-;8632:4;8670:2;8659:9;8655:18;8647:26;;8719:9;8713:4;8709:20;8705:1;8694:9;8690:17;8683:47;8747:131;8873:4;8747:131;:::i;:::-;8739:139;;8466:419;;;:::o;8891:173::-;9031:25;9027:1;9019:6;9015:14;9008:49;8891:173;:::o;9070:366::-;9212:3;9233:67;9297:2;9292:3;9233:67;:::i;:::-;9226:74;;9309:93;9398:3;9309:93;:::i;:::-;9427:2;9422:3;9418:12;9411:19;;9070:366;;;:::o;9442:419::-;9608:4;9646:2;9635:9;9631:18;9623:26;;9695:9;9689:4;9685:20;9681:1;9670:9;9666:17;9659:47;9723:131;9849:4;9723:131;:::i;:::-;9715:139;;9442:419;;;:::o;9867:143::-;9924:5;9955:6;9949:13;9940:22;;9971:33;9998:5;9971:33;:::i;:::-;9867:143;;;;:::o;10016:351::-;10086:6;10135:2;10123:9;10114:7;10110:23;10106:32;10103:119;;;10141:79;;:::i;:::-;10103:119;10261:1;10286:64;10342:7;10333:6;10322:9;10318:22;10286:64;:::i;:::-;10276:74;;10232:128;10016:351;;;;:::o;10373:332::-;10494:4;10532:2;10521:9;10517:18;10509:26;;10545:71;10613:1;10602:9;10598:17;10589:6;10545:71;:::i;:::-;10626:72;10694:2;10683:9;10679:18;10670:6;10626:72;:::i;:::-;10373:332;;;;;:::o;10711:85::-;10756:7;10785:5;10774:16;;10711:85;;;:::o;10802:60::-;10830:3;10851:5;10844:12;;10802:60;;;:::o;10868:158::-;10926:9;10959:61;10977:42;10986:32;11012:5;10986:32;:::i;:::-;10977:42;:::i;:::-;10959:61;:::i;:::-;10946:74;;10868:158;;;:::o;11032:147::-;11127:45;11166:5;11127:45;:::i;:::-;11122:3;11115:58;11032:147;;:::o;11185:791::-;11426:4;11464:3;11453:9;11449:19;11441:27;;11478:71;11546:1;11535:9;11531:17;11522:6;11478:71;:::i;:::-;11559:72;11627:2;11616:9;11612:18;11603:6;11559:72;:::i;:::-;11641;11709:2;11698:9;11694:18;11685:6;11641:72;:::i;:::-;11723:80;11799:2;11788:9;11784:18;11775:6;11723:80;:::i;:::-;11813:73;11881:3;11870:9;11866:19;11857:6;11813:73;:::i;:::-;11896;11964:3;11953:9;11949:19;11940:6;11896:73;:::i;:::-;11185:791;;;;;;;;;:::o;11982:143::-;12039:5;12070:6;12064:13;12055:22;;12086:33;12113:5;12086:33;:::i;:::-;11982:143;;;;:::o;12131:663::-;12219:6;12227;12235;12284:2;12272:9;12263:7;12259:23;12255:32;12252:119;;;12290:79;;:::i;:::-;12252:119;12410:1;12435:64;12491:7;12482:6;12471:9;12467:22;12435:64;:::i;:::-;12425:74;;12381:128;12548:2;12574:64;12630:7;12621:6;12610:9;12606:22;12574:64;:::i;:::-;12564:74;;12519:129;12687:2;12713:64;12769:7;12760:6;12749:9;12745:22;12713:64;:::i;:::-;12703:74;;12658:129;12131:663;;;;;:::o;12800:224::-;12940:34;12936:1;12928:6;12924:14;12917:58;13009:7;13004:2;12996:6;12992:15;12985:32;12800:224;:::o;13030:366::-;13172:3;13193:67;13257:2;13252:3;13193:67;:::i;:::-;13186:74;;13269:93;13358:3;13269:93;:::i;:::-;13387:2;13382:3;13378:12;13371:19;;13030:366;;;:::o;13402:419::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:131;13809:4;13683:131;:::i;:::-;13675:139;;13402:419;;;:::o;13827:222::-;13967:34;13963:1;13955:6;13951:14;13944:58;14036:5;14031:2;14023:6;14019:15;14012:30;13827:222;:::o;14055:366::-;14197:3;14218:67;14282:2;14277:3;14218:67;:::i;:::-;14211:74;;14294:93;14383:3;14294:93;:::i;:::-;14412:2;14407:3;14403:12;14396:19;;14055:366;;;:::o;14427:419::-;14593:4;14631:2;14620:9;14616:18;14608:26;;14680:9;14674:4;14670:20;14666:1;14655:9;14651:17;14644:47;14708:131;14834:4;14708:131;:::i;:::-;14700:139;;14427:419;;;:::o;14852:228::-;14992:34;14988:1;14980:6;14976:14;14969:58;15061:11;15056:2;15048:6;15044:15;15037:36;14852:228;:::o;15086:366::-;15228:3;15249:67;15313:2;15308:3;15249:67;:::i;:::-;15242:74;;15325:93;15414:3;15325:93;:::i;:::-;15443:2;15438:3;15434:12;15427:19;;15086:366;;;:::o;15458:419::-;15624:4;15662:2;15651:9;15647:18;15639:26;;15711:9;15705:4;15701:20;15697:1;15686:9;15682:17;15675:47;15739:131;15865:4;15739:131;:::i;:::-;15731:139;;15458:419;;;:::o;15883:170::-;16023:22;16019:1;16011:6;16007:14;16000:46;15883:170;:::o;16059:366::-;16201:3;16222:67;16286:2;16281:3;16222:67;:::i;:::-;16215:74;;16298:93;16387:3;16298:93;:::i;:::-;16416:2;16411:3;16407:12;16400:19;;16059:366;;;:::o;16431:419::-;16597:4;16635:2;16624:9;16620:18;16612:26;;16684:9;16678:4;16674:20;16670:1;16659:9;16655:17;16648:47;16712:131;16838:4;16712:131;:::i;:::-;16704:139;;16431:419;;;:::o;16856:297::-;16996:34;16992:1;16984:6;16980:14;16973:58;17065:34;17060:2;17052:6;17048:15;17041:59;17134:11;17129:2;17121:6;17117:15;17110:36;16856:297;:::o;17159:366::-;17301:3;17322:67;17386:2;17381:3;17322:67;:::i;:::-;17315:74;;17398:93;17487:3;17398:93;:::i;:::-;17516:2;17511:3;17507:12;17500:19;;17159:366;;;:::o;17531:419::-;17697:4;17735:2;17724:9;17720:18;17712:26;;17784:9;17778:4;17774:20;17770:1;17759:9;17755:17;17748:47;17812:131;17938:4;17812:131;:::i;:::-;17804:139;;17531:419;;;:::o;17956:175::-;18096:27;18092:1;18084:6;18080:14;18073:51;17956:175;:::o;18137:366::-;18279:3;18300:67;18364:2;18359:3;18300:67;:::i;:::-;18293:74;;18376:93;18465:3;18376:93;:::i;:::-;18494:2;18489:3;18485:12;18478:19;;18137:366;;;:::o;18509:419::-;18675:4;18713:2;18702:9;18698:18;18690:26;;18762:9;18756:4;18752:20;18748:1;18737:9;18733:17;18726:47;18790:131;18916:4;18790:131;:::i;:::-;18782:139;;18509:419;;;:::o;18934:191::-;18974:3;18993:20;19011:1;18993:20;:::i;:::-;18988:25;;19027:20;19045:1;19027:20;:::i;:::-;19022:25;;19070:1;19067;19063:9;19056:16;;19091:3;19088:1;19085:10;19082:36;;;19098:18;;:::i;:::-;19082:36;18934:191;;;;:::o;19131:176::-;19271:28;19267:1;19259:6;19255:14;19248:52;19131:176;:::o;19313:366::-;19455:3;19476:67;19540:2;19535:3;19476:67;:::i;:::-;19469:74;;19552:93;19641:3;19552:93;:::i;:::-;19670:2;19665:3;19661:12;19654:19;;19313:366;;;:::o;19685:419::-;19851:4;19889:2;19878:9;19874:18;19866:26;;19938:9;19932:4;19928:20;19924:1;19913:9;19909:17;19902:47;19966:131;20092:4;19966:131;:::i;:::-;19958:139;;19685:419;;;:::o;20110:233::-;20149:3;20172:24;20190:5;20172:24;:::i;:::-;20163:33;;20218:66;20211:5;20208:77;20205:103;;20288:18;;:::i;:::-;20205:103;20335:1;20328:5;20324:13;20317:20;;20110:233;;;:::o;20349:223::-;20489:34;20485:1;20477:6;20473:14;20466:58;20558:6;20553:2;20545:6;20541:15;20534:31;20349:223;:::o;20578:366::-;20720:3;20741:67;20805:2;20800:3;20741:67;:::i;:::-;20734:74;;20817:93;20906:3;20817:93;:::i;:::-;20935:2;20930:3;20926:12;20919:19;;20578:366;;;:::o;20950:419::-;21116:4;21154:2;21143:9;21139:18;21131:26;;21203:9;21197:4;21193:20;21189:1;21178:9;21174:17;21167:47;21231:131;21357:4;21231:131;:::i;:::-;21223:139;;20950:419;;;:::o;21375:221::-;21515:34;21511:1;21503:6;21499:14;21492:58;21584:4;21579:2;21571:6;21567:15;21560:29;21375:221;:::o;21602:366::-;21744:3;21765:67;21829:2;21824:3;21765:67;:::i;:::-;21758:74;;21841:93;21930:3;21841:93;:::i;:::-;21959:2;21954:3;21950:12;21943:19;;21602:366;;;:::o;21974:419::-;22140:4;22178:2;22167:9;22163:18;22155:26;;22227:9;22221:4;22217:20;22213:1;22202:9;22198:17;22191:47;22255:131;22381:4;22255:131;:::i;:::-;22247:139;;21974:419;;;:::o;22399:180::-;22447:77;22444:1;22437:88;22544:4;22541:1;22534:15;22568:4;22565:1;22558:15;22585:180;22633:77;22630:1;22623:88;22730:4;22727:1;22720:15;22754:4;22751:1;22744:15;22771:114;22838:6;22872:5;22866:12;22856:22;;22771:114;;;:::o;22891:184::-;22990:11;23024:6;23019:3;23012:19;23064:4;23059:3;23055:14;23040:29;;22891:184;;;;:::o;23081:132::-;23148:4;23171:3;23163:11;;23201:4;23196:3;23192:14;23184:22;;23081:132;;;:::o;23219:108::-;23296:24;23314:5;23296:24;:::i;:::-;23291:3;23284:37;23219:108;;:::o;23333:179::-;23402:10;23423:46;23465:3;23457:6;23423:46;:::i;:::-;23501:4;23496:3;23492:14;23478:28;;23333:179;;;;:::o;23518:113::-;23588:4;23620;23615:3;23611:14;23603:22;;23518:113;;;:::o;23667:732::-;23786:3;23815:54;23863:5;23815:54;:::i;:::-;23885:86;23964:6;23959:3;23885:86;:::i;:::-;23878:93;;23995:56;24045:5;23995:56;:::i;:::-;24074:7;24105:1;24090:284;24115:6;24112:1;24109:13;24090:284;;;24191:6;24185:13;24218:63;24277:3;24262:13;24218:63;:::i;:::-;24211:70;;24304:60;24357:6;24304:60;:::i;:::-;24294:70;;24150:224;24137:1;24134;24130:9;24125:14;;24090:284;;;24094:14;24390:3;24383:10;;23791:608;;;23667:732;;;;:::o;24405:831::-;24668:4;24706:3;24695:9;24691:19;24683:27;;24720:71;24788:1;24777:9;24773:17;24764:6;24720:71;:::i;:::-;24801:80;24877:2;24866:9;24862:18;24853:6;24801:80;:::i;:::-;24928:9;24922:4;24918:20;24913:2;24902:9;24898:18;24891:48;24956:108;25059:4;25050:6;24956:108;:::i;:::-;24948:116;;25074:72;25142:2;25131:9;25127:18;25118:6;25074:72;:::i;:::-;25156:73;25224:3;25213:9;25209:19;25200:6;25156:73;:::i;:::-;24405:831;;;;;;;;:::o;25242:182::-;25382:34;25378:1;25370:6;25366:14;25359:58;25242:182;:::o;25430:366::-;25572:3;25593:67;25657:2;25652:3;25593:67;:::i;:::-;25586:74;;25669:93;25758:3;25669:93;:::i;:::-;25787:2;25782:3;25778:12;25771:19;;25430:366;;;:::o;25802:419::-;25968:4;26006:2;25995:9;25991:18;25983:26;;26055:9;26049:4;26045:20;26041:1;26030:9;26026:17;26019:47;26083:131;26209:4;26083:131;:::i;:::-;26075:139;;25802:419;;;:::o;26227:179::-;26367:31;26363:1;26355:6;26351:14;26344:55;26227:179;:::o;26412:366::-;26554:3;26575:67;26639:2;26634:3;26575:67;:::i;:::-;26568:74;;26651:93;26740:3;26651:93;:::i;:::-;26769:2;26764:3;26760:12;26753:19;;26412:366;;;:::o;26784:419::-;26950:4;26988:2;26977:9;26973:18;26965:26;;27037:9;27031:4;27027:20;27023:1;27012:9;27008:17;27001:47;27065:131;27191:4;27065:131;:::i;:::-;27057:139;;26784:419;;;:::o;27209:180::-;27257:77;27254:1;27247:88;27354:4;27351:1;27344:15;27378:4;27375:1;27368:15;27395:185;27435:1;27452:20;27470:1;27452:20;:::i;:::-;27447:25;;27486:20;27504:1;27486:20;:::i;:::-;27481:25;;27525:1;27515:35;;27530:18;;:::i;:::-;27515:35;27572:1;27569;27565:9;27560:14;;27395:185;;;;:::o;27586:410::-;27626:7;27649:20;27667:1;27649:20;:::i;:::-;27644:25;;27683:20;27701:1;27683:20;:::i;:::-;27678:25;;27738:1;27735;27731:9;27760:30;27778:11;27760:30;:::i;:::-;27749:41;;27939:1;27930:7;27926:15;27923:1;27920:22;27900:1;27893:9;27873:83;27850:139;;27969:18;;:::i;:::-;27850:139;27634:362;27586:410;;;;:::o;28002:220::-;28142:34;28138:1;28130:6;28126:14;28119:58;28211:3;28206:2;28198:6;28194:15;28187:28;28002:220;:::o;28228:366::-;28370:3;28391:67;28455:2;28450:3;28391:67;:::i;:::-;28384:74;;28467:93;28556:3;28467:93;:::i;:::-;28585:2;28580:3;28576:12;28569:19;;28228:366;;;:::o;28600:419::-;28766:4;28804:2;28793:9;28789:18;28781:26;;28853:9;28847:4;28843:20;28839:1;28828:9;28824:17;28817:47;28881:131;29007:4;28881:131;:::i;:::-;28873:139;;28600:419;;;:::o;29025:177::-;29165:29;29161:1;29153:6;29149:14;29142:53;29025:177;:::o;29208:366::-;29350:3;29371:67;29435:2;29430:3;29371:67;:::i;:::-;29364:74;;29447:93;29536:3;29447:93;:::i;:::-;29565:2;29560:3;29556:12;29549:19;;29208:366;;;:::o;29580:419::-;29746:4;29784:2;29773:9;29769:18;29761:26;;29833:9;29827:4;29823:20;29819:1;29808:9;29804:17;29797:47;29861:131;29987:4;29861:131;:::i;:::-;29853:139;;29580:419;;;:::o

Swarm Source

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