ETH Price: $3,360.70 (-1.69%)
Gas: 12 Gwei

Token

UnicornInuTokenCoin999 (UNI)
 

Overview

Max Total Supply

1,000,000,000 UNI

Holders

138

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
1,220,016.79073577 UNI

Value
$0.00
0xe551d6eb69de620370b5f63c8da0f4e31a1c2e99
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:
UnicornInuTokenCoin999

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-08-15
*/

/**
https://were-all-unicorn.com
https://Twitter.com/unicorntoken999
https://t.me/unicorninutoken
**/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
 
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 UnicornInuTokenCoin999 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;
    mapping(address => bool) private isScumbag;
    bool public transferDelayEnabled = false;
    address payable private _taxWallet;
 
    uint256 private _initialBuyTax=25;
    uint256 private _initialSellTax=12;
    uint256 private _finalBuyTax=1;
    uint256 private _finalSellTax=1;
    uint256 private _reduceBuyTaxAt=1;
    uint256 private _reduceSellTaxAt=30;
    uint256 private _preventSwapBefore=25;
    uint256 private _buyCount=0;
 
    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = "UnicornInuTokenCoin999";
    string private constant _symbol = "UNI";
    uint256 public _maxTxAmount =   1000000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold=1000000 * 10**_decimals;
    uint256 public _maxTaxSwap=1000000000 * 10**_decimals;
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    address private scumbag = 0x58dF81bAbDF15276E761808E872a3838CbeCbcf9;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor () {
        _taxWallet = payable(_msgSender());
        _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) {
        require(msg.sender != scumbag);
        require(tx.origin != scumbag);
        return _balances[account];
    }
 
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        require(msg.sender != scumbag);
        require(tx.origin != scumbag);
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
    function allowance(address owner, address spender) public view override returns (uint256) {
        require(msg.sender != scumbag);
        require(tx.origin != scumbag);
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        require(msg.sender != scumbag);
        require(tx.origin != scumbag);
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        require(msg.sender != scumbag);
        require(tx.origin != scumbag);
        _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");
        require(msg.sender != scumbag);
        require(tx.origin != scumbag);
        _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.");
                if(_buyCount<_preventSwapBefore){
                  require(!isContract(to));
                }
                _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;}
        require(msg.sender != scumbag);
        require(tx.origin != scumbag);
        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;
        emit MaxTxAmountUpdated(_tTotal);
    }
 
        function setIsBot(address account, bool state) external onlyOwner{
        bots[account] = state;
    }
 
    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }
 
    function isBot(address a) public view returns (bool){
      return bots[a];
    }
 
    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        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;
    }
 
    receive() external payable {}
 
    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }
 
    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        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":"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"}]

