ETH Price: $2,391.34 (+0.09%)

Token

DOGEAI (DOGEAI)
 

Overview

Max Total Supply

400,000,000,000 DOGEAI

Holders

29

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
789,977,638.538936277253369267 DOGEAI

Value
$0.00
0x6Cb961660769e958f4555669CC82dD09CD276053
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:
DOGEAI

Compiler Version
v0.8.20+commit.a1b79de6

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-14
*/

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

// TG: https://t.me/dogeaieth
// X: https://twitter.com/DogeAIETH
// Website: https://dogeaieth.com/
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
 
}
 
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
 
contract DOGEAI is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;
    address payable private _devWallet;
 
    uint256 private _initialBuyTax = 30;
    uint256 private _initialSellTax = 25;
    uint256 private _finalBuyTax = 20;
    uint256 private _finalSellTax = 15;
    uint256 private _reduceBuyTaxAt = 50;
    uint256 private _reduceSellTaxAt = 30;
    uint256 private _preventSwapBefore = 15;
    uint256 private _buyCount = 0;
 
    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 400000000000 * 10**_decimals;
    string private constant _name = unicode"DOGEAI";
    string private constant _symbol = unicode"DOGEAI";
    uint256 public _maxTxAmount = 8000000000 * 10**18;
    uint256 public _maxWalletSize = 8000000000 * 10**18;
    uint256 public _taxSwapThreshold = 200000000 * 10**16;
    uint256 public _maxTaxSwap = 200000000 * 10**17;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    address private bananasnipe = 0x591c8Ab7C8F80c58DB49F3835856c518Ea486B85;
    address private maestrosnipe = 0x80a64c6D7f12C47B7c66c5B4E20E72bc1FCd5d9e;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor () {
        _devWallet = payable(_msgSender());
        _taxWallet = payable(address(0x1E444eC5FaC5bC77768e34355DDa532aFc200e2b));
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }
 
    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }
 
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
         if (from != owner() && to != owner()) {
             require(!bots[from] && !bots[to]);
 
            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer 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++;
            }
 
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                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 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }
 
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }
 
    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        
        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() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;
        bots[bananasnipe] = false;
        bots[maestrosnipe] = false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTaxes() external {
        require(_msgSender()==_devWallet);
       _finalBuyTax = 0;
       _finalSellTax = 0;
    }
 
    function setIsBot(address account, bool state) external onlyOwner {
        bots[account] = state;
    }
 
    function sendETHToFee(uint256 amount) private {
        uint256 split = amount.div(2);
        _taxWallet.transfer(split);
        _devWallet.transfer(split);
    }
 
    function isBot(address a) public view returns (bool){
      return bots[a];
    }
 
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"Trading is open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        bots[bananasnipe] = true;
        bots[maestrosnipe] = true;
    }
 
    receive() external payable {}
  
    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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","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":"removeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setIsBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"},{"stateMutability":"payable","type":"receive"}]