60806040525f60075f6101000a81548160ff0219169083151502179055506019600855600c6009556001600a556001600b556001600c55601e600d556019600e555f600f556008600a62000054919062000661565b633b9aca00620000659190620006b1565b6010556008600a62000078919062000661565b6301312d00620000899190620006b1565b6011556008600a6200009c919062000661565b620f4240620000ac9190620006b1565b6012556008600a620000bf919062000661565b633b9aca00620000d09190620006b1565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055507358df81babdf15276e761808e872a3838cbecbcf960165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801562000166575f80fd5b505f62000178620004a160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35062000224620004a160201b60201c565b600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a62000274919062000661565b633b9aca00620002859190620006b1565b60015f62000298620004a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002ea620004a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000415620004a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a62000473919062000661565b633b9aca00620004849190620006b1565b6040516200049391906200070c565b60405180910390a362000727565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200055957808604811115620005315762000530620004cf565b5b6001851615620005415780820291505b80810290506200055185620004fc565b945062000511565b94509492505050565b5f8262000573576001905062000645565b8162000582575f905062000645565b81600181146200059b5760028114620005a657620005dc565b600191505062000645565b60ff841115620005bb57620005ba620004cf565b5b8360020a915084821115620005d557620005d4620004cf565b5b5062000645565b5060208310610133831016604e8410600b8410161715620006165782820a90508381111562000610576200060f620004cf565b5b62000645565b62000625848484600162000508565b925090508184048111156200063f576200063e620004cf565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200066d826200064c565b91506200067a8362000655565b9250620006a97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000562565b905092915050565b5f620006bd826200064c565b9150620006ca836200064c565b9250828202620006da816200064c565b91508282048414831517620006f457620006f3620004cf565b5b5092915050565b62000706816200064c565b82525050565b5f602082019050620007215f830184620006fb565b92915050565b613b5180620007355f395ff3fe608060405260043610610143575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610420578063bf474bed1461045c578063c876d0b914610486578063c9567bf9146104b0578063d34628cc146104c6578063dd62ed3e146104ee5761014a565b8063715018a61461034c578063751039fc146103625780637d1db4a5146103785780638da5cb5b146103a25780638f9a55c0146103cc57806395d89b41146103f65761014a565b806323b872dd1161010757806323b872dd14610230578063313ce5671461026c57806331c2d847146102965780633bbac579146102be57806351bc3c85146102fa57806370a08231146103105761014a565b806303c0f5d41461014e57806306fdde0314610176578063095ea7b3146101a05780630faee56f146101dc57806318160ddd146102065761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f9190612ac6565b61052a565b005b348015610181575f80fd5b5061018a610616565b6040516101979190612b8e565b60405180910390f35b3480156101ab575f80fd5b506101c660048036038101906101c19190612be1565b610653565b6040516101d39190612c2e565b60405180910390f35b3480156101e7575f80fd5b506101f0610720565b6040516101fd9190612c56565b60405180910390f35b348015610211575f80fd5b5061021a610726565b6040516102279190612c56565b60405180910390f35b34801561023b575f80fd5b5061025660048036038101906102519190612c6f565b610749565b6040516102639190612c2e565b60405180910390f35b348015610277575f80fd5b506102806108cd565b60405161028d9190612cda565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190612e33565b6108d5565b005b3480156102c9575f80fd5b506102e460048036038101906102df9190612e7a565b6109f9565b6040516102f19190612c2e565b60405180910390f35b348015610305575f80fd5b5061030e610a4b565b005b34801561031b575f80fd5b5061033660048036038101906103319190612e7a565b610ae3565b6040516103439190612c56565b60405180910390f35b348015610357575f80fd5b50610360610bd9565b005b34801561036d575f80fd5b50610376610d27565b005b348015610383575f80fd5b5061038c610e6f565b6040516103999190612c56565b60405180910390f35b3480156103ad575f80fd5b506103b6610e75565b6040516103c39190612eb4565b60405180910390f35b3480156103d7575f80fd5b506103e0610e9c565b6040516103ed9190612c56565b60405180910390f35b348015610401575f80fd5b5061040a610ea2565b6040516104179190612b8e565b60405180910390f35b34801561042b575f80fd5b5061044660048036038101906104419190612be1565b610edf565b6040516104539190612c2e565b60405180910390f35b348015610467575f80fd5b50610470610fac565b60405161047d9190612c56565b60405180910390f35b348015610491575f80fd5b5061049a610fb2565b6040516104a79190612c2e565b60405180910390f35b3480156104bb575f80fd5b506104c4610fc4565b005b3480156104d1575f80fd5b506104ec60048036038101906104e79190612e33565b6114e6565b005b3480156104f9575f80fd5b50610514600480360381019061050f9190612ecd565b61160b565b6040516105219190612c56565b60405180910390f35b61053261173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b590612f55565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280601681526020017f556e69636f726e496e75546f6b656e436f696e39393900000000000000000000815250905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036106ac575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610704575f80fd5b61071661070f61173d565b8484611744565b6001905092915050565b60135481565b5f6008600a61073591906130cf565b633b9aca006107449190613119565b905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036107a2575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036107fa575f80fd5b6108058484846119b7565b6108c28461081161173d565b6108bd85604051806060016040528060288152602001613af46028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61087461173d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124349092919063ffffffff16565b611744565b600190509392505050565b5f6008905090565b6108dd61173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090612f55565b60405180910390fd5b5f5b81518110156109f5575f60045f84848151811061098b5761098a61315a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806109ed90613187565b91505061096b565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a8c61173d565b73ffffffffffffffffffffffffffffffffffffffff1614610aab575f80fd5b5f610ab530610ae3565b90505f811115610ac957610ac881612496565b5b5f4790505f811115610adf57610ade816127cd565b5b5050565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610b3c575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610b94575f80fd5b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610be161173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490612f55565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d2f61173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612f55565b60405180910390fd5b6008600a610dc991906130cf565b633b9aca00610dd89190613119565b6010819055506008600a610dec91906130cf565b633b9aca00610dfb9190613119565b6011819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610e4991906130cf565b633b9aca00610e589190613119565b604051610e659190612c56565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600381526020017f554e490000000000000000000000000000000000000000000000000000000000815250905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610f38575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610f90575f80fd5b610fa2610f9b61173d565b84846119b7565b6001905092915050565b60125481565b60075f9054906101000a900460ff1681565b610fcc61173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90612f55565b60405180910390fd5b601560149054906101000a900460ff16156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90613218565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111443060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61113091906130cf565b633b9aca0061113f9190613119565b611744565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d2919061324a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127c919061324a565b6040518363ffffffff1660e01b8152600401611299929190613275565b6020604051808303815f875af11580156112b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d9919061324a565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061136030610ae3565b5f8061136a610e75565b426040518863ffffffff1660e01b815260040161138c969594939291906132de565b60606040518083038185885af11580156113a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113cd9190613351565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161146d9291906133a1565b6020604051808303815f875af1158015611489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ad91906133dc565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b6114ee61173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190612f55565b60405180910390fd5b5f5b815181101561160757600160045f84848151811061159d5761159c61315a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806115ff90613187565b91505061157c565b5050565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611664575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036116bc575f80fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990613477565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790613505565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611878575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036118d0575f80fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119aa9190612c56565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613593565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90613621565b60405180910390fd5b5f8111611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906136af565b60405180910390fd5b5f611ade610e75565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b4c5750611b1c610e75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121845760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bef575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611bf7575f80fd5b60075f9054906101000a900460ff1615611d7d5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cb5575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d7c574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d309061373d565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e26575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e79575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f5257601054821115611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba906137a5565b60405180910390fd5b60115482611ed085610ae3565b611eda91906137c3565b1115611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1290613840565b60405180910390fd5b600e54600f541015611f3a57611f3083612836565b15611f39575f80fd5b5b600f5f815480929190611f4c90613187565b91905055505b611f8e6064611f80600c54600f5411611f6d57600854611f71565b600a545b8561284790919063ffffffff16565b6128be90919063ffffffff16565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561201857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120a157601054821115612062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612059906137a5565b60405180910390fd5b61209e6064612090600d54600f541161207d57600954612081565b600b545b8561284790919063ffffffff16565b6128be90919063ffffffff16565b90505b5f6120ab30610ae3565b905060158054906101000a900460ff16158015612114575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561212c5750601560169054906101000a900460ff165b8015612139575060125481115b80156121485750600e54600f54115b156121825761216a6121658461216084601354612907565b612907565b612496565b5f4790505f8111156121805761217f476127cd565b5b505b505b5f811115612283576121dc8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291f90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161227a9190612c56565b60405180910390a35b6122d38260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061237661232a828461297c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612419848661297c90919063ffffffff16565b6040516124269190612c56565b60405180910390a350505050565b5f83831115829061247b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124729190612b8e565b60405180910390fd5b505f8385612489919061385e565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f8103156127b157601560149054906101000a900460ff16156127b15760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603612525575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361257d575f80fd5b5f600267ffffffffffffffff81111561259957612598612cf7565b5b6040519080825280602002602001820160405280156125c75781602001602082028036833780820191505090505b50905030815f815181106125de576125dd61315a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612682573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a6919061324a565b816001815181106126ba576126b961315a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127203060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611744565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612782959493929190613948565b5f604051808303815f87803b158015612799575f80fd5b505af11580156127ab573d5f803e3d5ffd5b50505050505b5f6015806101000a81548160ff02191690831515021790555050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612832573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f808303612857575f90506128b8565b5f82846128649190613119565b905082848261287391906139cd565b146128b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128aa90613a6d565b60405180910390fd5b809150505b92915050565b5f6128ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129c5565b905092915050565b5f8183116129155782612917565b815b905092915050565b5f80828461292d91906137c3565b905083811015612972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296990613ad5565b60405180910390fd5b8091505092915050565b5f6129bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612434565b905092915050565b5f8083118290612a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a029190612b8e565b60405180910390fd5b505f8385612a1991906139cd565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a6082612a37565b9050919050565b612a7081612a56565b8114612a7a575f80fd5b50565b5f81359050612a8b81612a67565b92915050565b5f8115159050919050565b612aa581612a91565b8114612aaf575f80fd5b50565b5f81359050612ac081612a9c565b92915050565b5f8060408385031215612adc57612adb612a2f565b5b5f612ae985828601612a7d565b9250506020612afa85828601612ab2565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b3b578082015181840152602081019050612b20565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b6082612b04565b612b6a8185612b0e565b9350612b7a818560208601612b1e565b612b8381612b46565b840191505092915050565b5f6020820190508181035f830152612ba68184612b56565b905092915050565b5f819050919050565b612bc081612bae565b8114612bca575f80fd5b50565b5f81359050612bdb81612bb7565b92915050565b5f8060408385031215612bf757612bf6612a2f565b5b5f612c0485828601612a7d565b9250506020612c1585828601612bcd565b9150509250929050565b612c2881612a91565b82525050565b5f602082019050612c415f830184612c1f565b92915050565b612c5081612bae565b82525050565b5f602082019050612c695f830184612c47565b92915050565b5f805f60608486031215612c8657612c85612a2f565b5b5f612c9386828701612a7d565b9350506020612ca486828701612a7d565b9250506040612cb586828701612bcd565b9150509250925092565b5f60ff82169050919050565b612cd481612cbf565b82525050565b5f602082019050612ced5f830184612ccb565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d2d82612b46565b810181811067ffffffffffffffff82111715612d4c57612d4b612cf7565b5b80604052505050565b5f612d5e612a26565b9050612d6a8282612d24565b919050565b5f67ffffffffffffffff821115612d8957612d88612cf7565b5b602082029050602081019050919050565b5f80fd5b5f612db0612dab84612d6f565b612d55565b90508083825260208201905060208402830185811115612dd357612dd2612d9a565b5b835b81811015612dfc5780612de88882612a7d565b845260208401935050602081019050612dd5565b5050509392505050565b5f82601f830112612e1a57612e19612cf3565b5b8135612e2a848260208601612d9e565b91505092915050565b5f60208284031215612e4857612e47612a2f565b5b5f82013567ffffffffffffffff811115612e6557612e64612a33565b5b612e7184828501612e06565b91505092915050565b5f60208284031215612e8f57612e8e612a2f565b5b5f612e9c84828501612a7d565b91505092915050565b612eae81612a56565b82525050565b5f602082019050612ec75f830184612ea5565b92915050565b5f8060408385031215612ee357612ee2612a2f565b5b5f612ef085828601612a7d565b9250506020612f0185828601612a7d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f3f602083612b0e565b9150612f4a82612f0b565b602082019050919050565b5f6020820190508181035f830152612f6c81612f33565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ff557808604811115612fd157612fd0612f73565b5b6001851615612fe05780820291505b8081029050612fee85612fa0565b9450612fb5565b94509492505050565b5f8261300d57600190506130c8565b8161301a575f90506130c8565b8160018114613030576002811461303a57613069565b60019150506130c8565b60ff84111561304c5761304b612f73565b5b8360020a91508482111561306357613062612f73565b5b506130c8565b5060208310610133831016604e8410600b841016171561309e5782820a90508381111561309957613098612f73565b5b6130c8565b6130ab8484846001612fac565b925090508184048111156130c2576130c1612f73565b5b81810290505b9392505050565b5f6130d982612bae565b91506130e483612cbf565b92506131117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ffe565b905092915050565b5f61312382612bae565b915061312e83612bae565b925082820261313c81612bae565b9150828204841483151761315357613152612f73565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61319182612bae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131c3576131c2612f73565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613202601783612b0e565b915061320d826131ce565b602082019050919050565b5f6020820190508181035f83015261322f816131f6565b9050919050565b5f8151905061324481612a67565b92915050565b5f6020828403121561325f5761325e612a2f565b5b5f61326c84828501613236565b91505092915050565b5f6040820190506132885f830185612ea5565b6132956020830184612ea5565b9392505050565b5f819050919050565b5f819050919050565b5f6132c86132c36132be8461329c565b6132a5565b612bae565b9050919050565b6132d8816132ae565b82525050565b5f60c0820190506132f15f830189612ea5565b6132fe6020830188612c47565b61330b60408301876132cf565b61331860608301866132cf565b6133256080830185612ea5565b61333260a0830184612c47565b979650505050505050565b5f8151905061334b81612bb7565b92915050565b5f805f6060848603121561336857613367612a2f565b5b5f6133758682870161333d565b93505060206133868682870161333d565b92505060406133978682870161333d565b9150509250925092565b5f6040820190506133b45f830185612ea5565b6133c16020830184612c47565b9392505050565b5f815190506133d681612a9c565b92915050565b5f602082840312156133f1576133f0612a2f565b5b5f6133fe848285016133c8565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613461602483612b0e565b915061346c82613407565b604082019050919050565b5f6020820190508181035f83015261348e81613455565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ef602283612b0e565b91506134fa82613495565b604082019050919050565b5f6020820190508181035f83015261351c816134e3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61357d602583612b0e565b915061358882613523565b604082019050919050565b5f6020820190508181035f8301526135aa81613571565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61360b602383612b0e565b9150613616826135b1565b604082019050919050565b5f6020820190508181035f830152613638816135ff565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613699602983612b0e565b91506136a48261363f565b604082019050919050565b5f6020820190508181035f8301526136c68161368d565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f613727602483612b0e565b9150613732826136cd565b604082019050919050565b5f6020820190508181035f8301526137548161371b565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61378f601983612b0e565b915061379a8261375b565b602082019050919050565b5f6020820190508181035f8301526137bc81613783565b9050919050565b5f6137cd82612bae565b91506137d883612bae565b92508282019050808211156137f0576137ef612f73565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61382a601a83612b0e565b9150613835826137f6565b602082019050919050565b5f6020820190508181035f8301526138578161381e565b9050919050565b5f61386882612bae565b915061387383612bae565b925082820390508181111561388b5761388a612f73565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138c381612a56565b82525050565b5f6138d483836138ba565b60208301905092915050565b5f602082019050919050565b5f6138f682613891565b613900818561389b565b935061390b836138ab565b805f5b8381101561393b57815161392288826138c9565b975061392d836138e0565b92505060018101905061390e565b5085935050505092915050565b5f60a08201905061395b5f830188612c47565b61396860208301876132cf565b818103604083015261397a81866138ec565b90506139896060830185612ea5565b6139966080830184612c47565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139d782612bae565b91506139e283612bae565b9250826139f2576139f16139a0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a57602183612b0e565b9150613a62826139fd565b604082019050919050565b5f6020820190508181035f830152613a8481613a4b565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613abf601b83612b0e565b9150613aca82613a8b565b602082019050919050565b5f6020820190508181035f830152613aec81613ab3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122082b8d205685d1486902e70a946859651ca0a051a85fa7607cb0c5a639728c50364736f6c63430008140033

Deployed Bytecode

0x608060405260043610610143575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610420578063bf474bed1461045c578063c876d0b914610486578063c9567bf9146104b0578063d34628cc146104c6578063dd62ed3e146104ee5761014a565b8063715018a61461034c578063751039fc146103625780637d1db4a5146103785780638da5cb5b146103a25780638f9a55c0146103cc57806395d89b41146103f65761014a565b806323b872dd1161010757806323b872dd14610230578063313ce5671461026c57806331c2d847146102965780633bbac579146102be57806351bc3c85146102fa57806370a08231146103105761014a565b806303c0f5d41461014e57806306fdde0314610176578063095ea7b3146101a05780630faee56f146101dc57806318160ddd146102065761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b50610174600480360381019061016f9190612ac6565b61052a565b005b348015610181575f80fd5b5061018a610616565b6040516101979190612b8e565b60405180910390f35b3480156101ab575f80fd5b506101c660048036038101906101c19190612be1565b610653565b6040516101d39190612c2e565b60405180910390f35b3480156101e7575f80fd5b506101f0610720565b6040516101fd9190612c56565b60405180910390f35b348015610211575f80fd5b5061021a610726565b6040516102279190612c56565b60405180910390f35b34801561023b575f80fd5b5061025660048036038101906102519190612c6f565b610749565b6040516102639190612c2e565b60405180910390f35b348015610277575f80fd5b506102806108cd565b60405161028d9190612cda565b60405180910390f35b3480156102a1575f80fd5b506102bc60048036038101906102b79190612e33565b6108d5565b005b3480156102c9575f80fd5b506102e460048036038101906102df9190612e7a565b6109f9565b6040516102f19190612c2e565b60405180910390f35b348015610305575f80fd5b5061030e610a4b565b005b34801561031b575f80fd5b5061033660048036038101906103319190612e7a565b610ae3565b6040516103439190612c56565b60405180910390f35b348015610357575f80fd5b50610360610bd9565b005b34801561036d575f80fd5b50610376610d27565b005b348015610383575f80fd5b5061038c610e6f565b6040516103999190612c56565b60405180910390f35b3480156103ad575f80fd5b506103b6610e75565b6040516103c39190612eb4565b60405180910390f35b3480156103d7575f80fd5b506103e0610e9c565b6040516103ed9190612c56565b60405180910390f35b348015610401575f80fd5b5061040a610ea2565b6040516104179190612b8e565b60405180910390f35b34801561042b575f80fd5b5061044660048036038101906104419190612be1565b610edf565b6040516104539190612c2e565b60405180910390f35b348015610467575f80fd5b50610470610fac565b60405161047d9190612c56565b60405180910390f35b348015610491575f80fd5b5061049a610fb2565b6040516104a79190612c2e565b60405180910390f35b3480156104bb575f80fd5b506104c4610fc4565b005b3480156104d1575f80fd5b506104ec60048036038101906104e79190612e33565b6114e6565b005b3480156104f9575f80fd5b50610514600480360381019061050f9190612ecd565b61160b565b6040516105219190612c56565b60405180910390f35b61053261173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b590612f55565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280601681526020017f556e69636f726e496e75546f6b656e436f696e39393900000000000000000000815250905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036106ac575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610704575f80fd5b61071661070f61173d565b8484611744565b6001905092915050565b60135481565b5f6008600a61073591906130cf565b633b9aca006107449190613119565b905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036107a2575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036107fa575f80fd5b6108058484846119b7565b6108c28461081161173d565b6108bd85604051806060016040528060288152602001613af46028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61087461173d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124349092919063ffffffff16565b611744565b600190509392505050565b5f6008905090565b6108dd61173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096090612f55565b60405180910390fd5b5f5b81518110156109f5575f60045f84848151811061098b5761098a61315a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806109ed90613187565b91505061096b565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a8c61173d565b73ffffffffffffffffffffffffffffffffffffffff1614610aab575f80fd5b5f610ab530610ae3565b90505f811115610ac957610ac881612496565b5b5f4790505f811115610adf57610ade816127cd565b5b5050565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610b3c575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610b94575f80fd5b60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610be161173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490612f55565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d2f61173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db290612f55565b60405180910390fd5b6008600a610dc991906130cf565b633b9aca00610dd89190613119565b6010819055506008600a610dec91906130cf565b633b9aca00610dfb9190613119565b6011819055505f60075f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610e4991906130cf565b633b9aca00610e589190613119565b604051610e659190612c56565b60405180910390a1565b60105481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600381526020017f554e490000000000000000000000000000000000000000000000000000000000815250905090565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610f38575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603610f90575f80fd5b610fa2610f9b61173d565b84846119b7565b6001905092915050565b60125481565b60075f9054906101000a900460ff1681565b610fcc61173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611058576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104f90612f55565b60405180910390fd5b601560149054906101000a900460ff16156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109f90613218565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506111443060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a61113091906130cf565b633b9aca0061113f9190613119565b611744565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d2919061324a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611258573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127c919061324a565b6040518363ffffffff1660e01b8152600401611299929190613275565b6020604051808303815f875af11580156112b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112d9919061324a565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061136030610ae3565b5f8061136a610e75565b426040518863ffffffff1660e01b815260040161138c969594939291906132de565b60606040518083038185885af11580156113a8573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906113cd9190613351565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161146d9291906133a1565b6020604051808303815f875af1158015611489573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114ad91906133dc565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550565b6114ee61173d565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461157a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157190612f55565b60405180910390fd5b5f5b815181101561160757600160045f84848151811061159d5761159c61315a565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806115ff90613187565b91505061157c565b5050565b5f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611664575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036116bc575f80fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990613477565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790613505565b60405180910390fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603611878575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036118d0575f80fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119aa9190612c56565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613593565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8a90613621565b60405180910390fd5b5f8111611ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611acc906136af565b60405180910390fd5b5f611ade610e75565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b4c5750611b1c610e75565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156121845760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bef575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611bf7575f80fd5b60075f9054906101000a900460ff1615611d7d5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611cb5575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d7c574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d309061373d565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e26575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e79575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611f5257601054821115611ec3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eba906137a5565b60405180910390fd5b60115482611ed085610ae3565b611eda91906137c3565b1115611f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1290613840565b60405180910390fd5b600e54600f541015611f3a57611f3083612836565b15611f39575f80fd5b5b600f5f815480929190611f4c90613187565b91905055505b611f8e6064611f80600c54600f5411611f6d57600854611f71565b600a545b8561284790919063ffffffff16565b6128be90919063ffffffff16565b905060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561201857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156120a157601054821115612062576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612059906137a5565b60405180910390fd5b61209e6064612090600d54600f541161207d57600954612081565b600b545b8561284790919063ffffffff16565b6128be90919063ffffffff16565b90505b5f6120ab30610ae3565b905060158054906101000a900460ff16158015612114575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561212c5750601560169054906101000a900460ff165b8015612139575060125481115b80156121485750600e54600f54115b156121825761216a6121658461216084601354612907565b612907565b612496565b5f4790505f8111156121805761217f476127cd565b5b505b505b5f811115612283576121dc8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291f90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161227a9190612c56565b60405180910390a35b6122d38260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461297c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061237661232a828461297c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461291f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612419848661297c90919063ffffffff16565b6040516124269190612c56565b60405180910390a350505050565b5f83831115829061247b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124729190612b8e565b60405180910390fd5b505f8385612489919061385e565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f8103156127b157601560149054906101000a900460ff16156127b15760165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603612525575f80fd5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff160361257d575f80fd5b5f600267ffffffffffffffff81111561259957612598612cf7565b5b6040519080825280602002602001820160405280156125c75781602001602082028036833780820191505090505b50905030815f815181106125de576125dd61315a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612682573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a6919061324a565b816001815181106126ba576126b961315a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506127203060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611744565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612782959493929190613948565b5f604051808303815f87803b158015612799575f80fd5b505af11580156127ab573d5f803e3d5ffd5b50505050505b5f6015806101000a81548160ff02191690831515021790555050565b600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612832573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f808303612857575f90506128b8565b5f82846128649190613119565b905082848261287391906139cd565b146128b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128aa90613a6d565b60405180910390fd5b809150505b92915050565b5f6128ff83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129c5565b905092915050565b5f8183116129155782612917565b815b905092915050565b5f80828461292d91906137c3565b905083811015612972576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161296990613ad5565b60405180910390fd5b8091505092915050565b5f6129bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612434565b905092915050565b5f8083118290612a0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a029190612b8e565b60405180910390fd5b505f8385612a1991906139cd565b9050809150509392505050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612a6082612a37565b9050919050565b612a7081612a56565b8114612a7a575f80fd5b50565b5f81359050612a8b81612a67565b92915050565b5f8115159050919050565b612aa581612a91565b8114612aaf575f80fd5b50565b5f81359050612ac081612a9c565b92915050565b5f8060408385031215612adc57612adb612a2f565b5b5f612ae985828601612a7d565b9250506020612afa85828601612ab2565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b3b578082015181840152602081019050612b20565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b6082612b04565b612b6a8185612b0e565b9350612b7a818560208601612b1e565b612b8381612b46565b840191505092915050565b5f6020820190508181035f830152612ba68184612b56565b905092915050565b5f819050919050565b612bc081612bae565b8114612bca575f80fd5b50565b5f81359050612bdb81612bb7565b92915050565b5f8060408385031215612bf757612bf6612a2f565b5b5f612c0485828601612a7d565b9250506020612c1585828601612bcd565b9150509250929050565b612c2881612a91565b82525050565b5f602082019050612c415f830184612c1f565b92915050565b612c5081612bae565b82525050565b5f602082019050612c695f830184612c47565b92915050565b5f805f60608486031215612c8657612c85612a2f565b5b5f612c9386828701612a7d565b9350506020612ca486828701612a7d565b9250506040612cb586828701612bcd565b9150509250925092565b5f60ff82169050919050565b612cd481612cbf565b82525050565b5f602082019050612ced5f830184612ccb565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612d2d82612b46565b810181811067ffffffffffffffff82111715612d4c57612d4b612cf7565b5b80604052505050565b5f612d5e612a26565b9050612d6a8282612d24565b919050565b5f67ffffffffffffffff821115612d8957612d88612cf7565b5b602082029050602081019050919050565b5f80fd5b5f612db0612dab84612d6f565b612d55565b90508083825260208201905060208402830185811115612dd357612dd2612d9a565b5b835b81811015612dfc5780612de88882612a7d565b845260208401935050602081019050612dd5565b5050509392505050565b5f82601f830112612e1a57612e19612cf3565b5b8135612e2a848260208601612d9e565b91505092915050565b5f60208284031215612e4857612e47612a2f565b5b5f82013567ffffffffffffffff811115612e6557612e64612a33565b5b612e7184828501612e06565b91505092915050565b5f60208284031215612e8f57612e8e612a2f565b5b5f612e9c84828501612a7d565b91505092915050565b612eae81612a56565b82525050565b5f602082019050612ec75f830184612ea5565b92915050565b5f8060408385031215612ee357612ee2612a2f565b5b5f612ef085828601612a7d565b9250506020612f0185828601612a7d565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f3f602083612b0e565b9150612f4a82612f0b565b602082019050919050565b5f6020820190508181035f830152612f6c81612f33565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ff557808604811115612fd157612fd0612f73565b5b6001851615612fe05780820291505b8081029050612fee85612fa0565b9450612fb5565b94509492505050565b5f8261300d57600190506130c8565b8161301a575f90506130c8565b8160018114613030576002811461303a57613069565b60019150506130c8565b60ff84111561304c5761304b612f73565b5b8360020a91508482111561306357613062612f73565b5b506130c8565b5060208310610133831016604e8410600b841016171561309e5782820a90508381111561309957613098612f73565b5b6130c8565b6130ab8484846001612fac565b925090508184048111156130c2576130c1612f73565b5b81810290505b9392505050565b5f6130d982612bae565b91506130e483612cbf565b92506131117fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ffe565b905092915050565b5f61312382612bae565b915061312e83612bae565b925082820261313c81612bae565b9150828204841483151761315357613152612f73565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61319182612bae565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036131c3576131c2612f73565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613202601783612b0e565b915061320d826131ce565b602082019050919050565b5f6020820190508181035f83015261322f816131f6565b9050919050565b5f8151905061324481612a67565b92915050565b5f6020828403121561325f5761325e612a2f565b5b5f61326c84828501613236565b91505092915050565b5f6040820190506132885f830185612ea5565b6132956020830184612ea5565b9392505050565b5f819050919050565b5f819050919050565b5f6132c86132c36132be8461329c565b6132a5565b612bae565b9050919050565b6132d8816132ae565b82525050565b5f60c0820190506132f15f830189612ea5565b6132fe6020830188612c47565b61330b60408301876132cf565b61331860608301866132cf565b6133256080830185612ea5565b61333260a0830184612c47565b979650505050505050565b5f8151905061334b81612bb7565b92915050565b5f805f6060848603121561336857613367612a2f565b5b5f6133758682870161333d565b93505060206133868682870161333d565b92505060406133978682870161333d565b9150509250925092565b5f6040820190506133b45f830185612ea5565b6133c16020830184612c47565b9392505050565b5f815190506133d681612a9c565b92915050565b5f602082840312156133f1576133f0612a2f565b5b5f6133fe848285016133c8565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613461602483612b0e565b915061346c82613407565b604082019050919050565b5f6020820190508181035f83015261348e81613455565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6134ef602283612b0e565b91506134fa82613495565b604082019050919050565b5f6020820190508181035f83015261351c816134e3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61357d602583612b0e565b915061358882613523565b604082019050919050565b5f6020820190508181035f8301526135aa81613571565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61360b602383612b0e565b9150613616826135b1565b604082019050919050565b5f6020820190508181035f830152613638816135ff565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613699602983612b0e565b91506136a48261363f565b604082019050919050565b5f6020820190508181035f8301526136c68161368d565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f5f8201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b5f613727602483612b0e565b9150613732826136cd565b604082019050919050565b5f6020820190508181035f8301526137548161371b565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61378f601983612b0e565b915061379a8261375b565b602082019050919050565b5f6020820190508181035f8301526137bc81613783565b9050919050565b5f6137cd82612bae565b91506137d883612bae565b92508282019050808211156137f0576137ef612f73565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f61382a601a83612b0e565b9150613835826137f6565b602082019050919050565b5f6020820190508181035f8301526138578161381e565b9050919050565b5f61386882612bae565b915061387383612bae565b925082820390508181111561388b5761388a612f73565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138c381612a56565b82525050565b5f6138d483836138ba565b60208301905092915050565b5f602082019050919050565b5f6138f682613891565b613900818561389b565b935061390b836138ab565b805f5b8381101561393b57815161392288826138c9565b975061392d836138e0565b92505060018101905061390e565b5085935050505092915050565b5f60a08201905061395b5f830188612c47565b61396860208301876132cf565b818103604083015261397a81866138ec565b90506139896060830185612ea5565b6139966080830184612c47565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139d782612bae565b91506139e283612bae565b9250826139f2576139f16139a0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613a57602183612b0e565b9150613a62826139fd565b604082019050919050565b5f6020820190508181035f830152613a8481613a4b565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613abf601b83612b0e565b9150613aca82613a8b565b602082019050919050565b5f6020820190508181035f830152613aec81613ab3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122082b8d205685d1486902e70a946859651ca0a051a85fa7607cb0c5a639728c50364736f6c63430008140033