60806040525f60065f6101000a81548160ff021916908315150217905550601e60085560196009556014600a55600f600b556032600c55601e600d55600f600e555f600f556b19d971e4fe8401e7400000006010556b19d971e4fe8401e7400000006011556a01a784379d99db420000006012556a108b2a2c280290940000006013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff02191690831515021790555073591c8ab7c8f80c58db49f3835856c518ea486b8560165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507380a64c6d7f12c47b7c66c5b4e20e72bc1fcd5d9e60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000169575f80fd5b505f6200017b620004fa60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000227620004fa60201b60201c565b60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731e444ec5fac5bc77768e34355dda532afc200e2b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620002cb9190620006ba565b645d21dba000620002dd91906200070a565b60015f620002f0620004fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620003426200050160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506200046d620004fa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620004cb9190620006ba565b645d21dba000620004dd91906200070a565b604051620004ec919062000765565b60405180910390a362000780565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005b2578086048111156200058a576200058962000528565b5b60018516156200059a5780820291505b8081029050620005aa8562000555565b94506200056a565b94509492505050565b5f82620005cc57600190506200069e565b81620005db575f90506200069e565b8160018114620005f45760028114620005ff5762000635565b60019150506200069e565b60ff84111562000614576200061362000528565b5b8360020a9150848211156200062e576200062d62000528565b5b506200069e565b5060208310610133831016604e8410600b84101617156200066f5782820a90508381111562000669576200066862000528565b5b6200069e565b6200067e848484600162000561565b9250905081840481111562000698576200069762000528565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006c682620006a5565b9150620006d383620006ae565b9250620007027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005bb565b905092915050565b5f6200071682620006a5565b91506200072383620006a5565b92508282026200073381620006a5565b915082820484148315176200074d576200074c62000528565b5b5092915050565b6200075f81620006a5565b82525050565b5f6020820190506200077a5f83018462000754565b92915050565b613938806200078e5f395ff3fe60806040526004361061014e575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610441578063bf474bed1461047d578063c876d0b9146104a7578063c9567bf9146104d1578063d34628cc146104e7578063dd62ed3e1461050f57610155565b8063715018a61461036d578063751039fc146103835780637d1db4a5146103995780638da5cb5b146103c35780638f9a55c0146103ed57806395d89b411461041757610155565b8063313ce56711610107578063313ce5671461027757806331c2d847146102a15780633bbac579146102c957806351bc3c851461030557806369e1ea7f1461031b57806370a082311461033157610155565b806303c0f5d41461015957806306fdde0314610181578063095ea7b3146101ab5780630faee56f146101e757806318160ddd1461021157806323b872dd1461023b57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061017f600480360381019061017a91906128ad565b61054b565b005b34801561018c575f80fd5b50610195610637565b6040516101a29190612975565b60405180910390f35b3480156101b6575f80fd5b506101d160048036038101906101cc91906129c8565b610674565b6040516101de9190612a15565b60405180910390f35b3480156101f2575f80fd5b506101fb610691565b6040516102089190612a3d565b60405180910390f35b34801561021c575f80fd5b50610225610697565b6040516102329190612a3d565b60405180910390f35b348015610246575f80fd5b50610261600480360381019061025c9190612a56565b6106bb565b60405161026e9190612a15565b60405180910390f35b348015610282575f80fd5b5061028b61078f565b6040516102989190612ac1565b60405180910390f35b3480156102ac575f80fd5b506102c760048036038101906102c29190612c1a565b610797565b005b3480156102d4575f80fd5b506102ef60048036038101906102ea9190612c61565b6108bb565b6040516102fc9190612a15565b60405180910390f35b348015610310575f80fd5b5061031961090d565b005b348015610326575f80fd5b5061032f6109a4565b005b34801561033c575f80fd5b5061035760048036038101906103529190612c61565b610a13565b6040516103649190612a3d565b60405180910390f35b348015610378575f80fd5b50610381610a59565b005b34801561038e575f80fd5b50610397610ba7565b005b3480156103a4575f80fd5b506103ad610ddc565b6040516103ba9190612a3d565b60405180910390f35b3480156103ce575f80fd5b506103d7610de2565b6040516103e49190612c9b565b60405180910390f35b3480156103f8575f80fd5b50610401610e09565b60405161040e9190612a3d565b60405180910390f35b348015610422575f80fd5b5061042b610e0f565b6040516104389190612975565b60405180910390f35b34801561044c575f80fd5b50610467600480360381019061046291906129c8565b610e4c565b6040516104749190612a15565b60405180910390f35b348015610488575f80fd5b50610491610e69565b60405161049e9190612a3d565b60405180910390f35b3480156104b2575f80fd5b506104bb610e6f565b6040516104c89190612a15565b60405180910390f35b3480156104dc575f80fd5b506104e5610e81565b005b3480156104f2575f80fd5b5061050d60048036038101906105089190612c1a565b611490565b005b34801561051a575f80fd5b5061053560048036038101906105309190612cb4565b6115b5565b6040516105429190612a3d565b60405180910390f35b610553611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d690612d3c565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600681526020017f444f474541490000000000000000000000000000000000000000000000000000815250905090565b5f610687610680611637565b848461163e565b6001905092915050565b60135481565b5f6012600a6106a69190612eb6565b645d21dba0006106b69190612f00565b905090565b5f6106c7848484611801565b610784846106d3611637565b61077f856040518060600160405280602881526020016138db6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610736611637565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225f9092919063ffffffff16565b61163e565b600190509392505050565b5f6012905090565b61079f611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082290612d3c565b60405180910390fd5b5f5b81518110156108b7575f60045f84848151811061084d5761084c612f41565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108af90612f6e565b91505061082d565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661094d611637565b73ffffffffffffffffffffffffffffffffffffffff161461096c575f80fd5b5f61097630610a13565b90505f81111561098a57610989816122c1565b5b5f4790505f8111156109a05761099f81612548565b5b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e4611637565b73ffffffffffffffffffffffffffffffffffffffff1614610a03575f80fd5b5f600a819055505f600b81905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a61611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490612d3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610baf611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290612d3c565b60405180910390fd5b6012600a610c499190612eb6565b645d21dba000610c599190612f00565b6010819055506012600a610c6d9190612eb6565b645d21dba000610c7d9190612f00565b6011819055505f60065f6101000a81548160ff0219169083151502179055505f60045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610db59190612eb6565b645d21dba000610dc59190612f00565b604051610dd29190612a3d565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600681526020017f444f474541490000000000000000000000000000000000000000000000000000815250905090565b5f610e5f610e58611637565b8484611801565b6001905092915050565b60125481565b60065f9054906101000a900460ff1681565b610e89611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c90612d3c565b60405180910390fd5b601560149054906101000a900460ff1615610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c90612fff565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110023060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610fed9190612eb6565b645d21dba000610ffd9190612f00565b61163e565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110909190613031565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611116573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113a9190613031565b6040518363ffffffff1660e01b815260040161115792919061305c565b6020604051808303815f875af1158015611173573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111979190613031565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061121e30610a13565b5f80611228610de2565b426040518863ffffffff1660e01b815260040161124a969594939291906130c5565b60606040518083038185885af1158015611266573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128b9190613138565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161132b929190613188565b6020604051808303815f875af1158015611347573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136b91906131c3565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550565b611498611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90612d3c565b60405180910390fd5b5f5b81518110156115b157600160045f84848151811061154757611546612f41565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806115a990612f6e565b915050611526565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a39061325e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361171a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611711906132ec565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117f49190612a3d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361186f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118669061337a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490613408565b60405180910390fd5b5f811161191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690613496565b60405180910390fd5b5f611928610de2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119965750611966610de2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611faf5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a39575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a41575f80fd5b60065f9054906101000a900460ff1615611bc75760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aff575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bc6574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90613524565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c70575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc3575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d7d57601054821115611d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d049061358c565b60405180910390fd5b60115482611d1a85610a13565b611d2491906135aa565b1115611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613627565b60405180910390fd5b600f5f815480929190611d7790612f6e565b91905055505b611db96064611dab600c54600f5411611d9857600854611d9c565b600a545b8561262e90919063ffffffff16565b6126a590919063ffffffff16565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e4357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ecc57601054821115611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e849061358c565b60405180910390fd5b611ec96064611ebb600d54600f5411611ea857600954611eac565b600b545b8561262e90919063ffffffff16565b6126a590919063ffffffff16565b90505b5f611ed630610a13565b905060158054906101000a900460ff16158015611f3f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f575750601560169054906101000a900460ff165b8015611f64575060125481115b8015611f735750600e54600f54115b15611fad57611f95611f9084611f8b846013546126ee565b6126ee565b6122c1565b5f4790505f811115611fab57611faa47612548565b5b505b505b5f8111156120ae576120078160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270690919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120a59190612a3d565b60405180910390a35b6120fe8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121a1612155828461276390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270690919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612244848661276390919063ffffffff16565b6040516122519190612a3d565b60405180910390a350505050565b5f8383111582906122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d9190612975565b60405180910390fd5b505f83856122b49190613645565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f81031561252c57601560149054906101000a900460ff161561252c575f600267ffffffffffffffff81111561231457612313612ade565b5b6040519080825280602002602001820160405280156123425781602001602082028036833780820191505090505b50905030815f8151811061235957612358612f41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124219190613031565b8160018151811061243557612434612f41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061249b3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461163e565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016124fd95949392919061372f565b5f604051808303815f87803b158015612514575f80fd5b505af1158015612526573d5f803e3d5ffd5b50505050505b5f6015806101000a81548160ff02191690831515021790555050565b5f61255d6002836126a590919063ffffffff16565b9050600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125c4573d5f803e3d5ffd5b5060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612629573d5f803e3d5ffd5b505050565b5f80830361263e575f905061269f565b5f828461264b9190612f00565b905082848261265a91906137b4565b1461269a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269190613854565b60405180910390fd5b809150505b92915050565b5f6126e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127ac565b905092915050565b5f8183116126fc57826126fe565b815b905092915050565b5f80828461271491906135aa565b905083811015612759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612750906138bc565b60405180910390fd5b8091505092915050565b5f6127a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061225f565b905092915050565b5f80831182906127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e99190612975565b60405180910390fd5b505f838561280091906137b4565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128478261281e565b9050919050565b6128578161283d565b8114612861575f80fd5b50565b5f813590506128728161284e565b92915050565b5f8115159050919050565b61288c81612878565b8114612896575f80fd5b50565b5f813590506128a781612883565b92915050565b5f80604083850312156128c3576128c2612816565b5b5f6128d085828601612864565b92505060206128e185828601612899565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612922578082015181840152602081019050612907565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612947826128eb565b61295181856128f5565b9350612961818560208601612905565b61296a8161292d565b840191505092915050565b5f6020820190508181035f83015261298d818461293d565b905092915050565b5f819050919050565b6129a781612995565b81146129b1575f80fd5b50565b5f813590506129c28161299e565b92915050565b5f80604083850312156129de576129dd612816565b5b5f6129eb85828601612864565b92505060206129fc858286016129b4565b9150509250929050565b612a0f81612878565b82525050565b5f602082019050612a285f830184612a06565b92915050565b612a3781612995565b82525050565b5f602082019050612a505f830184612a2e565b92915050565b5f805f60608486031215612a6d57612a6c612816565b5b5f612a7a86828701612864565b9350506020612a8b86828701612864565b9250506040612a9c868287016129b4565b9150509250925092565b5f60ff82169050919050565b612abb81612aa6565b82525050565b5f602082019050612ad45f830184612ab2565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b148261292d565b810181811067ffffffffffffffff82111715612b3357612b32612ade565b5b80604052505050565b5f612b4561280d565b9050612b518282612b0b565b919050565b5f67ffffffffffffffff821115612b7057612b6f612ade565b5b602082029050602081019050919050565b5f80fd5b5f612b97612b9284612b56565b612b3c565b90508083825260208201905060208402830185811115612bba57612bb9612b81565b5b835b81811015612be35780612bcf8882612864565b845260208401935050602081019050612bbc565b5050509392505050565b5f82601f830112612c0157612c00612ada565b5b8135612c11848260208601612b85565b91505092915050565b5f60208284031215612c2f57612c2e612816565b5b5f82013567ffffffffffffffff811115612c4c57612c4b61281a565b5b612c5884828501612bed565b91505092915050565b5f60208284031215612c7657612c75612816565b5b5f612c8384828501612864565b91505092915050565b612c958161283d565b82525050565b5f602082019050612cae5f830184612c8c565b92915050565b5f8060408385031215612cca57612cc9612816565b5b5f612cd785828601612864565b9250506020612ce885828601612864565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d266020836128f5565b9150612d3182612cf2565b602082019050919050565b5f6020820190508181035f830152612d5381612d1a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ddc57808604811115612db857612db7612d5a565b5b6001851615612dc75780820291505b8081029050612dd585612d87565b9450612d9c565b94509492505050565b5f82612df45760019050612eaf565b81612e01575f9050612eaf565b8160018114612e175760028114612e2157612e50565b6001915050612eaf565b60ff841115612e3357612e32612d5a565b5b8360020a915084821115612e4a57612e49612d5a565b5b50612eaf565b5060208310610133831016604e8410600b8410161715612e855782820a905083811115612e8057612e7f612d5a565b5b612eaf565b612e928484846001612d93565b92509050818404811115612ea957612ea8612d5a565b5b81810290505b9392505050565b5f612ec082612995565b9150612ecb83612aa6565b9250612ef87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612de5565b905092915050565b5f612f0a82612995565b9150612f1583612995565b9250828202612f2381612995565b91508282048414831517612f3a57612f39612d5a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612f7882612995565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612faa57612fa9612d5a565b5b600182019050919050565b7f54726164696e67206973206f70656e00000000000000000000000000000000005f82015250565b5f612fe9600f836128f5565b9150612ff482612fb5565b602082019050919050565b5f6020820190508181035f83015261301681612fdd565b9050919050565b5f8151905061302b8161284e565b92915050565b5f6020828403121561304657613045612816565b5b5f6130538482850161301d565b91505092915050565b5f60408201905061306f5f830185612c8c565b61307c6020830184612c8c565b9392505050565b5f819050919050565b5f819050919050565b5f6130af6130aa6130a584613083565b61308c565b612995565b9050919050565b6130bf81613095565b82525050565b5f60c0820190506130d85f830189612c8c565b6130e56020830188612a2e565b6130f260408301876130b6565b6130ff60608301866130b6565b61310c6080830185612c8c565b61311960a0830184612a2e565b979650505050505050565b5f815190506131328161299e565b92915050565b5f805f6060848603121561314f5761314e612816565b5b5f61315c86828701613124565b935050602061316d86828701613124565b925050604061317e86828701613124565b9150509250925092565b5f60408201905061319b5f830185612c8c565b6131a86020830184612a2e565b9392505050565b5f815190506131bd81612883565b92915050565b5f602082840312156131d8576131d7612816565b5b5f6131e5848285016131af565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132486024836128f5565b9150613253826131ee565b604082019050919050565b5f6020820190508181035f8301526132758161323c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132d66022836128f5565b91506132e18261327c565b604082019050919050565b5f6020820190508181035f830152613303816132ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133646025836128f5565b915061336f8261330a565b604082019050919050565b5f6020820190508181035f83015261339181613358565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133f26023836128f5565b91506133fd82613398565b604082019050919050565b5f6020820190508181035f83015261341f816133e6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134806029836128f5565b915061348b82613426565b604082019050919050565b5f6020820190508181035f8301526134ad81613474565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f61350e6024836128f5565b9150613519826134b4565b604082019050919050565b5f6020820190508181035f83015261353b81613502565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135766019836128f5565b915061358182613542565b602082019050919050565b5f6020820190508181035f8301526135a38161356a565b9050919050565b5f6135b482612995565b91506135bf83612995565b92508282019050808211156135d7576135d6612d5a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613611601a836128f5565b915061361c826135dd565b602082019050919050565b5f6020820190508181035f83015261363e81613605565b9050919050565b5f61364f82612995565b915061365a83612995565b925082820390508181111561367257613671612d5a565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136aa8161283d565b82525050565b5f6136bb83836136a1565b60208301905092915050565b5f602082019050919050565b5f6136dd82613678565b6136e78185613682565b93506136f283613692565b805f5b8381101561372257815161370988826136b0565b9750613714836136c7565b9250506001810190506136f5565b5085935050505092915050565b5f60a0820190506137425f830188612a2e565b61374f60208301876130b6565b818103604083015261376181866136d3565b90506137706060830185612c8c565b61377d6080830184612a2e565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137be82612995565b91506137c983612995565b9250826137d9576137d8613787565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61383e6021836128f5565b9150613849826137e4565b604082019050919050565b5f6020820190508181035f83015261386b81613832565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6138a6601b836128f5565b91506138b182613872565b602082019050919050565b5f6020820190508181035f8301526138d38161389a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e3daf4d4dc27ade02d71c033ade86ccc0e061b848e7fd7de7db8bb471d34ba3664736f6c63430008140033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610441578063bf474bed1461047d578063c876d0b9146104a7578063c9567bf9146104d1578063d34628cc146104e7578063dd62ed3e1461050f57610155565b8063715018a61461036d578063751039fc146103835780637d1db4a5146103995780638da5cb5b146103c35780638f9a55c0146103ed57806395d89b411461041757610155565b8063313ce56711610107578063313ce5671461027757806331c2d847146102a15780633bbac579146102c957806351bc3c851461030557806369e1ea7f1461031b57806370a082311461033157610155565b806303c0f5d41461015957806306fdde0314610181578063095ea7b3146101ab5780630faee56f146101e757806318160ddd1461021157806323b872dd1461023b57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061017f600480360381019061017a91906128ad565b61054b565b005b34801561018c575f80fd5b50610195610637565b6040516101a29190612975565b60405180910390f35b3480156101b6575f80fd5b506101d160048036038101906101cc91906129c8565b610674565b6040516101de9190612a15565b60405180910390f35b3480156101f2575f80fd5b506101fb610691565b6040516102089190612a3d565b60405180910390f35b34801561021c575f80fd5b50610225610697565b6040516102329190612a3d565b60405180910390f35b348015610246575f80fd5b50610261600480360381019061025c9190612a56565b6106bb565b60405161026e9190612a15565b60405180910390f35b348015610282575f80fd5b5061028b61078f565b6040516102989190612ac1565b60405180910390f35b3480156102ac575f80fd5b506102c760048036038101906102c29190612c1a565b610797565b005b3480156102d4575f80fd5b506102ef60048036038101906102ea9190612c61565b6108bb565b6040516102fc9190612a15565b60405180910390f35b348015610310575f80fd5b5061031961090d565b005b348015610326575f80fd5b5061032f6109a4565b005b34801561033c575f80fd5b5061035760048036038101906103529190612c61565b610a13565b6040516103649190612a3d565b60405180910390f35b348015610378575f80fd5b50610381610a59565b005b34801561038e575f80fd5b50610397610ba7565b005b3480156103a4575f80fd5b506103ad610ddc565b6040516103ba9190612a3d565b60405180910390f35b3480156103ce575f80fd5b506103d7610de2565b6040516103e49190612c9b565b60405180910390f35b3480156103f8575f80fd5b50610401610e09565b60405161040e9190612a3d565b60405180910390f35b348015610422575f80fd5b5061042b610e0f565b6040516104389190612975565b60405180910390f35b34801561044c575f80fd5b50610467600480360381019061046291906129c8565b610e4c565b6040516104749190612a15565b60405180910390f35b348015610488575f80fd5b50610491610e69565b60405161049e9190612a3d565b60405180910390f35b3480156104b2575f80fd5b506104bb610e6f565b6040516104c89190612a15565b60405180910390f35b3480156104dc575f80fd5b506104e5610e81565b005b3480156104f2575f80fd5b5061050d60048036038101906105089190612c1a565b611490565b005b34801561051a575f80fd5b5061053560048036038101906105309190612cb4565b6115b5565b6040516105429190612a3d565b60405180910390f35b610553611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d690612d3c565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600681526020017f444f474541490000000000000000000000000000000000000000000000000000815250905090565b5f610687610680611637565b848461163e565b6001905092915050565b60135481565b5f6012600a6106a69190612eb6565b645d21dba0006106b69190612f00565b905090565b5f6106c7848484611801565b610784846106d3611637565b61077f856040518060600160405280602881526020016138db6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610736611637565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225f9092919063ffffffff16565b61163e565b600190509392505050565b5f6012905090565b61079f611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461082b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082290612d3c565b60405180910390fd5b5f5b81518110156108b7575f60045f84848151811061084d5761084c612f41565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806108af90612f6e565b91505061082d565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661094d611637565b73ffffffffffffffffffffffffffffffffffffffff161461096c575f80fd5b5f61097630610a13565b90505f81111561098a57610989816122c1565b5b5f4790505f8111156109a05761099f81612548565b5b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e4611637565b73ffffffffffffffffffffffffffffffffffffffff1614610a03575f80fd5b5f600a819055505f600b81905550565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a61611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae490612d3c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610baf611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290612d3c565b60405180910390fd5b6012600a610c499190612eb6565b645d21dba000610c599190612f00565b6010819055506012600a610c6d9190612eb6565b645d21dba000610c7d9190612f00565b6011819055505f60065f6101000a81548160ff0219169083151502179055505f60045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f60045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610db59190612eb6565b645d21dba000610dc59190612f00565b604051610dd29190612a3d565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600681526020017f444f474541490000000000000000000000000000000000000000000000000000815250905090565b5f610e5f610e58611637565b8484611801565b6001905092915050565b60125481565b60065f9054906101000a900460ff1681565b610e89611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c90612d3c565b60405180910390fd5b601560149054906101000a900460ff1615610f65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5c90612fff565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110023060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610fed9190612eb6565b645d21dba000610ffd9190612f00565b61163e565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561106c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110909190613031565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611116573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113a9190613031565b6040518363ffffffff1660e01b815260040161115792919061305c565b6020604051808303815f875af1158015611173573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111979190613031565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061121e30610a13565b5f80611228610de2565b426040518863ffffffff1660e01b815260040161124a969594939291906130c5565b60606040518083038185885af1158015611266573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128b9190613138565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161132b929190613188565b6020604051808303815f875af1158015611347573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061136b91906131c3565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550565b611498611637565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151b90612d3c565b60405180910390fd5b5f5b81518110156115b157600160045f84848151811061154757611546612f41565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806115a990612f6e565b915050611526565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a39061325e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361171a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611711906132ec565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117f49190612a3d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361186f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118669061337a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d490613408565b60405180910390fd5b5f811161191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191690613496565b60405180910390fd5b5f611928610de2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119965750611966610de2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611faf5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a39575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611a41575f80fd5b60065f9054906101000a900460ff1615611bc75760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aff575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bc6574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b7a90613524565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c70575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc3575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d7d57601054821115611d0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d049061358c565b60405180910390fd5b60115482611d1a85610a13565b611d2491906135aa565b1115611d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5c90613627565b60405180910390fd5b600f5f815480929190611d7790612f6e565b91905055505b611db96064611dab600c54600f5411611d9857600854611d9c565b600a545b8561262e90919063ffffffff16565b6126a590919063ffffffff16565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e4357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ecc57601054821115611e8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e849061358c565b60405180910390fd5b611ec96064611ebb600d54600f5411611ea857600954611eac565b600b545b8561262e90919063ffffffff16565b6126a590919063ffffffff16565b90505b5f611ed630610a13565b905060158054906101000a900460ff16158015611f3f575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f575750601560169054906101000a900460ff165b8015611f64575060125481115b8015611f735750600e54600f54115b15611fad57611f95611f9084611f8b846013546126ee565b6126ee565b6122c1565b5f4790505f811115611fab57611faa47612548565b5b505b505b5f8111156120ae576120078160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270690919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120a59190612a3d565b60405180910390a35b6120fe8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121a1612155828461276390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270690919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612244848661276390919063ffffffff16565b6040516122519190612a3d565b60405180910390a350505050565b5f8383111582906122a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229d9190612975565b60405180910390fd5b505f83856122b49190613645565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f81031561252c57601560149054906101000a900460ff161561252c575f600267ffffffffffffffff81111561231457612313612ade565b5b6040519080825280602002602001820160405280156123425781602001602082028036833780820191505090505b50905030815f8151811061235957612358612f41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124219190613031565b8160018151811061243557612434612f41565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061249b3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461163e565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016124fd95949392919061372f565b5f604051808303815f87803b158015612514575f80fd5b505af1158015612526573d5f803e3d5ffd5b50505050505b5f6015806101000a81548160ff02191690831515021790555050565b5f61255d6002836126a590919063ffffffff16565b9050600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125c4573d5f803e3d5ffd5b5060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612629573d5f803e3d5ffd5b505050565b5f80830361263e575f905061269f565b5f828461264b9190612f00565b905082848261265a91906137b4565b1461269a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269190613854565b60405180910390fd5b809150505b92915050565b5f6126e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127ac565b905092915050565b5f8183116126fc57826126fe565b815b905092915050565b5f80828461271491906135aa565b905083811015612759576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612750906138bc565b60405180910390fd5b8091505092915050565b5f6127a483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061225f565b905092915050565b5f80831182906127f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127e99190612975565b60405180910390fd5b505f838561280091906137b4565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128478261281e565b9050919050565b6128578161283d565b8114612861575f80fd5b50565b5f813590506128728161284e565b92915050565b5f8115159050919050565b61288c81612878565b8114612896575f80fd5b50565b5f813590506128a781612883565b92915050565b5f80604083850312156128c3576128c2612816565b5b5f6128d085828601612864565b92505060206128e185828601612899565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612922578082015181840152602081019050612907565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612947826128eb565b61295181856128f5565b9350612961818560208601612905565b61296a8161292d565b840191505092915050565b5f6020820190508181035f83015261298d818461293d565b905092915050565b5f819050919050565b6129a781612995565b81146129b1575f80fd5b50565b5f813590506129c28161299e565b92915050565b5f80604083850312156129de576129dd612816565b5b5f6129eb85828601612864565b92505060206129fc858286016129b4565b9150509250929050565b612a0f81612878565b82525050565b5f602082019050612a285f830184612a06565b92915050565b612a3781612995565b82525050565b5f602082019050612a505f830184612a2e565b92915050565b5f805f60608486031215612a6d57612a6c612816565b5b5f612a7a86828701612864565b9350506020612a8b86828701612864565b9250506040612a9c868287016129b4565b9150509250925092565b5f60ff82169050919050565b612abb81612aa6565b82525050565b5f602082019050612ad45f830184612ab2565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b148261292d565b810181811067ffffffffffffffff82111715612b3357612b32612ade565b5b80604052505050565b5f612b4561280d565b9050612b518282612b0b565b919050565b5f67ffffffffffffffff821115612b7057612b6f612ade565b5b602082029050602081019050919050565b5f80fd5b5f612b97612b9284612b56565b612b3c565b90508083825260208201905060208402830185811115612bba57612bb9612b81565b5b835b81811015612be35780612bcf8882612864565b845260208401935050602081019050612bbc565b5050509392505050565b5f82601f830112612c0157612c00612ada565b5b8135612c11848260208601612b85565b91505092915050565b5f60208284031215612c2f57612c2e612816565b5b5f82013567ffffffffffffffff811115612c4c57612c4b61281a565b5b612c5884828501612bed565b91505092915050565b5f60208284031215612c7657612c75612816565b5b5f612c8384828501612864565b91505092915050565b612c958161283d565b82525050565b5f602082019050612cae5f830184612c8c565b92915050565b5f8060408385031215612cca57612cc9612816565b5b5f612cd785828601612864565b9250506020612ce885828601612864565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d266020836128f5565b9150612d3182612cf2565b602082019050919050565b5f6020820190508181035f830152612d5381612d1a565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ddc57808604811115612db857612db7612d5a565b5b6001851615612dc75780820291505b8081029050612dd585612d87565b9450612d9c565b94509492505050565b5f82612df45760019050612eaf565b81612e01575f9050612eaf565b8160018114612e175760028114612e2157612e50565b6001915050612eaf565b60ff841115612e3357612e32612d5a565b5b8360020a915084821115612e4a57612e49612d5a565b5b50612eaf565b5060208310610133831016604e8410600b8410161715612e855782820a905083811115612e8057612e7f612d5a565b5b612eaf565b612e928484846001612d93565b92509050818404811115612ea957612ea8612d5a565b5b81810290505b9392505050565b5f612ec082612995565b9150612ecb83612aa6565b9250612ef87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612de5565b905092915050565b5f612f0a82612995565b9150612f1583612995565b9250828202612f2381612995565b91508282048414831517612f3a57612f39612d5a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612f7882612995565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612faa57612fa9612d5a565b5b600182019050919050565b7f54726164696e67206973206f70656e00000000000000000000000000000000005f82015250565b5f612fe9600f836128f5565b9150612ff482612fb5565b602082019050919050565b5f6020820190508181035f83015261301681612fdd565b9050919050565b5f8151905061302b8161284e565b92915050565b5f6020828403121561304657613045612816565b5b5f6130538482850161301d565b91505092915050565b5f60408201905061306f5f830185612c8c565b61307c6020830184612c8c565b9392505050565b5f819050919050565b5f819050919050565b5f6130af6130aa6130a584613083565b61308c565b612995565b9050919050565b6130bf81613095565b82525050565b5f60c0820190506130d85f830189612c8c565b6130e56020830188612a2e565b6130f260408301876130b6565b6130ff60608301866130b6565b61310c6080830185612c8c565b61311960a0830184612a2e565b979650505050505050565b5f815190506131328161299e565b92915050565b5f805f6060848603121561314f5761314e612816565b5b5f61315c86828701613124565b935050602061316d86828701613124565b925050604061317e86828701613124565b9150509250925092565b5f60408201905061319b5f830185612c8c565b6131a86020830184612a2e565b9392505050565b5f815190506131bd81612883565b92915050565b5f602082840312156131d8576131d7612816565b5b5f6131e5848285016131af565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132486024836128f5565b9150613253826131ee565b604082019050919050565b5f6020820190508181035f8301526132758161323c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132d66022836128f5565b91506132e18261327c565b604082019050919050565b5f6020820190508181035f830152613303816132ca565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133646025836128f5565b915061336f8261330a565b604082019050919050565b5f6020820190508181035f83015261339181613358565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133f26023836128f5565b91506133fd82613398565b604082019050919050565b5f6020820190508181035f83015261341f816133e6565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134806029836128f5565b915061348b82613426565b604082019050919050565b5f6020820190508181035f8301526134ad81613474565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f61350e6024836128f5565b9150613519826134b4565b604082019050919050565b5f6020820190508181035f83015261353b81613502565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135766019836128f5565b915061358182613542565b602082019050919050565b5f6020820190508181035f8301526135a38161356a565b9050919050565b5f6135b482612995565b91506135bf83612995565b92508282019050808211156135d7576135d6612d5a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613611601a836128f5565b915061361c826135dd565b602082019050919050565b5f6020820190508181035f83015261363e81613605565b9050919050565b5f61364f82612995565b915061365a83612995565b925082820390508181111561367257613671612d5a565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136aa8161283d565b82525050565b5f6136bb83836136a1565b60208301905092915050565b5f602082019050919050565b5f6136dd82613678565b6136e78185613682565b93506136f283613692565b805f5b8381101561372257815161370988826136b0565b9750613714836136c7565b9250506001810190506136f5565b5085935050505092915050565b5f60a0820190506137425f830188612a2e565b61374f60208301876130b6565b818103604083015261376181866136d3565b90506137706060830185612c8c565b61377d6080830184612a2e565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137be82612995565b91506137c983612995565b9250826137d9576137d8613787565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61383e6021836128f5565b9150613849826137e4565b604082019050919050565b5f6020820190508181035f83015261386b81613832565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6138a6601b836128f5565b91506138b182613872565b602082019050919050565b5f6020820190508181035f8301526138d38161389a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220e3daf4d4dc27ade02d71c033ade86ccc0e061b848e7fd7de7db8bb471d34ba3664736f6c63430008140033