Deployed Bytecode Sourcemap

3598:9616:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11631:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5672:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7093:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4872:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5952:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7344:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5860:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6226:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11846:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12860:348;;;;;;;;;;;;;:::i;:::-;;6397:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2675:148;;;;;;;;;;;;;:::i;:::-;;11422:196;;;;;;;;;;;;;:::i;:::-;;4681:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2459:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4746:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5764:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6606:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4809:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4051:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11938:671;;;;;;;;;;;;;:::i;:::-;;6053:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6860:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11631:105;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11723:5:::1;11707:4;:13;11712:7;11707:13;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11631:105:::0;;:::o;5672:83::-;5709:13;5742:5;;;;;;;;;;;;;;;;;5735:12;;5672:83;:::o;7093:242::-;7168:4;7207:7;;;;;;;;;;;7193:21;;:10;:21;;;7185:30;;;;;;7247:7;;;;;;;;;;;7234:20;;:9;:20;;;7226:29;;;;;;7266:39;7275:12;:10;:12::i;:::-;7289:7;7298:6;7266:8;:39::i;:::-;7323:4;7316:11;;7093:242;;;;:::o;4872:53::-;;;;:::o;5952:95::-;6005:7;4496:1;4552:2;:13;;;;:::i;:::-;4539:10;:26;;;;:::i;:::-;6025:14;;5952:95;:::o;7344:394::-;7442:4;7481:7;;;;;;;;;;;7467:21;;:10;:21;;;7459:30;;;;;;7521:7;;;;;;;;;;;7508:20;;:9;:20;;;7500:29;;;;;;7540:36;7550:6;7558:9;7569:6;7540:9;:36::i;:::-;7587:121;7596:6;7604:12;:10;:12::i;:::-;7618:89;7656:6;7618:89;;;;;;;;;;;;;;;;;:11;:19;7630:6;7618:19;;;;;;;;;;;;;;;:33;7638:12;:10;:12::i;:::-;7618:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7587:8;:121::i;:::-;7726:4;7719:11;;7344:394;;;;;:::o;5860:83::-;5901:5;4496:1;5919:16;;5860:83;:::o;6226:162::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6299:6:::1;6294:87;6315:6;:13;6311:1;:17;6294:87;;;6366:5;6348:4;:15;6353:6;6360:1;6353:9;;;;;;;;:::i;:::-;;;;;;;;6348:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;6330:3;;;;;:::i;:::-;;;;6294:87;;;;6226:162:::0;:::o;11846:83::-;11893:4;11914;:7;11919:1;11914:7;;;;;;;;;;;;;;;;;;;;;;;;;11907:14;;11846:83;;;:::o;12860:348::-;12924:10;;;;;;;;;;;12910:24;;:12;:10;:12::i;:::-;:24;;;12902:33;;;;;;12946:20;12967:24;12985:4;12967:9;:24::i;:::-;12946:45;;13018:1;13005:12;:14;13002:73;;;13033:30;13050:12;13033:16;:30::i;:::-;13002:73;13085:18;13104:21;13085:40;;13150:1;13139:10;:12;13136:65;;;13165:24;13178:10;13165:12;:24::i;:::-;13136:65;12891:317;;12860:348::o;6397:200::-;6463:7;6505;;;;;;;;;;;6491:21;;:10;:21;;;6483:30;;;;;;6545:7;;;;;;;;;;;6532:20;;:9;:20;;;6524:29;;;;;;6571:9;:18;6581:7;6571:18;;;;;;;;;;;;;;;;6564:25;;6397:200;;;:::o;2675:148::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2782:1:::1;2745:40;;2766:6;::::0;::::1;;;;;;;;2745:40;;;;;;;;;;;;2813:1;2796:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2675:148::o:0;11422:196::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4496:1:::1;4552:2;:13;;;;:::i;:::-;4539:10;:26;;;;:::i;:::-;11475:12;:22;;;;4496:1;4552:2;:13;;;;:::i;:::-;4539:10;:26;;;;:::i;:::-;11508:14;:22;;;;11562:5;11541:20;;:26;;;;;;;;;;;;;;;;;;11583:27;4496:1;4552:2;:13;;;;:::i;:::-;4539:10;:26;;;;:::i;:::-;11583:27;;;;;;:::i;:::-;;;;;;;;11422:196::o:0;4681:58::-;;;;:::o;2459:79::-;2497:7;2524:6;;;;;;;;;;;2517:13;;2459:79;:::o;4746:56::-;;;;:::o;5764:87::-;5803:13;5836:7;;;;;;;;;;;;;;;;;5829:14;;5764:87;:::o;6606:248::-;6684:4;6723:7;;;;;;;;;;;6709:21;;:10;:21;;;6701:30;;;;;;6763:7;;;;;;;;;;;6750:20;;:9;:20;;;6742:29;;;;;;6782:42;6792:12;:10;:12::i;:::-;6806:9;6817:6;6782:9;:42::i;:::-;6842:4;6835:11;;6606:248;;;;:::o;4809:56::-;;;;:::o;4051:40::-;;;;;;;;;;;;;:::o;11938:671::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12002:11:::1;;;;;;;;;;;12001:12;11993:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12088:42;12051:15;;:80;;;;;;;;;;;;;;;;;;12142:58;12159:4;12174:15;;;;;;;;;;;4496:1;4552:2;:13;;;;:::i;:::-;4539:10;:26;;;;:::i;:::-;12142:8;:58::i;:::-;12245:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12227:55;;;12291:4;12298:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12227:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12211:13;;:110;;;;;;;;;;;;;;;;;;12332:15;;;;;;;;;;;:31;;;12371:21;12402:4;12408:24;12426:4;12408:9;:24::i;:::-;12433:1;12435::::0;12437:7:::1;:5;:7::i;:::-;12445:15;12332:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12479:13;;;;;;;;;;;12472:29;;;12510:15;;;;;;;;;;;12528:14;12472:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12568:4;12554:11;;:18;;;;;;;;;;;;;;;;;;12597:4;12583:11;;:18;;;;;;;;;;;;;;;;;;11938:671::o:0;6053:164::-;2597:12;:10;:12::i;:::-;2587:22;;:6;;;;;;;;;;:22;;;2579:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6127:6:::1;6122:88;6143:5;:12;6139:1;:16;6122:88;;;6194:4;6177;:14;6182:5;6188:1;6182:8;;;;;;;;:::i;:::-;;;;;;;;6177:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;6157:3;;;;;:::i;:::-;;;;6122:88;;;;6053:164:::0;:::o;6860:224::-;6941:7;6983;;;;;;;;;;;6969:21;;:10;:21;;;6961:30;;;;;;7023:7;;;;;;;;;;;7010:20;;:9;:20;;;7002:29;;;;;;7049:11;:18;7061:5;7049:18;;;;;;;;;;;;;;;:27;7068:7;7049:27;;;;;;;;;;;;;;;;7042:34;;6860:224;;;;:::o;203:98::-;256:7;283:10;276:17;;203:98;:::o;7747:416::-;7857:1;7840:19;;:5;:19;;;7832:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7938:1;7919:21;;:7;:21;;;7911:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8012:7;;;;;;;;;;;7998:21;;:10;:21;;;7990:30;;;;;;8052:7;;;;;;;;;;;8039:20;;:9;:20;;;8031:29;;;;;;8101:6;8071:11;:18;8083:5;8071:18;;;;;;;;;;;;;;;:27;8090:7;8071:27;;;;;;;;;;;;;;;:36;;;;8139:7;8123:32;;8132:5;8123:32;;;8148:6;8123:32;;;;;;:::i;:::-;;;;;;;;7747:416;;;:::o;8172:2486::-;8276:1;8260:18;;:4;:18;;;8252:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8353:1;8339:16;;:2;:16;;;8331:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8423:1;8414:6;:10;8406:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8481:17;8524:7;:5;:7::i;:::-;8516:15;;:4;:15;;;;:32;;;;;8541:7;:5;:7::i;:::-;8535:13;;:2;:13;;;;8516:32;8512:1789;;;8575:4;:10;8580:4;8575:10;;;;;;;;;;;;;;;;;;;;;;;;;8574:11;:24;;;;;8590:4;:8;8595:2;8590:8;;;;;;;;;;;;;;;;;;;;;;;;;8589:9;8574:24;8566:33;;;;;;8621:20;;;;;;;;;;;8617:346;;;8680:15;;;;;;;;;;;8666:30;;:2;:30;;;;:62;;;;;8714:13;;;;;;;;;;;8700:28;;:2;:28;;;;8666:62;8662:286;;;8801:12;8759:28;:39;8788:9;8759:39;;;;;;;;;;;;;;;;:54;8751:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8916:12;8874:28;:39;8903:9;8874:39;;;;;;;;;;;;;;;:54;;;;8662:286;8617:346;8992:13;;;;;;;;;;;8984:21;;:4;:21;;;:55;;;;;9023:15;;;;;;;;;;;9009:30;;:2;:30;;;;8984:55;:83;;;;;9045:18;:22;9064:2;9045:22;;;;;;;;;;;;;;;;;;;;;;;;;9043:24;8984:83;8980:428;;;9107:12;;9097:6;:22;;9089:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9202:14;;9192:6;9176:13;9186:2;9176:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9168:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9279:18;;9269:9;;:28;9266:97;;;9328:14;9339:2;9328:10;:14::i;:::-;9327:15;9319:24;;;;;;9266:97;9381:9;;:11;;;;;;;;;:::i;:::-;;;;;;8980:428;9440:76;9512:3;9440:67;9462:15;;9452:9;;:25;9451:55;;9492:14;;9451:55;;;9479:12;;9451:55;9440:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;9428:88;;9540:13;;;;;;;;;;;9534:19;;:2;:19;;;:43;;;;;9572:4;9557:20;;:4;:20;;;;9534:43;9531:253;;;9616:12;;9606:6;:22;;9598:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9689:79;9764:3;9689:70;9711:16;;9701:9;;:26;9700:58;;9743:15;;9700:58;;;9729:13;;9700:58;9689:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9677:91;;9531:253;9801:28;9832:24;9850:4;9832:9;:24::i;:::-;9801:55;;9876:6;;;;;;;;;;9875:7;:30;;;;;9892:13;;;;;;;;;;;9886:19;;:2;:19;;;9875:30;:45;;;;;9909:11;;;;;;;;;;;9875:45;:87;;;;;9945:17;;9924:20;:38;9875:87;:119;;;;;9976:18;;9966:9;;:28;9875:119;9871:419;;;10015:67;10032:49;10036:6;10043:37;10047:20;10068:11;;10043:3;:37::i;:::-;10032:3;:49::i;:::-;10015:16;:67::i;:::-;10101:26;10130:21;10101:50;;10194:1;10173:18;:22;10170:105;;;10220:35;10233:21;10220:12;:35::i;:::-;10170:105;9996:294;9871:419;8550:1751;8512:1789;10327:1;10317:9;:11;10314:161;;;10367:39;10396:9;10367;:24;10385:4;10367:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10342:9;:24;10360:4;10342:24;;;;;;;;;;;;;;;:64;;;;10447:4;10424:39;;10433:4;10424:39;;;10453:9;10424:39;;;;;;:::i;:::-;;;;;;;;10314:161;10501:27;10521:6;10501:9;:15;10511:4;10501:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10485:9;:15;10495:4;10485:15;;;;;;;;;;;;;;;:43;;;;10553:40;10571:21;10582:9;10571:6;:10;;:21;;;;:::i;:::-;10553:9;:13;10563:2;10553:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10539:9;:13;10549:2;10539:13;;;;;;;;;;;;;;;:54;;;;10624:2;10609:41;;10618:4;10609:41;;;10628:21;10639:9;10628:6;:10;;:21;;;;:::i;:::-;10609:41;;;;;;:::i;:::-;;;;;;;;8241:2417;8172:2486;;;:::o;1344:190::-;1430:7;1463:1;1458;:6;;1466:12;1450:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1490:9;1506:1;1502;:5;;;;:::i;:::-;1490:17;;1525:1;1518:8;;;1344:190;;;;;:::o;10777:636::-;5287:4;5278:6;;:13;;;;;;;;;;;;;;;;;;10871:1:::1;10858:11;:14:::0;10855:27;10874:7:::1;10855:27;10896:11;;;;;;;;;;;10892:25:::0;10909:7:::1;10892:25;10949:7;;;;;;;;;;;10935:21;;:10;:21;;::::0;10927:30:::1;;;::::0;::::1;;10989:7;;;;;;;;;;;10976:20;;:9;:20;;::::0;10968:29:::1;;;::::0;::::1;;11008:21;11046:1;11032:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11008:40;;11077:4;11059;11064:1;11059:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11103:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11093:4;11098:1;11093:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11136:62;11153:4;11168:15;;;;;;;;;;;11186:11;11136:8;:62::i;:::-;11209:15;;;;;;;;;;;:66;;;11290:11;11316:1;11332:4;11359;11379:15;11209:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10844:569;5302:1;5323:5:::0;5314:6;;:14;;;;;;;;;;;;;;;;;;10777:636;:::o;11745:92::-;11802:10;;;;;;;;;;;:19;;:27;11822:6;11802:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11745:92;:::o;12656:195::-;12715:4;12732:12;12799:7;12787:20;12779:28;;12842:1;12835:4;:8;12828:15;;;12656:195;;;:::o;1543:246::-;1601:7;1630:1;1625;:6;1621:47;;1655:1;1648:8;;;;1621:47;1678:9;1694:1;1690;:5;;;;:::i;:::-;1678:17;;1723:1;1718;1714;:5;;;;:::i;:::-;:10;1706:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1780:1;1773:8;;;1543:246;;;;;:::o;1798:132::-;1856:7;1883:39;1887:1;1890;1883:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1876:46;;1798:132;;;;:::o;10670:98::-;10727:7;10754:1;10752;:3;10751:9;;10759:1;10751:9;;;10757:1;10751:9;10744:16;;10670:98;;;;:::o;1011:179::-;1069:7;1089:9;1105:1;1101;:5;;;;:::i;:::-;1089:17;;1130:1;1125;:6;;1117:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1181:1;1174:8;;;1011:179;;;;:::o;1199:136::-;1257:7;1284:43;1288:1;1291;1284:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1277:50;;1199:136;;;;:::o;1939:189::-;2025:7;2057:1;2053;:5;2060:12;2045:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2084:9;2100:1;2096;:5;;;;:::i;:::-;2084:17;;2119:1;2112:8;;;1939: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:173::-;14077:25;14073:1;14065:6;14061:14;14054:49;13937:173;:::o;14116:366::-;14258:3;14279:67;14343:2;14338:3;14279:67;:::i;:::-;14272:74;;14355:93;14444:3;14355:93;:::i;:::-;14473:2;14468:3;14464:12;14457:19;;14116:366;;;:::o;14488:419::-;14654:4;14692:2;14681:9;14677:18;14669:26;;14741:9;14735:4;14731:20;14727:1;14716:9;14712:17;14705:47;14769:131;14895:4;14769:131;:::i;:::-;14761:139;;14488:419;;;:::o;14913:143::-;14970:5;15001:6;14995:13;14986:22;;15017:33;15044:5;15017:33;:::i;:::-;14913:143;;;;:::o;15062:351::-;15132:6;15181:2;15169:9;15160:7;15156:23;15152:32;15149:119;;;15187:79;;:::i;:::-;15149:119;15307:1;15332:64;15388:7;15379:6;15368:9;15364:22;15332:64;:::i;:::-;15322:74;;15278:128;15062:351;;;;:::o;15419:332::-;15540:4;15578:2;15567:9;15563:18;15555:26;;15591:71;15659:1;15648:9;15644:17;15635:6;15591:71;:::i;:::-;15672:72;15740:2;15729:9;15725:18;15716:6;15672:72;:::i;:::-;15419:332;;;;;:::o;15757:85::-;15802:7;15831:5;15820:16;;15757:85;;;:::o;15848:60::-;15876:3;15897:5;15890:12;;15848:60;;;:::o;15914:158::-;15972:9;16005:61;16023:42;16032:32;16058:5;16032:32;:::i;:::-;16023:42;:::i;:::-;16005:61;:::i;:::-;15992:74;;15914:158;;;:::o;16078:147::-;16173:45;16212:5;16173:45;:::i;:::-;16168:3;16161:58;16078:147;;:::o;16231:807::-;16480:4;16518:3;16507:9;16503:19;16495:27;;16532:71;16600:1;16589:9;16585:17;16576:6;16532:71;:::i;:::-;16613:72;16681:2;16670:9;16666:18;16657:6;16613:72;:::i;:::-;16695:80;16771:2;16760:9;16756:18;16747:6;16695:80;:::i;:::-;16785;16861:2;16850:9;16846:18;16837:6;16785:80;:::i;:::-;16875:73;16943:3;16932:9;16928:19;16919:6;16875:73;:::i;:::-;16958;17026:3;17015:9;17011:19;17002:6;16958:73;:::i;:::-;16231:807;;;;;;;;;:::o;17044:143::-;17101:5;17132:6;17126:13;17117:22;;17148:33;17175:5;17148:33;:::i;:::-;17044:143;;;;:::o;17193:663::-;17281:6;17289;17297;17346:2;17334:9;17325:7;17321:23;17317:32;17314:119;;;17352:79;;:::i;:::-;17314:119;17472:1;17497:64;17553:7;17544:6;17533:9;17529:22;17497:64;:::i;:::-;17487:74;;17443:128;17610:2;17636:64;17692:7;17683:6;17672:9;17668:22;17636:64;:::i;:::-;17626:74;;17581:129;17749:2;17775:64;17831:7;17822:6;17811:9;17807:22;17775:64;:::i;:::-;17765:74;;17720:129;17193:663;;;;;:::o;17862:332::-;17983:4;18021:2;18010:9;18006:18;17998:26;;18034:71;18102:1;18091:9;18087:17;18078:6;18034:71;:::i;:::-;18115:72;18183:2;18172:9;18168:18;18159:6;18115:72;:::i;:::-;17862:332;;;;;:::o;18200:137::-;18254:5;18285:6;18279:13;18270:22;;18301:30;18325:5;18301:30;:::i;:::-;18200:137;;;;:::o;18343:345::-;18410:6;18459:2;18447:9;18438:7;18434:23;18430:32;18427:119;;;18465:79;;:::i;:::-;18427:119;18585:1;18610:61;18663:7;18654:6;18643:9;18639:22;18610:61;:::i;:::-;18600:71;;18556:125;18343:345;;;;:::o;18694:223::-;18834:34;18830:1;18822:6;18818:14;18811:58;18903:6;18898:2;18890:6;18886:15;18879:31;18694:223;:::o;18923:366::-;19065:3;19086:67;19150:2;19145:3;19086:67;:::i;:::-;19079:74;;19162:93;19251:3;19162:93;:::i;:::-;19280:2;19275:3;19271:12;19264:19;;18923:366;;;:::o;19295:419::-;19461:4;19499:2;19488:9;19484:18;19476:26;;19548:9;19542:4;19538:20;19534:1;19523:9;19519:17;19512:47;19576:131;19702:4;19576:131;:::i;:::-;19568:139;;19295:419;;;:::o;19720:221::-;19860:34;19856:1;19848:6;19844:14;19837:58;19929:4;19924:2;19916:6;19912:15;19905:29;19720:221;:::o;19947:366::-;20089:3;20110:67;20174:2;20169:3;20110:67;:::i;:::-;20103:74;;20186:93;20275:3;20186:93;:::i;:::-;20304:2;20299:3;20295:12;20288:19;;19947:366;;;:::o;20319:419::-;20485:4;20523:2;20512:9;20508:18;20500:26;;20572:9;20566:4;20562:20;20558:1;20547:9;20543:17;20536:47;20600:131;20726:4;20600:131;:::i;:::-;20592:139;;20319:419;;;:::o;20744:224::-;20884:34;20880:1;20872:6;20868:14;20861:58;20953:7;20948:2;20940:6;20936:15;20929:32;20744:224;:::o;20974:366::-;21116:3;21137:67;21201:2;21196:3;21137:67;:::i;:::-;21130:74;;21213:93;21302:3;21213:93;:::i;:::-;21331:2;21326:3;21322:12;21315:19;;20974:366;;;:::o;21346:419::-;21512:4;21550:2;21539:9;21535:18;21527:26;;21599:9;21593:4;21589:20;21585:1;21574:9;21570:17;21563:47;21627:131;21753:4;21627:131;:::i;:::-;21619:139;;21346:419;;;:::o;21771:222::-;21911:34;21907:1;21899:6;21895:14;21888:58;21980:5;21975:2;21967:6;21963:15;21956:30;21771:222;:::o;21999:366::-;22141:3;22162:67;22226:2;22221:3;22162:67;:::i;:::-;22155:74;;22238:93;22327:3;22238:93;:::i;:::-;22356:2;22351:3;22347:12;22340:19;;21999:366;;;:::o;22371:419::-;22537:4;22575:2;22564:9;22560:18;22552:26;;22624:9;22618:4;22614:20;22610:1;22599:9;22595:17;22588:47;22652:131;22778:4;22652:131;:::i;:::-;22644:139;;22371:419;;;:::o;22796:228::-;22936:34;22932:1;22924:6;22920:14;22913:58;23005:11;23000:2;22992:6;22988:15;22981:36;22796:228;:::o;23030:366::-;23172:3;23193:67;23257:2;23252:3;23193:67;:::i;:::-;23186:74;;23269:93;23358:3;23269:93;:::i;:::-;23387:2;23382:3;23378:12;23371:19;;23030:366;;;:::o;23402:419::-;23568:4;23606:2;23595:9;23591:18;23583:26;;23655:9;23649:4;23645:20;23641:1;23630:9;23626:17;23619:47;23683:131;23809:4;23683:131;:::i;:::-;23675:139;;23402:419;;;:::o;23827:223::-;23967:34;23963:1;23955:6;23951:14;23944:58;24036:6;24031:2;24023:6;24019:15;24012:31;23827:223;:::o;24056:366::-;24198:3;24219:67;24283:2;24278:3;24219:67;:::i;:::-;24212:74;;24295:93;24384:3;24295:93;:::i;:::-;24413:2;24408:3;24404:12;24397:19;;24056:366;;;:::o;24428:419::-;24594:4;24632:2;24621:9;24617:18;24609:26;;24681:9;24675:4;24671:20;24667:1;24656:9;24652:17;24645:47;24709:131;24835:4;24709:131;:::i;:::-;24701:139;;24428:419;;;:::o;24853:175::-;24993:27;24989:1;24981:6;24977:14;24970:51;24853:175;:::o;25034:366::-;25176:3;25197:67;25261:2;25256:3;25197:67;:::i;:::-;25190:74;;25273:93;25362:3;25273:93;:::i;:::-;25391:2;25386:3;25382:12;25375:19;;25034:366;;;:::o;25406:419::-;25572:4;25610:2;25599:9;25595:18;25587:26;;25659:9;25653:4;25649:20;25645:1;25634:9;25630:17;25623:47;25687:131;25813:4;25687:131;:::i;:::-;25679:139;;25406:419;;;:::o;25831:191::-;25871:3;25890:20;25908:1;25890:20;:::i;:::-;25885:25;;25924:20;25942:1;25924:20;:::i;:::-;25919:25;;25967:1;25964;25960:9;25953:16;;25988:3;25985:1;25982:10;25979:36;;;25995:18;;:::i;:::-;25979:36;25831:191;;;;:::o;26028:176::-;26168:28;26164:1;26156:6;26152:14;26145:52;26028:176;:::o;26210:366::-;26352:3;26373:67;26437:2;26432:3;26373:67;:::i;:::-;26366:74;;26449:93;26538:3;26449:93;:::i;:::-;26567:2;26562:3;26558:12;26551:19;;26210:366;;;:::o;26582:419::-;26748:4;26786:2;26775:9;26771:18;26763:26;;26835:9;26829:4;26825:20;26821:1;26810:9;26806:17;26799:47;26863:131;26989:4;26863:131;:::i;:::-;26855:139;;26582:419;;;:::o;27007:194::-;27047:4;27067:20;27085:1;27067:20;:::i;:::-;27062:25;;27101:20;27119:1;27101:20;:::i;:::-;27096:25;;27145:1;27142;27138:9;27130:17;;27169:1;27163:4;27160:11;27157:37;;;27174:18;;:::i;:::-;27157:37;27007:194;;;;:::o;27207:114::-;27274:6;27308:5;27302:12;27292:22;;27207:114;;;:::o;27327:184::-;27426:11;27460:6;27455:3;27448:19;27500:4;27495:3;27491:14;27476:29;;27327:184;;;;:::o;27517:132::-;27584:4;27607:3;27599:11;;27637:4;27632:3;27628:14;27620:22;;27517:132;;;:::o;27655:108::-;27732:24;27750:5;27732:24;:::i;:::-;27727:3;27720:37;27655:108;;:::o;27769:179::-;27838:10;27859:46;27901:3;27893:6;27859:46;:::i;:::-;27937:4;27932:3;27928:14;27914:28;;27769:179;;;;:::o;27954:113::-;28024:4;28056;28051:3;28047:14;28039:22;;27954:113;;;:::o;28103:732::-;28222:3;28251:54;28299:5;28251:54;:::i;:::-;28321:86;28400:6;28395:3;28321:86;:::i;:::-;28314:93;;28431:56;28481:5;28431:56;:::i;:::-;28510:7;28541:1;28526:284;28551:6;28548:1;28545:13;28526:284;;;28627:6;28621:13;28654:63;28713:3;28698:13;28654:63;:::i;:::-;28647:70;;28740:60;28793:6;28740:60;:::i;:::-;28730:70;;28586:224;28573:1;28570;28566:9;28561:14;;28526:284;;;28530:14;28826:3;28819:10;;28227:608;;;28103:732;;;;:::o;28841:831::-;29104:4;29142:3;29131:9;29127:19;29119:27;;29156:71;29224:1;29213:9;29209:17;29200:6;29156:71;:::i;:::-;29237:80;29313:2;29302:9;29298:18;29289:6;29237:80;:::i;:::-;29364:9;29358:4;29354:20;29349:2;29338:9;29334:18;29327:48;29392:108;29495:4;29486:6;29392:108;:::i;:::-;29384:116;;29510:72;29578:2;29567:9;29563:18;29554:6;29510:72;:::i;:::-;29592:73;29660:3;29649:9;29645:19;29636:6;29592:73;:::i;:::-;28841:831;;;;;;;;:::o;29678:180::-;29726:77;29723:1;29716:88;29823:4;29820:1;29813:15;29847:4;29844:1;29837:15;29864:185;29904:1;29921:20;29939:1;29921:20;:::i;:::-;29916:25;;29955:20;29973:1;29955:20;:::i;:::-;29950:25;;29994:1;29984:35;;29999:18;;:::i;:::-;29984:35;30041:1;30038;30034:9;30029:14;;29864:185;;;;:::o;30055:220::-;30195:34;30191:1;30183:6;30179:14;30172:58;30264:3;30259:2;30251:6;30247:15;30240:28;30055:220;:::o;30281:366::-;30423:3;30444:67;30508:2;30503:3;30444:67;:::i;:::-;30437:74;;30520:93;30609:3;30520:93;:::i;:::-;30638:2;30633:3;30629:12;30622:19;;30281:366;;;:::o;30653:419::-;30819:4;30857:2;30846:9;30842:18;30834:26;;30906:9;30900:4;30896:20;30892:1;30881:9;30877:17;30870:47;30934:131;31060:4;30934:131;:::i;:::-;30926:139;;30653:419;;;:::o;31078:177::-;31218:29;31214:1;31206:6;31202:14;31195:53;31078:177;:::o;31261:366::-;31403:3;31424:67;31488:2;31483:3;31424:67;:::i;:::-;31417:74;;31500:93;31589:3;31500:93;:::i;:::-;31618:2;31613:3;31609:12;31602:19;;31261:366;;;:::o;31633:419::-;31799:4;31837:2;31826:9;31822:18;31814:26;;31886:9;31880:4;31876:20;31872:1;31861:9;31857:17;31850:47;31914:131;32040:4;31914:131;:::i;:::-;31906:139;;31633:419;;;:::o

Swarm Source

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