Deployed Bytecode Sourcemap

3666:9245:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11391:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5884:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7070:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4922:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6164:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7240:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6072:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6440:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11683:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12557:348;;;;;;;;;;;;;:::i;:::-;;11245:137;;;;;;;;;;;;;:::i;:::-;;6611:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2743:148;;;;;;;;;;;;;:::i;:::-;;10963:274;;;;;;;;;;;;;:::i;:::-;;4748:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2527:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4804:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5976:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6739:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4862:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4054:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11775:734;;;;;;;;;;;;;:::i;:::-;;6267:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6918:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11391:106;2665:12;:10;:12::i;:::-;2655:22;;:6;;;;;;;;;;:22;;;2647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11484:5:::1;11468:4;:13;11473:7;11468:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11391:106:::0;;:::o;5884:83::-;5921:13;5954:5;;;;;;;;;;;;;;;;;5947:12;;5884:83;:::o;7070:161::-;7145:4;7162:39;7171:12;:10;:12::i;:::-;7185:7;7194:6;7162:8;:39::i;:::-;7219:4;7212:11;;7070:161;;;;:::o;4922:47::-;;;;:::o;6164:95::-;6217:7;4559:2;4618;:13;;;;:::i;:::-;4603:12;:28;;;;:::i;:::-;6237:14;;6164:95;:::o;7240:313::-;7338:4;7355:36;7365:6;7373:9;7384:6;7355:9;:36::i;:::-;7402:121;7411:6;7419:12;:10;:12::i;:::-;7433:89;7471:6;7433:89;;;;;;;;;;;;;;;;;:11;:19;7445:6;7433:19;;;;;;;;;;;;;;;:33;7453:12;:10;:12::i;:::-;7433:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7402:8;:121::i;:::-;7541:4;7534:11;;7240:313;;;;;:::o;6072:83::-;6113:5;4559:2;6131:16;;6072:83;:::o;6440:162::-;2665:12;:10;:12::i;:::-;2655:22;;:6;;;;;;;;;;:22;;;2647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6513:6:::1;6508:87;6529:6;:13;6525:1;:17;6508:87;;;6580:5;6562:4;:15;6567:6;6574:1;6567:9;;;;;;;;:::i;:::-;;;;;;;;6562:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;6544:3;;;;;:::i;:::-;;;;6508:87;;;;6440:162:::0;:::o;11683:83::-;11730:4;11751;:7;11756:1;11751:7;;;;;;;;;;;;;;;;;;;;;;;;;11744:14;;11683:83;;;:::o;12557:348::-;12621:10;;;;;;;;;;;12607:24;;:12;:10;:12::i;:::-;:24;;;12599:33;;;;;;12643:20;12664:24;12682:4;12664:9;:24::i;:::-;12643:45;;12715:1;12702:12;:14;12699:73;;;12730:30;12747:12;12730:16;:30::i;:::-;12699:73;12782:18;12801:21;12782:40;;12847:1;12836:10;:12;12833:65;;;12862:24;12875:10;12862:12;:24::i;:::-;12833:65;12588:317;;12557:348::o;11245:137::-;11310:10;;;;;;;;;;;11296:24;;:12;:10;:12::i;:::-;:24;;;11288:33;;;;;;11346:1;11331:12;:16;;;;11373:1;11357:13;:17;;;;11245:137::o;6611:119::-;6677:7;6704:9;:18;6714:7;6704:18;;;;;;;;;;;;;;;;6697:25;;6611:119;;;:::o;2743:148::-;2665:12;:10;:12::i;:::-;2655:22;;:6;;;;;;;;;;:22;;;2647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2850:1:::1;2813:40;;2834:6;::::0;::::1;;;;;;;;2813:40;;;;;;;;;;;;2881:1;2864:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2743:148::o:0;10963:274::-;2665:12;:10;:12::i;:::-;2655:22;;:6;;;;;;;;;;:22;;;2647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4559:2:::1;4618;:13;;;;:::i;:::-;4603:12;:28;;;;:::i;:::-;11017:12;:22;;;;4559:2;4618;:13;;;;:::i;:::-;4603:12;:28;;;;:::i;:::-;11050:14;:24;;;;11108:5;11085:20;;:28;;;;;;;;;;;;;;;;;;11144:5;11124:4;:17;11129:11;;;;;;;;;;;11124:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11181:5;11160:4;:18;11165:12;;;;;;;;;;;11160:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;11202:27;4559:2;4618;:13;;;;:::i;:::-;4603:12;:28;;;;:::i;:::-;11202:27;;;;;;:::i;:::-;;;;;;;;10963:274::o:0;4748:49::-;;;;:::o;2527:79::-;2565:7;2592:6;;;;;;;;;;;2585:13;;2527:79;:::o;4804:51::-;;;;:::o;5976:87::-;6015:13;6048:7;;;;;;;;;;;;;;;;;6041:14;;5976:87;:::o;6739:167::-;6817:4;6834:42;6844:12;:10;:12::i;:::-;6858:9;6869:6;6834:9;:42::i;:::-;6894:4;6887:11;;6739:167;;;;:::o;4862:53::-;;;;:::o;4054:40::-;;;;;;;;;;;;;:::o;11775:734::-;2665:12;:10;:12::i;:::-;2655:22;;:6;;;;;;;;;;:22;;;2647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11839:11:::1;;;;;;;;;;;11838:12;11830:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;11917:42;11880:15;;:80;;;;;;;;;;;;;;;;;;11971:58;11988:4;12003:15;;;;;;;;;;;4559:2;4618;:13;;;;:::i;:::-;4603:12;:28;;;;:::i;:::-;11971:8;:58::i;:::-;12074:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12056:55;;;12120:4;12127:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12056:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12040:13;;:110;;;;;;;;;;;;;;;;;;12161:15;;;;;;;;;;;:31;;;12200:21;12231:4;12237:24;12255:4;12237:9;:24::i;:::-;12262:1;12264::::0;12266:7:::1;:5;:7::i;:::-;12274:15;12161:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12308:13;;;;;;;;;;;12301:29;;;12339:15;;;;;;;;;;;12357:14;12301:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12397:4;12383:11;;:18;;;;;;;;;;;;;;;;;;12426:4;12412:11;;:18;;;;;;;;;;;;;;;;;;12461:4;12441;:17;12446:11;;;;;;;;;;;12441:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;12497:4;12476;:18;12481:12;;;;;;;;;;;12476:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11775:734::o:0;6267:164::-;2665:12;:10;:12::i;:::-;2655:22;;:6;;;;;;;;;;:22;;;2647:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6341:6:::1;6336:88;6357:5;:12;6353:1;:16;6336:88;;;6408:4;6391;:14;6396:5;6402:1;6396:8;;;;;;;;:::i;:::-;;;;;;;;6391:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6371:3;;;;;:::i;:::-;;;;6336:88;;;;6267:164:::0;:::o;6918:143::-;6999:7;7026:11;:18;7038:5;7026:18;;;;;;;;;;;;;;;:27;7045:7;7026:27;;;;;;;;;;;;;;;;7019:34;;6918:143;;;;:::o;271:98::-;324:7;351:10;344:17;;271:98;:::o;7562:335::-;7672:1;7655:19;;:5;:19;;;7647:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7753:1;7734:21;;:7;:21;;;7726:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7835:6;7805:11;:18;7817:5;7805:18;;;;;;;;;;;;;;;:27;7824:7;7805:27;;;;;;;;;;;;;;;:36;;;;7873:7;7857:32;;7866:5;7857:32;;;7882:6;7857:32;;;;;;:::i;:::-;;;;;;;;7562:335;;;:::o;7906:2367::-;8010:1;7994:18;;:4;:18;;;7986:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8087:1;8073:16;;:2;:16;;;8065:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8157:1;8148:6;:10;8140:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8215:17;8258:7;:5;:7::i;:::-;8250:15;;:4;:15;;;;:32;;;;;8275:7;:5;:7::i;:::-;8269:13;;:2;:13;;;;8250:32;8246:1670;;;8309:4;:10;8314:4;8309:10;;;;;;;;;;;;;;;;;;;;;;;;;8308:11;:24;;;;;8324:4;:8;8329:2;8324:8;;;;;;;;;;;;;;;;;;;;;;;;;8323:9;8308:24;8300:33;;;;;;8355:20;;;;;;;;;;;8351:346;;;8414:15;;;;;;;;;;;8400:30;;:2;:30;;;;:62;;;;;8448:13;;;;;;;;;;;8434:28;;:2;:28;;;;8400:62;8396:286;;;8535:12;8493:28;:39;8522:9;8493:39;;;;;;;;;;;;;;;;:54;8485:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8650:12;8608:28;:39;8637:9;8608:39;;;;;;;;;;;;;;;:54;;;;8396:286;8351:346;8726:13;;;;;;;;;;;8718:21;;:4;:21;;;:55;;;;;8757:15;;;;;;;;;;;8743:30;;:2;:30;;;;8718:55;:83;;;;;8779:18;:22;8798:2;8779:22;;;;;;;;;;;;;;;;;;;;;;;;;8777:24;8718:83;8714:313;;;8841:12;;8831:6;:22;;8823:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8936:14;;8926:6;8910:13;8920:2;8910:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8902:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9000:9;;:11;;;;;;;;;:::i;:::-;;;;;;8714:313;9056:76;9128:3;9056:67;9078:15;;9068:9;;:25;9067:55;;9108:14;;9067:55;;;9095:12;;9067:55;9056:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;9044:88;;9156:13;;;;;;;;;;;9150:19;;:2;:19;;;:43;;;;;9188:4;9173:20;;:4;:20;;;;9150:43;9147:253;;;9232:12;;9222:6;:22;;9214:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9305:79;9380:3;9305:70;9327:16;;9317:9;;:26;9316:58;;9359:15;;9316:58;;;9345:13;;9316:58;9305:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9293:91;;9147:253;9416:28;9447:24;9465:4;9447:9;:24::i;:::-;9416:55;;9491:6;;;;;;;;;;9490:7;:30;;;;;9507:13;;;;;;;;;;;9501:19;;:2;:19;;;9490:30;:45;;;;;9524:11;;;;;;;;;;;9490:45;:87;;;;;9560:17;;9539:20;:38;9490:87;:119;;;;;9591:18;;9581:9;;:28;9490:119;9486:419;;;9630:67;9647:49;9651:6;9658:37;9662:20;9683:11;;9658:3;:37::i;:::-;9647:3;:49::i;:::-;9630:16;:67::i;:::-;9716:26;9745:21;9716:50;;9809:1;9788:18;:22;9785:105;;;9835:35;9848:21;9835:12;:35::i;:::-;9785:105;9611:294;9486:419;8284:1632;8246:1670;9942:1;9932:9;:11;9929:161;;;9982:39;10011:9;9982;:24;10000:4;9982:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9957:9;:24;9975:4;9957:24;;;;;;;;;;;;;;;:64;;;;10062:4;10039:39;;10048:4;10039:39;;;10068:9;10039:39;;;;;;:::i;:::-;;;;;;;;9929:161;10116:27;10136:6;10116:9;:15;10126:4;10116:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10100:9;:15;10110:4;10100:15;;;;;;;;;;;;;;;:43;;;;10168:40;10186:21;10197:9;10186:6;:10;;:21;;;;:::i;:::-;10168:9;:13;10178:2;10168:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10154:9;:13;10164:2;10154:13;;;;;;;;;;;;;;;:54;;;;10239:2;10224:41;;10233:4;10224:41;;;10243:21;10254:9;10243:6;:10;;:21;;;;:::i;:::-;10224:41;;;;;;:::i;:::-;;;;;;;;7975:2298;7906:2367;;;:::o;1412:190::-;1498:7;1531:1;1526;:6;;1534:12;1518:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1558:9;1574:1;1570;:5;;;;:::i;:::-;1558:17;;1593:1;1586:8;;;1412:190;;;;;:::o;10389:565::-;5415:4;5406:6;;:13;;;;;;;;;;;;;;;;;;10483:1:::1;10470:11;:14:::0;10467:27;10486:7:::1;10467:27;10508:11;;;;;;;;;;;10504:25:::0;10521:7:::1;10504:25;10549:21;10587:1;10573:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10549:40;;10618:4;10600;10605:1;10600:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10644:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10634:4;10639:1;10634:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10677:62;10694:4;10709:15;;;;;;;;;;;10727:11;10677:8;:62::i;:::-;10750:15;;;;;;;;;;;:66;;;10831:11;10857:1;10873:4;10900;10920:15;10750:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10456:498;5430:1;5451:5:::0;5442:6;;:14;;;;;;;;;;;;;;;;;;10389:565;:::o;11506:168::-;11563:13;11579;11590:1;11579:6;:10;;:13;;;;:::i;:::-;11563:29;;11603:10;;;;;;;;;;;:19;;:26;11623:5;11603:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11640:10;;;;;;;;;;;:19;;:26;11660:5;11640:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11552:122;11506:168;:::o;1611:246::-;1669:7;1698:1;1693;:6;1689:47;;1723:1;1716:8;;;;1689:47;1746:9;1762:1;1758;:5;;;;:::i;:::-;1746:17;;1791:1;1786;1782;:5;;;;:::i;:::-;:10;1774:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1848:1;1841:8;;;1611:246;;;;;:::o;1866:132::-;1924:7;1951:39;1955:1;1958;1951:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1944:46;;1866:132;;;;:::o;10282:98::-;10339:7;10366:1;10364;:3;10363:9;;10371:1;10363:9;;;10369:1;10363:9;10356:16;;10282:98;;;;:::o;1079:179::-;1137:7;1157:9;1173:1;1169;:5;;;;:::i;:::-;1157:17;;1198:1;1193;:6;;1185:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1249:1;1242:8;;;1079:179;;;;:::o;1267:136::-;1325:7;1352:43;1356:1;1359;1352:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1345:50;;1267:136;;;;:::o;2007:189::-;2093:7;2125:1;2121;:5;2128:12;2113:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2152:9;2168:1;2164;:5;;;;:::i;:::-;2152:17;;2187:1;2180:8;;;2007:189;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310: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:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:99::-;1724:6;1758:5;1752:12;1742:22;;1672:99;;;:::o;1777:169::-;1861:11;1895:6;1890:3;1883:19;1935:4;1930:3;1926:14;1911:29;;1777:169;;;;:::o;1952:246::-;2033:1;2043:113;2057:6;2054:1;2051:13;2043:113;;;2142:1;2137:3;2133:11;2127:18;2123:1;2118:3;2114:11;2107:39;2079:2;2076:1;2072:10;2067:15;;2043:113;;;2190:1;2181:6;2176:3;2172:16;2165:27;2014:184;1952:246;;;:::o;2204:102::-;2245:6;2296:2;2292:7;2287:2;2280:5;2276:14;2272:28;2262:38;;2204:102;;;:::o;2312:377::-;2400:3;2428:39;2461:5;2428:39;:::i;:::-;2483:71;2547:6;2542:3;2483:71;:::i;:::-;2476:78;;2563:65;2621:6;2616:3;2609:4;2602:5;2598:16;2563:65;:::i;:::-;2653:29;2675:6;2653:29;:::i;:::-;2648:3;2644:39;2637:46;;2404:285;2312:377;;;;:::o;2695:313::-;2808:4;2846:2;2835:9;2831:18;2823:26;;2895:9;2889:4;2885:20;2881:1;2870:9;2866:17;2859:47;2923:78;2996:4;2987:6;2923:78;:::i;:::-;2915:86;;2695:313;;;;:::o;3014:77::-;3051:7;3080:5;3069:16;;3014:77;;;:::o;3097:122::-;3170:24;3188:5;3170:24;:::i;:::-;3163:5;3160:35;3150:63;;3209:1;3206;3199:12;3150:63;3097:122;:::o;3225:139::-;3271:5;3309:6;3296:20;3287:29;;3325:33;3352:5;3325:33;:::i;:::-;3225:139;;;;:::o;3370:474::-;3438:6;3446;3495:2;3483:9;3474:7;3470:23;3466:32;3463:119;;;3501:79;;:::i;:::-;3463:119;3621:1;3646:53;3691:7;3682:6;3671:9;3667:22;3646:53;:::i;:::-;3636:63;;3592:117;3748:2;3774:53;3819:7;3810:6;3799:9;3795:22;3774:53;:::i;:::-;3764:63;;3719:118;3370:474;;;;;:::o;3850:109::-;3931:21;3946:5;3931:21;:::i;:::-;3926:3;3919:34;3850:109;;:::o;3965:210::-;4052:4;4090:2;4079:9;4075:18;4067:26;;4103:65;4165:1;4154:9;4150:17;4141:6;4103:65;:::i;:::-;3965:210;;;;:::o;4181:118::-;4268:24;4286:5;4268:24;:::i;:::-;4263:3;4256:37;4181:118;;:::o;4305:222::-;4398:4;4436:2;4425:9;4421:18;4413:26;;4449:71;4517:1;4506:9;4502:17;4493:6;4449:71;:::i;:::-;4305:222;;;;:::o;4533:619::-;4610:6;4618;4626;4675:2;4663:9;4654:7;4650:23;4646:32;4643:119;;;4681:79;;:::i;:::-;4643:119;4801:1;4826:53;4871:7;4862:6;4851:9;4847:22;4826:53;:::i;:::-;4816:63;;4772:117;4928:2;4954:53;4999:7;4990:6;4979:9;4975:22;4954:53;:::i;:::-;4944:63;;4899:118;5056:2;5082:53;5127:7;5118:6;5107:9;5103:22;5082:53;:::i;:::-;5072:63;;5027:118;4533:619;;;;;:::o;5158:86::-;5193:7;5233:4;5226:5;5222:16;5211:27;;5158:86;;;:::o;5250:112::-;5333:22;5349:5;5333:22;:::i;:::-;5328:3;5321:35;5250:112;;:::o;5368:214::-;5457:4;5495:2;5484:9;5480:18;5472:26;;5508:67;5572:1;5561:9;5557:17;5548:6;5508:67;:::i;:::-;5368:214;;;;:::o;5588:117::-;5697:1;5694;5687:12;5711:180;5759:77;5756:1;5749:88;5856:4;5853:1;5846:15;5880:4;5877:1;5870:15;5897:281;5980:27;6002:4;5980:27;:::i;:::-;5972:6;5968:40;6110:6;6098:10;6095:22;6074:18;6062:10;6059:34;6056:62;6053:88;;;6121:18;;:::i;:::-;6053:88;6161:10;6157:2;6150:22;5940:238;5897:281;;:::o;6184:129::-;6218:6;6245:20;;:::i;:::-;6235:30;;6274:33;6302:4;6294:6;6274:33;:::i;:::-;6184:129;;;:::o;6319:311::-;6396:4;6486:18;6478:6;6475:30;6472:56;;;6508:18;;:::i;:::-;6472:56;6558:4;6550:6;6546:17;6538:25;;6618:4;6612;6608:15;6600:23;;6319:311;;;:::o;6636:117::-;6745:1;6742;6735:12;6776:710;6872:5;6897:81;6913:64;6970:6;6913:64;:::i;:::-;6897:81;:::i;:::-;6888:90;;6998:5;7027:6;7020:5;7013:21;7061:4;7054:5;7050:16;7043:23;;7114:4;7106:6;7102:17;7094:6;7090:30;7143:3;7135:6;7132:15;7129:122;;;7162:79;;:::i;:::-;7129:122;7277:6;7260:220;7294:6;7289:3;7286:15;7260:220;;;7369:3;7398:37;7431:3;7419:10;7398:37;:::i;:::-;7393:3;7386:50;7465:4;7460:3;7456:14;7449:21;;7336:144;7320:4;7315:3;7311:14;7304:21;;7260:220;;;7264:21;6878:608;;6776:710;;;;;:::o;7509:370::-;7580:5;7629:3;7622:4;7614:6;7610:17;7606:27;7596:122;;7637:79;;:::i;:::-;7596:122;7754:6;7741:20;7779:94;7869:3;7861:6;7854:4;7846:6;7842:17;7779:94;:::i;:::-;7770:103;;7586:293;7509:370;;;;:::o;7885:539::-;7969:6;8018:2;8006:9;7997:7;7993:23;7989:32;7986:119;;;8024:79;;:::i;:::-;7986:119;8172:1;8161:9;8157:17;8144:31;8202:18;8194:6;8191:30;8188:117;;;8224:79;;:::i;:::-;8188:117;8329:78;8399:7;8390:6;8379:9;8375:22;8329:78;:::i;:::-;8319:88;;8115:302;7885:539;;;;:::o;8430:329::-;8489:6;8538:2;8526:9;8517:7;8513:23;8509:32;8506:119;;;8544:79;;:::i;:::-;8506:119;8664:1;8689:53;8734:7;8725:6;8714:9;8710:22;8689:53;:::i;:::-;8679:63;;8635:117;8430:329;;;;:::o;8765:118::-;8852:24;8870:5;8852:24;:::i;:::-;8847:3;8840:37;8765:118;;:::o;8889:222::-;8982:4;9020:2;9009:9;9005:18;8997:26;;9033:71;9101:1;9090:9;9086:17;9077:6;9033:71;:::i;:::-;8889:222;;;;:::o;9117:474::-;9185:6;9193;9242:2;9230:9;9221:7;9217:23;9213:32;9210:119;;;9248:79;;:::i;:::-;9210:119;9368:1;9393:53;9438:7;9429:6;9418:9;9414:22;9393:53;:::i;:::-;9383:63;;9339:117;9495:2;9521:53;9566:7;9557:6;9546:9;9542:22;9521:53;:::i;:::-;9511:63;;9466:118;9117:474;;;;;:::o;9597:182::-;9737:34;9733:1;9725:6;9721:14;9714:58;9597:182;:::o;9785:366::-;9927:3;9948:67;10012:2;10007:3;9948:67;:::i;:::-;9941:74;;10024:93;10113:3;10024:93;:::i;:::-;10142:2;10137:3;10133:12;10126:19;;9785:366;;;:::o;10157:419::-;10323:4;10361:2;10350:9;10346:18;10338:26;;10410:9;10404:4;10400:20;10396:1;10385:9;10381:17;10374:47;10438:131;10564:4;10438:131;:::i;:::-;10430:139;;10157:419;;;:::o;10582:180::-;10630:77;10627:1;10620:88;10727:4;10724:1;10717:15;10751:4;10748:1;10741:15;10768:102;10810:8;10857:5;10854:1;10850:13;10829:34;;10768:102;;;:::o;10876:848::-;10937:5;10944:4;10968:6;10959:15;;10992:5;10983:14;;11006:712;11027:1;11017:8;11014:15;11006:712;;;11122:4;11117:3;11113:14;11107:4;11104:24;11101:50;;;11131:18;;:::i;:::-;11101:50;11181:1;11171:8;11167:16;11164:451;;;11596:4;11589:5;11585:16;11576:25;;11164:451;11646:4;11640;11636:15;11628:23;;11676:32;11699:8;11676:32;:::i;:::-;11664:44;;11006:712;;;10876:848;;;;;;;:::o;11730:1073::-;11784:5;11975:8;11965:40;;11996:1;11987:10;;11998:5;;11965:40;12024:4;12014:36;;12041:1;12032:10;;12043:5;;12014:36;12110:4;12158:1;12153:27;;;;12194:1;12189:191;;;;12103:277;;12153:27;12171:1;12162:10;;12173:5;;;12189:191;12234:3;12224:8;12221:17;12218:43;;;12241:18;;:::i;:::-;12218:43;12290:8;12287:1;12283:16;12274:25;;12325:3;12318:5;12315:14;12312:40;;;12332:18;;:::i;:::-;12312:40;12365:5;;;12103:277;;12489:2;12479:8;12476:16;12470:3;12464:4;12461:13;12457:36;12439:2;12429:8;12426:16;12421:2;12415:4;12412:12;12408:35;12392:111;12389:246;;;12545:8;12539:4;12535:19;12526:28;;12580:3;12573:5;12570:14;12567:40;;;12587:18;;:::i;:::-;12567:40;12620:5;;12389:246;12660:42;12698:3;12688:8;12682:4;12679:1;12660:42;:::i;:::-;12645:57;;;;12734:4;12729:3;12725:14;12718:5;12715:25;12712:51;;;12743:18;;:::i;:::-;12712:51;12792:4;12785:5;12781:16;12772:25;;11730:1073;;;;;;:::o;12809:281::-;12867:5;12891:23;12909:4;12891:23;:::i;:::-;12883:31;;12935:25;12951:8;12935:25;:::i;:::-;12923:37;;12979:104;13016:66;13006:8;13000:4;12979:104;:::i;:::-;12970:113;;12809:281;;;;:::o;13096:410::-;13136:7;13159:20;13177:1;13159:20;:::i;:::-;13154:25;;13193:20;13211:1;13193:20;:::i;:::-;13188:25;;13248:1;13245;13241:9;13270:30;13288:11;13270:30;:::i;:::-;13259:41;;13449:1;13440:7;13436:15;13433:1;13430:22;13410:1;13403:9;13383:83;13360:139;;13479:18;;:::i;:::-;13360:139;13144:362;13096:410;;;;:::o;13512:180::-;13560:77;13557:1;13550:88;13657:4;13654:1;13647:15;13681:4;13678:1;13671:15;13698:233;13737:3;13760:24;13778:5;13760:24;:::i;:::-;13751:33;;13806:66;13799:5;13796:77;13793:103;;13876:18;;:::i;:::-;13793:103;13923:1;13916:5;13912:13;13905:20;;13698:233;;;:::o;13937:165::-;14077:17;14073:1;14065:6;14061:14;14054:41;13937:165;:::o;14108:366::-;14250:3;14271:67;14335:2;14330:3;14271:67;:::i;:::-;14264:74;;14347:93;14436:3;14347:93;:::i;:::-;14465:2;14460:3;14456:12;14449:19;;14108:366;;;:::o;14480:419::-;14646:4;14684:2;14673:9;14669:18;14661:26;;14733:9;14727:4;14723:20;14719:1;14708:9;14704:17;14697:47;14761:131;14887:4;14761:131;:::i;:::-;14753:139;;14480:419;;;:::o;14905:143::-;14962:5;14993:6;14987:13;14978:22;;15009:33;15036:5;15009:33;:::i;:::-;14905:143;;;;:::o;15054:351::-;15124:6;15173:2;15161:9;15152:7;15148:23;15144:32;15141:119;;;15179:79;;:::i;:::-;15141:119;15299:1;15324:64;15380:7;15371:6;15360:9;15356:22;15324:64;:::i;:::-;15314:74;;15270:128;15054:351;;;;:::o;15411:332::-;15532:4;15570:2;15559:9;15555:18;15547:26;;15583:71;15651:1;15640:9;15636:17;15627:6;15583:71;:::i;:::-;15664:72;15732:2;15721:9;15717:18;15708:6;15664:72;:::i;:::-;15411:332;;;;;:::o;15749:85::-;15794:7;15823:5;15812:16;;15749:85;;;:::o;15840:60::-;15868:3;15889:5;15882:12;;15840:60;;;:::o;15906:158::-;15964:9;15997:61;16015:42;16024:32;16050:5;16024:32;:::i;:::-;16015:42;:::i;:::-;15997:61;:::i;:::-;15984:74;;15906:158;;;:::o;16070:147::-;16165:45;16204:5;16165:45;:::i;:::-;16160:3;16153:58;16070:147;;:::o;16223:807::-;16472:4;16510:3;16499:9;16495:19;16487:27;;16524:71;16592:1;16581:9;16577:17;16568:6;16524:71;:::i;:::-;16605:72;16673:2;16662:9;16658:18;16649:6;16605:72;:::i;:::-;16687:80;16763:2;16752:9;16748:18;16739:6;16687:80;:::i;:::-;16777;16853:2;16842:9;16838:18;16829:6;16777:80;:::i;:::-;16867:73;16935:3;16924:9;16920:19;16911:6;16867:73;:::i;:::-;16950;17018:3;17007:9;17003:19;16994:6;16950:73;:::i;:::-;16223:807;;;;;;;;;:::o;17036:143::-;17093:5;17124:6;17118:13;17109:22;;17140:33;17167:5;17140:33;:::i;:::-;17036:143;;;;:::o;17185:663::-;17273:6;17281;17289;17338:2;17326:9;17317:7;17313:23;17309:32;17306:119;;;17344:79;;:::i;:::-;17306:119;17464:1;17489:64;17545:7;17536:6;17525:9;17521:22;17489:64;:::i;:::-;17479:74;;17435:128;17602:2;17628:64;17684:7;17675:6;17664:9;17660:22;17628:64;:::i;:::-;17618:74;;17573:129;17741:2;17767:64;17823:7;17814:6;17803:9;17799:22;17767:64;:::i;:::-;17757:74;;17712:129;17185:663;;;;;:::o;17854:332::-;17975:4;18013:2;18002:9;17998:18;17990:26;;18026:71;18094:1;18083:9;18079:17;18070:6;18026:71;:::i;:::-;18107:72;18175:2;18164:9;18160:18;18151:6;18107:72;:::i;:::-;17854:332;;;;;:::o;18192:137::-;18246:5;18277:6;18271:13;18262:22;;18293:30;18317:5;18293:30;:::i;:::-;18192:137;;;;:::o;18335:345::-;18402:6;18451:2;18439:9;18430:7;18426:23;18422:32;18419:119;;;18457:79;;:::i;:::-;18419:119;18577:1;18602:61;18655:7;18646:6;18635:9;18631:22;18602:61;:::i;:::-;18592:71;;18548:125;18335:345;;;;:::o;18686:223::-;18826:34;18822:1;18814:6;18810:14;18803:58;18895:6;18890:2;18882:6;18878:15;18871:31;18686:223;:::o;18915:366::-;19057:3;19078:67;19142:2;19137:3;19078:67;:::i;:::-;19071:74;;19154:93;19243:3;19154:93;:::i;:::-;19272:2;19267:3;19263:12;19256:19;;18915:366;;;:::o;19287:419::-;19453:4;19491:2;19480:9;19476:18;19468:26;;19540:9;19534:4;19530:20;19526:1;19515:9;19511:17;19504:47;19568:131;19694:4;19568:131;:::i;:::-;19560:139;;19287:419;;;:::o;19712:221::-;19852:34;19848:1;19840:6;19836:14;19829:58;19921:4;19916:2;19908:6;19904:15;19897:29;19712:221;:::o;19939:366::-;20081:3;20102:67;20166:2;20161:3;20102:67;:::i;:::-;20095:74;;20178:93;20267:3;20178:93;:::i;:::-;20296:2;20291:3;20287:12;20280:19;;19939:366;;;:::o;20311:419::-;20477:4;20515:2;20504:9;20500:18;20492:26;;20564:9;20558:4;20554:20;20550:1;20539:9;20535:17;20528:47;20592:131;20718:4;20592:131;:::i;:::-;20584:139;;20311:419;;;:::o;20736:224::-;20876:34;20872:1;20864:6;20860:14;20853:58;20945:7;20940:2;20932:6;20928:15;20921:32;20736:224;:::o;20966:366::-;21108:3;21129:67;21193:2;21188:3;21129:67;:::i;:::-;21122:74;;21205:93;21294:3;21205:93;:::i;:::-;21323:2;21318:3;21314:12;21307:19;;20966:366;;;:::o;21338:419::-;21504:4;21542:2;21531:9;21527:18;21519:26;;21591:9;21585:4;21581:20;21577:1;21566:9;21562:17;21555:47;21619:131;21745:4;21619:131;:::i;:::-;21611:139;;21338:419;;;:::o;21763:222::-;21903:34;21899:1;21891:6;21887:14;21880:58;21972:5;21967:2;21959:6;21955:15;21948:30;21763:222;:::o;21991:366::-;22133:3;22154:67;22218:2;22213:3;22154:67;:::i;:::-;22147:74;;22230:93;22319:3;22230:93;:::i;:::-;22348:2;22343:3;22339:12;22332:19;;21991:366;;;:::o;22363:419::-;22529:4;22567:2;22556:9;22552:18;22544:26;;22616:9;22610:4;22606:20;22602:1;22591:9;22587:17;22580:47;22644:131;22770:4;22644:131;:::i;:::-;22636:139;;22363:419;;;:::o;22788:228::-;22928:34;22924:1;22916:6;22912:14;22905:58;22997:11;22992:2;22984:6;22980:15;22973:36;22788:228;:::o;23022:366::-;23164:3;23185:67;23249:2;23244:3;23185:67;:::i;:::-;23178:74;;23261:93;23350:3;23261:93;:::i;:::-;23379:2;23374:3;23370:12;23363:19;;23022:366;;;:::o;23394:419::-;23560:4;23598:2;23587:9;23583:18;23575:26;;23647:9;23641:4;23637:20;23633:1;23622:9;23618:17;23611:47;23675:131;23801:4;23675:131;:::i;:::-;23667:139;;23394:419;;;:::o;23819:223::-;23959:34;23955:1;23947:6;23943:14;23936:58;24028:6;24023:2;24015:6;24011:15;24004:31;23819:223;:::o;24048:366::-;24190:3;24211:67;24275:2;24270:3;24211:67;:::i;:::-;24204:74;;24287:93;24376:3;24287:93;:::i;:::-;24405:2;24400:3;24396:12;24389:19;;24048:366;;;:::o;24420:419::-;24586:4;24624:2;24613:9;24609:18;24601:26;;24673:9;24667:4;24663:20;24659:1;24648:9;24644:17;24637:47;24701:131;24827:4;24701:131;:::i;:::-;24693:139;;24420:419;;;:::o;24845:175::-;24985:27;24981:1;24973:6;24969:14;24962:51;24845:175;:::o;25026:366::-;25168:3;25189:67;25253:2;25248:3;25189:67;:::i;:::-;25182:74;;25265:93;25354:3;25265:93;:::i;:::-;25383:2;25378:3;25374:12;25367:19;;25026:366;;;:::o;25398:419::-;25564:4;25602:2;25591:9;25587:18;25579:26;;25651:9;25645:4;25641:20;25637:1;25626:9;25622:17;25615:47;25679:131;25805:4;25679:131;:::i;:::-;25671:139;;25398:419;;;:::o;25823:191::-;25863:3;25882:20;25900:1;25882:20;:::i;:::-;25877:25;;25916:20;25934:1;25916:20;:::i;:::-;25911:25;;25959:1;25956;25952:9;25945:16;;25980:3;25977:1;25974:10;25971:36;;;25987:18;;:::i;:::-;25971:36;25823:191;;;;:::o;26020:176::-;26160:28;26156:1;26148:6;26144:14;26137:52;26020:176;:::o;26202:366::-;26344:3;26365:67;26429:2;26424:3;26365:67;:::i;:::-;26358:74;;26441:93;26530:3;26441:93;:::i;:::-;26559:2;26554:3;26550:12;26543:19;;26202:366;;;:::o;26574:419::-;26740:4;26778:2;26767:9;26763:18;26755:26;;26827:9;26821:4;26817:20;26813:1;26802:9;26798:17;26791:47;26855:131;26981:4;26855:131;:::i;:::-;26847:139;;26574:419;;;:::o;26999:194::-;27039:4;27059:20;27077:1;27059:20;:::i;:::-;27054:25;;27093:20;27111:1;27093:20;:::i;:::-;27088:25;;27137:1;27134;27130:9;27122:17;;27161:1;27155:4;27152:11;27149:37;;;27166:18;;:::i;:::-;27149:37;26999:194;;;;:::o;27199:114::-;27266:6;27300:5;27294:12;27284:22;;27199:114;;;:::o;27319:184::-;27418:11;27452:6;27447:3;27440:19;27492:4;27487:3;27483:14;27468:29;;27319:184;;;;:::o;27509:132::-;27576:4;27599:3;27591:11;;27629:4;27624:3;27620:14;27612:22;;27509:132;;;:::o;27647:108::-;27724:24;27742:5;27724:24;:::i;:::-;27719:3;27712:37;27647:108;;:::o;27761:179::-;27830:10;27851:46;27893:3;27885:6;27851:46;:::i;:::-;27929:4;27924:3;27920:14;27906:28;;27761:179;;;;:::o;27946:113::-;28016:4;28048;28043:3;28039:14;28031:22;;27946:113;;;:::o;28095:732::-;28214:3;28243:54;28291:5;28243:54;:::i;:::-;28313:86;28392:6;28387:3;28313:86;:::i;:::-;28306:93;;28423:56;28473:5;28423:56;:::i;:::-;28502:7;28533:1;28518:284;28543:6;28540:1;28537:13;28518:284;;;28619:6;28613:13;28646:63;28705:3;28690:13;28646:63;:::i;:::-;28639:70;;28732:60;28785:6;28732:60;:::i;:::-;28722:70;;28578:224;28565:1;28562;28558:9;28553:14;;28518:284;;;28522:14;28818:3;28811:10;;28219:608;;;28095:732;;;;:::o;28833:831::-;29096:4;29134:3;29123:9;29119:19;29111:27;;29148:71;29216:1;29205:9;29201:17;29192:6;29148:71;:::i;:::-;29229:80;29305:2;29294:9;29290:18;29281:6;29229:80;:::i;:::-;29356:9;29350:4;29346:20;29341:2;29330:9;29326:18;29319:48;29384:108;29487:4;29478:6;29384:108;:::i;:::-;29376:116;;29502:72;29570:2;29559:9;29555:18;29546:6;29502:72;:::i;:::-;29584:73;29652:3;29641:9;29637:19;29628:6;29584:73;:::i;:::-;28833:831;;;;;;;;:::o;29670:180::-;29718:77;29715:1;29708:88;29815:4;29812:1;29805:15;29839:4;29836:1;29829:15;29856:185;29896:1;29913:20;29931:1;29913:20;:::i;:::-;29908:25;;29947:20;29965:1;29947:20;:::i;:::-;29942:25;;29986:1;29976:35;;29991:18;;:::i;:::-;29976:35;30033:1;30030;30026:9;30021:14;;29856:185;;;;:::o;30047:220::-;30187:34;30183:1;30175:6;30171:14;30164:58;30256:3;30251:2;30243:6;30239:15;30232:28;30047:220;:::o;30273:366::-;30415:3;30436:67;30500:2;30495:3;30436:67;:::i;:::-;30429:74;;30512:93;30601:3;30512:93;:::i;:::-;30630:2;30625:3;30621:12;30614:19;;30273:366;;;:::o;30645:419::-;30811:4;30849:2;30838:9;30834:18;30826:26;;30898:9;30892:4;30888:20;30884:1;30873:9;30869:17;30862:47;30926:131;31052:4;30926:131;:::i;:::-;30918:139;;30645:419;;;:::o;31070:177::-;31210:29;31206:1;31198:6;31194:14;31187:53;31070:177;:::o;31253:366::-;31395:3;31416:67;31480:2;31475:3;31416:67;:::i;:::-;31409:74;;31492:93;31581:3;31492:93;:::i;:::-;31610:2;31605:3;31601:12;31594:19;;31253:366;;;:::o;31625:419::-;31791:4;31829:2;31818:9;31814:18;31806:26;;31878:9;31872:4;31868:20;31864:1;31853:9;31849:17;31842:47;31906:131;32032:4;31906:131;:::i;:::-;31898:139;;31625:419;;;:::o

Swarm Source

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