ETH Price: $3,086.02 (-0.08%)
Gas: 5 Gwei

Token

Chinese Gov Metaverse (CGM)
 

Overview

Max Total Supply

100,000,000,000 CGM

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
849,150,000 CGM

Value
$0.00
0xA997D55788a11B79565e79F9FBD5a4A7447a10FD
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:
CHINESEGOVMETAVERSE

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-24
*/

// SPDX-License-Identifier: UNLICENSED

/*

https://t.me/ChineseGovMetaverse

*/

pragma solidity 0.8.15;

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;
    }
}

interface ERC20 {
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() external onlyOwner {
        owner = address(0);
    }

}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract CHINESEGOVMETAVERSE is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Chinese Gov Metaverse";
    string public constant symbol = "CGM";
    uint8 public constant decimals = 9;
    
    uint256 public constant totalSupply = 100 * 10**9 * 10**decimals;

    uint256 public _maxTxAmount = totalSupply / 100;
    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256  totalFee = 10;
    uint256 constant feeDenominator = 100;
    
    uint256 buyMultiplier = 150;
    uint256 sellMultiplier = 150;
    uint256 transferMultiplier = 0;

    address operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public swapEnabled = true;
    uint256 swapThreshold = totalSupply / 100;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        operationsFeeReceiver = msg.sender;

        isFeeExempt[msg.sender] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function manage_FeeExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isFeeExempt[addresses[i]] = status;
        }
    }

    function manage_WalletLimitExempt(address[] calldata addresses, bool status) external onlyOwner {
        require(addresses.length < 501,"GAS Error: max limit is 500 addresses");
        for (uint256 i=0; i < addresses.length; ++i) {
            isWalletLimitExempt[addresses[i]] = status;
        }
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if (!isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }
    
        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setFees_base100(uint256 _operationsFee) external onlyOwner {
        totalFee = _operationsFee;
    }


    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        uint256 amountToClear = ( amountETH * amountPercentage ) / 100;
        payable(msg.sender).transfer(amountToClear);
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external onlyOwner returns (bool success) {
        if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        return ERC20(tokenAddress).transfer(msg.sender, tokens);
    }

    function swapBack() internal swapping {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        (bool tmpSuccess,) = payable(operationsFeeReceiver).call{value: amountETH}("");
        tmpSuccess = false;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_FeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_WalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_operationsFee","type":"uint256"}],"name":"setFees_base100","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}]

60c060405260646009600a62000016919062000877565b64174876e800620000289190620008c8565b62000034919062000958565b60015560646009600a62000049919062000877565b64174876e8006200005b9190620008c8565b62000067919062000958565b600255600a600755609660085560966009556000600a556001600c60146101000a81548160ff02191690831515021790555060646009600a620000ab919062000877565b64174876e800620000bd9190620008c8565b620000c9919062000958565b600d55348015620000d957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002059190620009fa565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002a6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002cc9190620009fa565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b81526004016200030a92919062000a3d565b6020604051808303816000875af11580156200032a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003509190620009fa565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a620005f9919062000877565b64174876e8006200060b9190620008c8565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620006ae919062000877565b64174876e800620006c09190620008c8565b604051620006cf919062000a7b565b60405180910390a362000a98565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200076b57808604811115620007435762000742620006dd565b5b6001851615620007535780820291505b808102905062000763856200070c565b945062000723565b94509492505050565b60008262000786576001905062000859565b8162000796576000905062000859565b8160018114620007af5760028114620007ba57620007f0565b600191505062000859565b60ff841115620007cf57620007ce620006dd565b5b8360020a915084821115620007e957620007e8620006dd565b5b5062000859565b5060208310610133831016604e8410600b84101617156200082a5782820a905083811115620008245762000823620006dd565b5b62000859565b62000839848484600162000719565b92509050818404811115620008535762000852620006dd565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008848262000860565b915062000891836200086a565b9250620008c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000774565b905092915050565b6000620008d58262000860565b9150620008e28362000860565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200091e576200091d620006dd565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009658262000860565b9150620009728362000860565b92508262000985576200098462000929565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009c28262000995565b9050919050565b620009d481620009b5565b8114620009e057600080fd5b50565b600081519050620009f481620009c9565b92915050565b60006020828403121562000a135762000a1262000990565b5b600062000a2384828501620009e3565b91505092915050565b62000a3781620009b5565b82525050565b600060408201905062000a54600083018562000a2c565b62000a63602083018462000a2c565b9392505050565b62000a758162000860565b82525050565b600060208201905062000a92600083018462000a6a565b92915050565b60805160a0516130ef62000ada600039600081816112ba015281816115df01528181611b3e01528181611ead0152611f0a01526000611cc901526130ef6000f3fe6080604052600436106101c45760003560e01c80636ddd1713116100f757806395d89b4111610095578063c867d60b11610064578063c867d60b14610673578063dd62ed3e146106b0578063df20fd49146106ed578063f887ea4014610716576101cb565b806395d89b41146105b7578063a8aa1b31146105e2578063a9059cbb1461060d578063c33e9eba1461064a576101cb565b806377b54bad116100d157806377b54bad146104f957806378109e54146105365780637d1db4a514610561578063893d20e81461058c576101cb565b80636ddd17131461047a57806370a08231146104a5578063715018a6146104e2576101cb565b806323b872dd11610164578063313ce5671161013e578063313ce567146103ac5780633f4218e0146103d7578063571ac8b0146104145780636ce46bc314610451576101cb565b806323b872dd146103075780632b112e49146103445780632f54bf6e1461036f576101cb565b806309302dc6116101a057806309302dc61461024d578063095ea7b31461027657806318160ddd146102b35780631da1db5e146102de576101cb565b8062108683146101d0578062bff446146101f957806306fdde0314610222576101cb565b366101cb57005b600080fd5b3480156101dc57600080fd5b506101f760048036038101906101f29190612344565b610741565b005b34801561020557600080fd5b50610220600480360381019061021b9190612344565b610873565b005b34801561022e57600080fd5b506102376109a5565b604051610244919061243d565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612495565b6109de565b005b34801561028257600080fd5b5061029d60048036038101906102989190612520565b610aa9565b6040516102aa919061256f565b60405180910390f35b3480156102bf57600080fd5b506102c8610b9b565b6040516102d59190612599565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190612495565b610bbc565b005b34801561031357600080fd5b5061032e600480360381019061032991906125b4565b610c71565b60405161033b919061256f565b60405180910390f35b34801561035057600080fd5b50610359610e71565b6040516103669190612599565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612607565b610f2c565b6040516103a3919061256f565b60405180910390f35b3480156103b857600080fd5b506103c1610f85565b6040516103ce9190612650565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190612607565b610f8a565b60405161040b919061256f565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190612607565b610faa565b604051610448919061256f565b60405180910390f35b34801561045d57600080fd5b506104786004803603810190610473919061266b565b610fdd565b005b34801561048657600080fd5b5061048f61103f565b60405161049c919061256f565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c79190612607565b611052565b6040516104d99190612599565b60405180910390f35b3480156104ee57600080fd5b506104f761106a565b005b34801561050557600080fd5b50610520600480360381019061051b9190612520565b6110f5565b60405161052d919061256f565b60405180910390f35b34801561054257600080fd5b5061054b61124a565b6040516105589190612599565b60405180910390f35b34801561056d57600080fd5b50610576611250565b6040516105839190612599565b60405180910390f35b34801561059857600080fd5b506105a1611256565b6040516105ae91906126cd565b60405180910390f35b3480156105c357600080fd5b506105cc61127f565b6040516105d9919061243d565b60405180910390f35b3480156105ee57600080fd5b506105f76112b8565b60405161060491906126cd565b60405180910390f35b34801561061957600080fd5b50610634600480360381019061062f9190612520565b6112dc565b604051610641919061256f565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190612495565b6112f1565b005b34801561067f57600080fd5b5061069a60048036038101906106959190612607565b611343565b6040516106a7919061256f565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d291906126e8565b611363565b6040516106e49190612599565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190612728565b6113ea565b005b34801561072257600080fd5b5061072b61147f565b60405161073891906127c7565b60405180910390f35b61074a33610f2c565b610789576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107809061282e565b60405180910390fd5b6101f583839050106107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c7906128c0565b60405180910390fd5b60005b8383905081101561086d5781600660008686858181106107f6576107f56128e0565b5b905060200201602081019061080b9190612607565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806108669061293e565b90506107d3565b50505050565b61087c33610f2c565b6108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b29061282e565b60405180910390fd5b6101f58383905010610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f9906128c0565b60405180910390fd5b60005b8383905081101561099f578160056000868685818110610928576109276128e0565b5b905060200201602081019061093d9190612607565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806109989061293e565b9050610905565b50505050565b6040518060400160405280601581526020017f4368696e65736520476f76204d6574617665727365000000000000000000000081525081565b6109e733610f2c565b610a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1d9061282e565b60405180910390fd5b600a811015610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a61906129f8565b60405180910390fd5b6103e8816009600a610a7c9190612b4b565b64174876e800610a8c9190612b96565b610a969190612b96565b610aa09190612c1f565b60028190555050565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b899190612599565b60405180910390a36001905092915050565b6009600a610ba99190612b4b565b64174876e800610bb99190612b96565b81565b610bc533610f2c565b610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb9061282e565b60405180910390fd5b6000479050600060648383610c199190612b96565b610c239190612c1f565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c6b573d6000803e3d6000fd5b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e5d57610ddc826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a59092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e68848484611509565b90509392505050565b6000600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a610f039190612b4b565b64174876e800610f139190612b96565b610f1d9190612c50565b610f279190612c50565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600981565b60056020528060005260406000206000915054906101000a900460ff1681565b6000610fd6827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610aa9565b9050919050565b610fe633610f2c565b611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c9061282e565b60405180910390fd5b816009819055508260088190555080600a81905550505050565b600c60149054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b61107333610f2c565b6110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a99061282e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061110033610f2c565b61113f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111369061282e565b60405180910390fd5b600082036111c4578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161118091906126cd565b602060405180830381865afa15801561119d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c19190612c99565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016111ff929190612cc6565b6020604051808303816000875af115801561121e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112429190612d04565b905092915050565b60025481565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f43474d000000000000000000000000000000000000000000000000000000000081525081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006112e9338484611509565b905092915050565b6112fa33610f2c565b611339576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113309061282e565b60405180910390fd5b8060078190555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113f333610f2c565b611432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114299061282e565b60405180910390fd5b81600c60146101000a81548160ff021916908315150217905550806009600a61145b9190612b4b565b64174876e80061146b9190612b96565b6114759190612c1f565b600d819055505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383111582906114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e4919061243d565b60405180910390fd5b50600083856114fc9190612c50565b9050809150509392505050565b6000600e60009054906101000a900460ff16156115325761152b848484611967565b9050611960565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115d65750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561162e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116c35760025482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116819190612d31565b11156116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990612dd3565b60405180910390fd5b5b6116cb611b3a565b156116d9576116d8611c0f565b5b611762826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a59092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118485750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61185c57611857858486611e85565b61185e565b825b90506118b281600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ce90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119529190612599565b60405180910390a360019150505b9392505050565b60006119f2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a59092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a8782600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ce90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b279190612599565b60405180910390a3600190509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611ba55750600e60009054906101000a900460ff16155b8015611bbd5750600c60149054906101000a900460ff165b8015611c0a5750600d54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001600e60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c4757611c46612df3565b5b604051908082528060200260200182016040528015611c755781602001602082028036833780820191505090505b5090503081600081518110611c8d57611c8c6128e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611cfc57611cfb6128e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947600d5460008430426040518663ffffffff1660e01b8152600401611d9c959493929190612f1b565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b5050505060004790506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e1b90612fa6565b60006040518083038185875af1925050503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b50509050600090505050506000600e60006101000a81548160ff021916908315150217905550565b600080831480611e9757506000600754145b15611ea4578290506120c7565b6000600a5490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f08576009549050611f62565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f615760085490505b5b6000611fa9606480611f749190612b96565b611f9b84611f8d6007548a61212c90919063ffffffff16565b61212c90919063ffffffff16565b6121a690919063ffffffff16565b905060008111156120af5761200681600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ce90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120a69190612599565b60405180910390a35b6120c281866121f090919063ffffffff16565b925050505b9392505050565b60008082846120dd9190612d31565b905083811015612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990613007565b60405180910390fd5b8091505092915050565b600080830361213e57600090506121a0565b6000828461214c9190612b96565b905082848261215b9190612c1f565b1461219b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219290613099565b60405180910390fd5b809150505b92915050565b60006121e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223a565b905092915050565b600061223283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114a5565b905092915050565b60008083118290612281576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612278919061243d565b60405180910390fd5b50600083856122909190612c1f565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126122cc576122cb6122a7565b5b8235905067ffffffffffffffff8111156122e9576122e86122ac565b5b602083019150836020820283011115612305576123046122b1565b5b9250929050565b60008115159050919050565b6123218161230c565b811461232c57600080fd5b50565b60008135905061233e81612318565b92915050565b60008060006040848603121561235d5761235c61229d565b5b600084013567ffffffffffffffff81111561237b5761237a6122a2565b5b612387868287016122b6565b9350935050602061239a8682870161232f565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b838110156123de5780820151818401526020810190506123c3565b838111156123ed576000848401525b50505050565b6000601f19601f8301169050919050565b600061240f826123a4565b61241981856123af565b93506124298185602086016123c0565b612432816123f3565b840191505092915050565b600060208201905081810360008301526124578184612404565b905092915050565b6000819050919050565b6124728161245f565b811461247d57600080fd5b50565b60008135905061248f81612469565b92915050565b6000602082840312156124ab576124aa61229d565b5b60006124b984828501612480565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124ed826124c2565b9050919050565b6124fd816124e2565b811461250857600080fd5b50565b60008135905061251a816124f4565b92915050565b600080604083850312156125375761253661229d565b5b60006125458582860161250b565b925050602061255685828601612480565b9150509250929050565b6125698161230c565b82525050565b60006020820190506125846000830184612560565b92915050565b6125938161245f565b82525050565b60006020820190506125ae600083018461258a565b92915050565b6000806000606084860312156125cd576125cc61229d565b5b60006125db8682870161250b565b93505060206125ec8682870161250b565b92505060406125fd86828701612480565b9150509250925092565b60006020828403121561261d5761261c61229d565b5b600061262b8482850161250b565b91505092915050565b600060ff82169050919050565b61264a81612634565b82525050565b60006020820190506126656000830184612641565b92915050565b6000806000606084860312156126845761268361229d565b5b600061269286828701612480565b93505060206126a386828701612480565b92505060406126b486828701612480565b9150509250925092565b6126c7816124e2565b82525050565b60006020820190506126e260008301846126be565b92915050565b600080604083850312156126ff576126fe61229d565b5b600061270d8582860161250b565b925050602061271e8582860161250b565b9150509250929050565b6000806040838503121561273f5761273e61229d565b5b600061274d8582860161232f565b925050602061275e85828601612480565b9150509250929050565b6000819050919050565b600061278d612788612783846124c2565b612768565b6124c2565b9050919050565b600061279f82612772565b9050919050565b60006127b182612794565b9050919050565b6127c1816127a6565b82525050565b60006020820190506127dc60008301846127b8565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128186006836123af565b9150612823826127e2565b602082019050919050565b600060208201905081810360008301526128478161280b565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b60006128aa6025836123af565b91506128b58261284e565b604082019050919050565b600060208201905081810360008301526128d98161289d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129498261245f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361297b5761297a61290f565b5b600182019050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006129e26022836123af565b91506129ed82612986565b604082019050919050565b60006020820190508181036000830152612a11816129d5565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612a6f57808604811115612a4b57612a4a61290f565b5b6001851615612a5a5780820291505b8081029050612a6885612a18565b9450612a2f565b94509492505050565b600082612a885760019050612b44565b81612a965760009050612b44565b8160018114612aac5760028114612ab657612ae5565b6001915050612b44565b60ff841115612ac857612ac761290f565b5b8360020a915084821115612adf57612ade61290f565b5b50612b44565b5060208310610133831016604e8410600b8410161715612b1a5782820a905083811115612b1557612b1461290f565b5b612b44565b612b278484846001612a25565b92509050818404811115612b3e57612b3d61290f565b5b81810290505b9392505050565b6000612b568261245f565b9150612b6183612634565b9250612b8e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a78565b905092915050565b6000612ba18261245f565b9150612bac8361245f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612be557612be461290f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c2a8261245f565b9150612c358361245f565b925082612c4557612c44612bf0565b5b828204905092915050565b6000612c5b8261245f565b9150612c668361245f565b925082821015612c7957612c7861290f565b5b828203905092915050565b600081519050612c9381612469565b92915050565b600060208284031215612caf57612cae61229d565b5b6000612cbd84828501612c84565b91505092915050565b6000604082019050612cdb60008301856126be565b612ce8602083018461258a565b9392505050565b600081519050612cfe81612318565b92915050565b600060208284031215612d1a57612d1961229d565b5b6000612d2884828501612cef565b91505092915050565b6000612d3c8261245f565b9150612d478361245f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d7c57612d7b61290f565b5b828201905092915050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000612dbd6018836123af565b9150612dc882612d87565b602082019050919050565b60006020820190508181036000830152612dec81612db0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000612e47612e42612e3d84612e22565b612768565b61245f565b9050919050565b612e5781612e2c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e92816124e2565b82525050565b6000612ea48383612e89565b60208301905092915050565b6000602082019050919050565b6000612ec882612e5d565b612ed28185612e68565b9350612edd83612e79565b8060005b83811015612f0e578151612ef58882612e98565b9750612f0083612eb0565b925050600181019050612ee1565b5085935050505092915050565b600060a082019050612f30600083018861258a565b612f3d6020830187612e4e565b8181036040830152612f4f8186612ebd565b9050612f5e60608301856126be565b612f6b608083018461258a565b9695505050505050565b600081905092915050565b50565b6000612f90600083612f75565b9150612f9b82612f80565b600082019050919050565b6000612fb182612f83565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612ff1601b836123af565b9150612ffc82612fbb565b602082019050919050565b6000602082019050818103600083015261302081612fe4565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130836021836123af565b915061308e82613027565b604082019050919050565b600060208201905081810360008301526130b281613076565b905091905056fea264697066735822122021275f39313c799df7448851e25f070c9e8f8212a1e8cc10166237b44a00fcec64736f6c634300080f0033

Deployed Bytecode

0x6080604052600436106101c45760003560e01c80636ddd1713116100f757806395d89b4111610095578063c867d60b11610064578063c867d60b14610673578063dd62ed3e146106b0578063df20fd49146106ed578063f887ea4014610716576101cb565b806395d89b41146105b7578063a8aa1b31146105e2578063a9059cbb1461060d578063c33e9eba1461064a576101cb565b806377b54bad116100d157806377b54bad146104f957806378109e54146105365780637d1db4a514610561578063893d20e81461058c576101cb565b80636ddd17131461047a57806370a08231146104a5578063715018a6146104e2576101cb565b806323b872dd11610164578063313ce5671161013e578063313ce567146103ac5780633f4218e0146103d7578063571ac8b0146104145780636ce46bc314610451576101cb565b806323b872dd146103075780632b112e49146103445780632f54bf6e1461036f576101cb565b806309302dc6116101a057806309302dc61461024d578063095ea7b31461027657806318160ddd146102b35780631da1db5e146102de576101cb565b8062108683146101d0578062bff446146101f957806306fdde0314610222576101cb565b366101cb57005b600080fd5b3480156101dc57600080fd5b506101f760048036038101906101f29190612344565b610741565b005b34801561020557600080fd5b50610220600480360381019061021b9190612344565b610873565b005b34801561022e57600080fd5b506102376109a5565b604051610244919061243d565b60405180910390f35b34801561025957600080fd5b50610274600480360381019061026f9190612495565b6109de565b005b34801561028257600080fd5b5061029d60048036038101906102989190612520565b610aa9565b6040516102aa919061256f565b60405180910390f35b3480156102bf57600080fd5b506102c8610b9b565b6040516102d59190612599565b60405180910390f35b3480156102ea57600080fd5b5061030560048036038101906103009190612495565b610bbc565b005b34801561031357600080fd5b5061032e600480360381019061032991906125b4565b610c71565b60405161033b919061256f565b60405180910390f35b34801561035057600080fd5b50610359610e71565b6040516103669190612599565b60405180910390f35b34801561037b57600080fd5b5061039660048036038101906103919190612607565b610f2c565b6040516103a3919061256f565b60405180910390f35b3480156103b857600080fd5b506103c1610f85565b6040516103ce9190612650565b60405180910390f35b3480156103e357600080fd5b506103fe60048036038101906103f99190612607565b610f8a565b60405161040b919061256f565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190612607565b610faa565b604051610448919061256f565b60405180910390f35b34801561045d57600080fd5b506104786004803603810190610473919061266b565b610fdd565b005b34801561048657600080fd5b5061048f61103f565b60405161049c919061256f565b60405180910390f35b3480156104b157600080fd5b506104cc60048036038101906104c79190612607565b611052565b6040516104d99190612599565b60405180910390f35b3480156104ee57600080fd5b506104f761106a565b005b34801561050557600080fd5b50610520600480360381019061051b9190612520565b6110f5565b60405161052d919061256f565b60405180910390f35b34801561054257600080fd5b5061054b61124a565b6040516105589190612599565b60405180910390f35b34801561056d57600080fd5b50610576611250565b6040516105839190612599565b60405180910390f35b34801561059857600080fd5b506105a1611256565b6040516105ae91906126cd565b60405180910390f35b3480156105c357600080fd5b506105cc61127f565b6040516105d9919061243d565b60405180910390f35b3480156105ee57600080fd5b506105f76112b8565b60405161060491906126cd565b60405180910390f35b34801561061957600080fd5b50610634600480360381019061062f9190612520565b6112dc565b604051610641919061256f565b60405180910390f35b34801561065657600080fd5b50610671600480360381019061066c9190612495565b6112f1565b005b34801561067f57600080fd5b5061069a60048036038101906106959190612607565b611343565b6040516106a7919061256f565b60405180910390f35b3480156106bc57600080fd5b506106d760048036038101906106d291906126e8565b611363565b6040516106e49190612599565b60405180910390f35b3480156106f957600080fd5b50610714600480360381019061070f9190612728565b6113ea565b005b34801561072257600080fd5b5061072b61147f565b60405161073891906127c7565b60405180910390f35b61074a33610f2c565b610789576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107809061282e565b60405180910390fd5b6101f583839050106107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c7906128c0565b60405180910390fd5b60005b8383905081101561086d5781600660008686858181106107f6576107f56128e0565b5b905060200201602081019061080b9190612607565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806108669061293e565b90506107d3565b50505050565b61087c33610f2c565b6108bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b29061282e565b60405180910390fd5b6101f58383905010610902576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f9906128c0565b60405180910390fd5b60005b8383905081101561099f578160056000868685818110610928576109276128e0565b5b905060200201602081019061093d9190612607565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806109989061293e565b9050610905565b50505050565b6040518060400160405280601581526020017f4368696e65736520476f76204d6574617665727365000000000000000000000081525081565b6109e733610f2c565b610a26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1d9061282e565b60405180910390fd5b600a811015610a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a61906129f8565b60405180910390fd5b6103e8816009600a610a7c9190612b4b565b64174876e800610a8c9190612b96565b610a969190612b96565b610aa09190612c1f565b60028190555050565b600081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b899190612599565b60405180910390a36001905092915050565b6009600a610ba99190612b4b565b64174876e800610bb99190612b96565b81565b610bc533610f2c565b610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb9061282e565b60405180910390fd5b6000479050600060648383610c199190612b96565b610c239190612c1f565b90503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610c6b573d6000803e3d6000fd5b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610e5d57610ddc826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a59092919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610e68848484611509565b90509392505050565b6000600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546009600a610f039190612b4b565b64174876e800610f139190612b96565b610f1d9190612c50565b610f279190612c50565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b600981565b60056020528060005260406000206000915054906101000a900460ff1681565b6000610fd6827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610aa9565b9050919050565b610fe633610f2c565b611025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101c9061282e565b60405180910390fd5b816009819055508260088190555080600a81905550505050565b600c60149054906101000a900460ff1681565b60036020528060005260406000206000915090505481565b61107333610f2c565b6110b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a99061282e565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600061110033610f2c565b61113f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111369061282e565b60405180910390fd5b600082036111c4578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161118091906126cd565b602060405180830381865afa15801561119d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c19190612c99565b91505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016111ff929190612cc6565b6020604051808303816000875af115801561121e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112429190612d04565b905092915050565b60025481565b60015481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6040518060400160405280600381526020017f43474d000000000000000000000000000000000000000000000000000000000081525081565b7f0000000000000000000000005816194b76916c72a42e8a10c2b4d46fa44122a181565b60006112e9338484611509565b905092915050565b6112fa33610f2c565b611339576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113309061282e565b60405180910390fd5b8060078190555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113f333610f2c565b611432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114299061282e565b60405180910390fd5b81600c60146101000a81548160ff021916908315150217905550806009600a61145b9190612b4b565b64174876e80061146b9190612b96565b6114759190612c1f565b600d819055505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008383111582906114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e4919061243d565b60405180910390fd5b50600083856114fc9190612c50565b9050809150509392505050565b6000600e60009054906101000a900460ff16156115325761152b848484611967565b9050611960565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115d65750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561162e57507f0000000000000000000000005816194b76916c72a42e8a10c2b4d46fa44122a173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156116c35760025482600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116819190612d31565b11156116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990612dd3565b60405180910390fd5b5b6116cb611b3a565b156116d9576116d8611c0f565b5b611762826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a59092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118485750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61185c57611857858486611e85565b61185e565b825b90506118b281600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ce90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119529190612599565b60405180910390a360019150505b9392505050565b60006119f2826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a59092919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a8782600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ce90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b279190612599565b60405180910390a3600190509392505050565b60007f0000000000000000000000005816194b76916c72a42e8a10c2b4d46fa44122a173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611ba55750600e60009054906101000a900460ff16155b8015611bbd5750600c60149054906101000a900460ff165b8015611c0a5750600d54600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001600e60006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611c4757611c46612df3565b5b604051908082528060200260200182016040528015611c755781602001602082028036833780820191505090505b5090503081600081518110611c8d57611c8c6128e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611cfc57611cfb6128e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947600d5460008430426040518663ffffffff1660e01b8152600401611d9c959493929190612f1b565b600060405180830381600087803b158015611db657600080fd5b505af1158015611dca573d6000803e3d6000fd5b5050505060004790506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e1b90612fa6565b60006040518083038185875af1925050503d8060008114611e58576040519150601f19603f3d011682016040523d82523d6000602084013e611e5d565b606091505b50509050600090505050506000600e60006101000a81548160ff021916908315150217905550565b600080831480611e9757506000600754145b15611ea4578290506120c7565b6000600a5490507f0000000000000000000000005816194b76916c72a42e8a10c2b4d46fa44122a173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f08576009549050611f62565b7f0000000000000000000000005816194b76916c72a42e8a10c2b4d46fa44122a173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611f615760085490505b5b6000611fa9606480611f749190612b96565b611f9b84611f8d6007548a61212c90919063ffffffff16565b61212c90919063ffffffff16565b6121a690919063ffffffff16565b905060008111156120af5761200681600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ce90919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120a69190612599565b60405180910390a35b6120c281866121f090919063ffffffff16565b925050505b9392505050565b60008082846120dd9190612d31565b905083811015612122576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161211990613007565b60405180910390fd5b8091505092915050565b600080830361213e57600090506121a0565b6000828461214c9190612b96565b905082848261215b9190612c1f565b1461219b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219290613099565b60405180910390fd5b809150505b92915050565b60006121e883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061223a565b905092915050565b600061223283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506114a5565b905092915050565b60008083118290612281576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612278919061243d565b60405180910390fd5b50600083856122909190612c1f565b9050809150509392505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b60008083601f8401126122cc576122cb6122a7565b5b8235905067ffffffffffffffff8111156122e9576122e86122ac565b5b602083019150836020820283011115612305576123046122b1565b5b9250929050565b60008115159050919050565b6123218161230c565b811461232c57600080fd5b50565b60008135905061233e81612318565b92915050565b60008060006040848603121561235d5761235c61229d565b5b600084013567ffffffffffffffff81111561237b5761237a6122a2565b5b612387868287016122b6565b9350935050602061239a8682870161232f565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b838110156123de5780820151818401526020810190506123c3565b838111156123ed576000848401525b50505050565b6000601f19601f8301169050919050565b600061240f826123a4565b61241981856123af565b93506124298185602086016123c0565b612432816123f3565b840191505092915050565b600060208201905081810360008301526124578184612404565b905092915050565b6000819050919050565b6124728161245f565b811461247d57600080fd5b50565b60008135905061248f81612469565b92915050565b6000602082840312156124ab576124aa61229d565b5b60006124b984828501612480565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006124ed826124c2565b9050919050565b6124fd816124e2565b811461250857600080fd5b50565b60008135905061251a816124f4565b92915050565b600080604083850312156125375761253661229d565b5b60006125458582860161250b565b925050602061255685828601612480565b9150509250929050565b6125698161230c565b82525050565b60006020820190506125846000830184612560565b92915050565b6125938161245f565b82525050565b60006020820190506125ae600083018461258a565b92915050565b6000806000606084860312156125cd576125cc61229d565b5b60006125db8682870161250b565b93505060206125ec8682870161250b565b92505060406125fd86828701612480565b9150509250925092565b60006020828403121561261d5761261c61229d565b5b600061262b8482850161250b565b91505092915050565b600060ff82169050919050565b61264a81612634565b82525050565b60006020820190506126656000830184612641565b92915050565b6000806000606084860312156126845761268361229d565b5b600061269286828701612480565b93505060206126a386828701612480565b92505060406126b486828701612480565b9150509250925092565b6126c7816124e2565b82525050565b60006020820190506126e260008301846126be565b92915050565b600080604083850312156126ff576126fe61229d565b5b600061270d8582860161250b565b925050602061271e8582860161250b565b9150509250929050565b6000806040838503121561273f5761273e61229d565b5b600061274d8582860161232f565b925050602061275e85828601612480565b9150509250929050565b6000819050919050565b600061278d612788612783846124c2565b612768565b6124c2565b9050919050565b600061279f82612772565b9050919050565b60006127b182612794565b9050919050565b6127c1816127a6565b82525050565b60006020820190506127dc60008301846127b8565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006128186006836123af565b9150612823826127e2565b602082019050919050565b600060208201905081810360008301526128478161280b565b9050919050565b7f474153204572726f723a206d6178206c696d697420697320353030206164647260008201527f6573736573000000000000000000000000000000000000000000000000000000602082015250565b60006128aa6025836123af565b91506128b58261284e565b604082019050919050565b600060208201905081810360008301526128d98161289d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129498261245f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361297b5761297a61290f565b5b600182019050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e2060008201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b60006129e26022836123af565b91506129ed82612986565b604082019050919050565b60006020820190508181036000830152612a11816129d5565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612a6f57808604811115612a4b57612a4a61290f565b5b6001851615612a5a5780820291505b8081029050612a6885612a18565b9450612a2f565b94509492505050565b600082612a885760019050612b44565b81612a965760009050612b44565b8160018114612aac5760028114612ab657612ae5565b6001915050612b44565b60ff841115612ac857612ac761290f565b5b8360020a915084821115612adf57612ade61290f565b5b50612b44565b5060208310610133831016604e8410600b8410161715612b1a5782820a905083811115612b1557612b1461290f565b5b612b44565b612b278484846001612a25565b92509050818404811115612b3e57612b3d61290f565b5b81810290505b9392505050565b6000612b568261245f565b9150612b6183612634565b9250612b8e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a78565b905092915050565b6000612ba18261245f565b9150612bac8361245f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612be557612be461290f565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c2a8261245f565b9150612c358361245f565b925082612c4557612c44612bf0565b5b828204905092915050565b6000612c5b8261245f565b9150612c668361245f565b925082821015612c7957612c7861290f565b5b828203905092915050565b600081519050612c9381612469565b92915050565b600060208284031215612caf57612cae61229d565b5b6000612cbd84828501612c84565b91505092915050565b6000604082019050612cdb60008301856126be565b612ce8602083018461258a565b9392505050565b600081519050612cfe81612318565b92915050565b600060208284031215612d1a57612d1961229d565b5b6000612d2884828501612cef565b91505092915050565b6000612d3c8261245f565b9150612d478361245f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612d7c57612d7b61290f565b5b828201905092915050565b7f6d61782077616c6c6574206c696d697420726561636865640000000000000000600082015250565b6000612dbd6018836123af565b9150612dc882612d87565b602082019050919050565b60006020820190508181036000830152612dec81612db0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000612e47612e42612e3d84612e22565b612768565b61245f565b9050919050565b612e5781612e2c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e92816124e2565b82525050565b6000612ea48383612e89565b60208301905092915050565b6000602082019050919050565b6000612ec882612e5d565b612ed28185612e68565b9350612edd83612e79565b8060005b83811015612f0e578151612ef58882612e98565b9750612f0083612eb0565b925050600181019050612ee1565b5085935050505092915050565b600060a082019050612f30600083018861258a565b612f3d6020830187612e4e565b8181036040830152612f4f8186612ebd565b9050612f5e60608301856126be565b612f6b608083018461258a565b9695505050505050565b600081905092915050565b50565b6000612f90600083612f75565b9150612f9b82612f80565b600082019050919050565b6000612fb182612f83565b9150819050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612ff1601b836123af565b9150612ffc82612fbb565b602082019050919050565b6000602082019050818103600083015261302081612fe4565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130836021836123af565b915061308e82613027565b604082019050919050565b600060208201905081810360008301526130b281613076565b905091905056fea264697066735822122021275f39313c799df7448851e25f070c9e8f8212a1e8cc10166237b44a00fcec64736f6c634300080f0033

Deployed Bytecode Sourcemap

2831:7859:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6509:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6207:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3094:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5939:260;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5043:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3245:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9262:259;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5561:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10550:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2151:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3198:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3553:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5267:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8934:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3959:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3431:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2262:85;;;;;;;;;;;;;:::i;:::-;;9529:284;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3372:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3318:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4818:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3154:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3921:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5397:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9140:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3604:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4902:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10363:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3890:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6509:310;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6643:3:::1;6624:9;;:16;;:22;6616:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6703:9;6698:114;6720:9;;:16;;6716:1;:20;6698:114;;;6794:6;6758:19;:33;6778:9;;6788:1;6778:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6758:33;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;6738:3;;;;:::i;:::-;;;6698:114;;;;6509:310:::0;;;:::o;6207:294::-;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6333:3:::1;6314:9;;:16;;:22;6306:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;6393:9;6388:106;6410:9;;:16;;6406:1;:20;6388:106;;;6476:6;6448:11;:25;6460:9;;6470:1;6460:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;6448:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6428:3;;;;:::i;:::-;;;6388:106;;;;6207:294:::0;;;:::o;3094:53::-;;;;;;;;;;;;;;;;;;;:::o;5939:260::-;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6075:2:::1;6048:23;:29;;6040:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;6187:4;6159:23;3231:1;3297:2;:12;;;;:::i;:::-;3283:11;:26;;;;:::i;:::-;6145:37;;;;:::i;:::-;6144:47;;;;:::i;:::-;6126:15;:65;;;;5939:260:::0;:::o;5043:216::-;5118:4;5170:6;5135:11;:23;5147:10;5135:23;;;;;;;;;;;;;;;:32;5159:7;5135:32;;;;;;;;;;;;;;;:41;;;;5213:7;5192:37;;5201:10;5192:37;;;5222:6;5192:37;;;;;;:::i;:::-;;;;;;;;5247:4;5240:11;;5043:216;;;;:::o;3245:64::-;3231:1;3297:2;:12;;;;:::i;:::-;3283:11;:26;;;;:::i;:::-;3245:64;:::o;9262:259::-;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9345:17:::1;9365:21;9345:41;;9397:21;9456:3;9435:16;9423:9;:28;;;;:::i;:::-;9421:38;;;;:::i;:::-;9397:62;;9478:10;9470:28;;:43;9499:13;9470:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9334:187;;9262:259:::0;:::o;5561:370::-;5661:4;5716:17;5681:11;:19;5693:6;5681:19;;;;;;;;;;;;;;;:31;5701:10;5681:31;;;;;;;;;;;;;;;;:52;5678:186;;5783:69;5819:6;5783:69;;;;;;;;;;;;;;;;;:11;:19;5795:6;5783:19;;;;;;;;;;;;;;;:31;5803:10;5783:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;5749:11;:19;5761:6;5749:19;;;;;;;;;;;;;;;:31;5769:10;5749:31;;;;;;;;;;;;;;;:103;;;;5678:186;5883:40;5897:6;5905:9;5916:6;5883:13;:40::i;:::-;5876:47;;5561:370;;;;;:::o;10550:137::-;10603:7;10663:9;:15;3043:42;10663:15;;;;;;;;;;;;;;;;10645:9;:15;2970:42;10645:15;;;;;;;;;;;;;;;;3231:1;3297:2;:12;;;;:::i;:::-;3283:11;:26;;;;:::i;:::-;10631:29;;;;:::i;:::-;:47;;;;:::i;:::-;10623:56;;10550:137;:::o;2151:103::-;2206:4;2241:5;;;;;;;;;;;2230:16;;:7;:16;;;2223:23;;2151:103;;;:::o;3198:34::-;3231:1;3198:34;:::o;3553:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;5267:122::-;5322:4;5346:35;5354:7;5363:17;5346:7;:35::i;:::-;5339:42;;5267:122;;;:::o;8934:198::-;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9050:5:::1;9033:14;:22;;;;9082:4;9066:13;:20;;;;9118:6;9097:18;:27;;;;8934:198:::0;;;:::o;3959:30::-;;;;;;;;;;;;;:::o;3431:45::-;;;;;;;;;;;;;;;;;:::o;2262:85::-;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2337:1:::1;2321:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2262:85::o:0;9529:284::-;9620:12;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9658:1:::1;9648:6;:11:::0;9645:95:::1;;9690:12;9684:29;;;9722:4;9684:44;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9675:53;;9645:95;9763:12;9757:28;;;9786:10;9798:6;9757:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9750:55;;9529:284:::0;;;;:::o;3372:50::-;;;;:::o;3318:47::-;;;;:::o;4818:78::-;4870:7;4888:5;;;;;;;;;;;4881:12;;4818:78;:::o;3154:37::-;;;;;;;;;;;;;;;;;;;:::o;3921:29::-;;;:::o;5397:156::-;5477:4;5501:44;5515:10;5527:9;5538:6;5501:13;:44::i;:::-;5494:51;;5397:156;;;;:::o;9140:112::-;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9230:14:::1;9219:8;:25;;;;9140:112:::0;:::o;3604:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;4902:133::-;4986:7;5004:11;:19;5016:6;5004:19;;;;;;;;;;;;;;;:28;5024:7;5004:28;;;;;;;;;;;;;;;;4997:35;;4902:133;;;;:::o;10363:179::-;2102:19;2110:10;2102:7;:19::i;:::-;2094:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10473:8:::1;10459:11;;:22;;;;;;;;;;;;;;;;;;10522:12;3231:1;3297:2;:12;;;;:::i;:::-;3283:11;:26;;;;:::i;:::-;10508;;;;:::i;:::-;10492:13;:42;;;;10363:179:::0;;:::o;3890:24::-;;;;;;;;;;;;;:::o;470:192::-;556:7;589:1;584;:6;;592:12;576:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;616:9;632:1;628;:5;;;;:::i;:::-;616:17;;653:1;646:8;;;470:192;;;;;:::o;6827:821::-;6919:4;6939:6;;;;;;;;;;;6936:63;;;6955:41;6970:6;6978:9;6989:6;6955:14;:41::i;:::-;6948:48;;;;6936:63;7016:19;:27;7036:6;7016:27;;;;;;;;;;;;;;;;;;;;;;;;;7015:28;:63;;;;;7048:19;:30;7068:9;7048:30;;;;;;;;;;;;;;;;;;;;;;;;;7047:31;7015:63;:84;;;;;7095:4;7082:17;;:9;:17;;;;7015:84;7011:203;;;7159:15;;7148:6;7125:9;:20;7135:9;7125:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;7124:50;;7116:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;7011:203;7233:16;:14;:16::i;:::-;7230:35;;;7252:10;:8;:10::i;:::-;7230:35;7297:53;7319:6;7297:53;;;;;;;;;;;;;;;;;:9;:17;7307:6;7297:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;7277:9;:17;7287:6;7277:17;;;;;;;;;;;;;;;:73;;;;7363:22;7389:11;:19;7401:6;7389:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;7412:11;:22;7424:9;7412:22;;;;;;;;;;;;;;;;;;;;;;;;;7389:45;7388:93;;7447:34;7455:6;7463;7471:9;7447:7;:34::i;:::-;7388:93;;;7438:6;7388:93;7363:118;;7517:40;7542:14;7517:9;:20;7527:9;7517:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;7494:9;:20;7504:9;7494:20;;;;;;;;;;;;;;;:63;;;;7592:9;7575:43;;7584:6;7575:43;;;7603:14;7575:43;;;;;;:::i;:::-;;;;;;;;7636:4;7629:11;;;6827:821;;;;;;:::o;7660:330::-;7753:4;7790:53;7812:6;7790:53;;;;;;;;;;;;;;;;;:9;:17;7800:6;7790:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;7770:9;:17;7780:6;7770:17;;;;;;;;;;;;;;;:73;;;;7877:32;7902:6;7877:9;:20;7887:9;7877:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7854:9;:20;7864:9;7854:20;;;;;;;;;;;;;;;:55;;;;7942:9;7925:35;;7934:6;7925:35;;;7953:6;7925:35;;;;;;:::i;:::-;;;;;;;;7978:4;7971:11;;7660:330;;;;;:::o;8729:197::-;8778:4;8816;8802:18;;:10;:18;;;;:38;;;;;8834:6;;;;;;;;;;;8833:7;8802:38;:62;;;;;8853:11;;;;;;;;;;;8802:62;:116;;;;;8905:13;;8877:9;:24;8895:4;8877:24;;;;;;;;;;;;;;;;:41;;8802:116;8795:123;;8729:197;:::o;9821:534::-;4093:4;4084:6;;:13;;;;;;;;;;;;;;;;;;9872:21:::1;9910:1;9896:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9872:40;;9941:4;9923;9928:1;9923:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9967:4;9957;9962:1;9957:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;9984:6;;;;;;;;;;;:57;;;10056:13;;10084:1;10100:4;10127;10147:15;9984:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10186:17;10206:21;10186:41;;10241:15;10269:21;;;;;;;;;;;10261:35;;10304:9;10261:57;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10240:78;;;10342:5;10329:18;;9859:496;;;4111:5:::0;4102:6;;:14;;;;;;;;;;;;;;;;;;9821:534::o;7998:723::-;8084:7;8117:1;8107:6;:11;:28;;;;8134:1;8122:8;;:13;8107:28;8104:72;;;8158:6;8151:13;;;;8104:72;8188:18;8209;;8188:39;;8256:4;8243:17;;:9;:17;;;8240:154;;8290:14;;8277:27;;8240:154;;;8335:4;8325:14;;:6;:14;;;8322:72;;8369:13;;8356:26;;8322:72;8240:154;8406:17;8426:62;8484:3;3728;8467:20;;;;:::i;:::-;8426:36;8451:10;8426:20;8437:8;;8426:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;8406:82;;8516:1;8504:9;:13;8501:172;;;8560:39;8589:9;8560;:24;8578:4;8560:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;8533:9;:24;8551:4;8533:24;;;;;;;;;;;;;;;:66;;;;8644:4;8619:42;;8628:6;8619:42;;;8651:9;8619:42;;;;;;:::i;:::-;;;;;;;;8501:172;8692:21;8703:9;8692:6;:10;;:21;;;;:::i;:::-;8685:28;;;;7998:723;;;;;;:::o;141:181::-;199:7;219:9;235:1;231;:5;;;;:::i;:::-;219:17;;260:1;255;:6;;247:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;313:1;306:8;;;141:181;;;;:::o;668:250::-;726:7;755:1;750;:6;746:47;;780:1;773:8;;;;746:47;805:9;821:1;817;:5;;;;:::i;:::-;805:17;;850:1;845;841;:5;;;;:::i;:::-;:10;833:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;909:1;902:8;;;668:250;;;;;:::o;924:132::-;982:7;1009:39;1013:1;1016;1009:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1002:46;;924:132;;;;:::o;328:136::-;386:7;413:43;417:1;420;413:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;406:50;;328:136;;;;:::o;1062:189::-;1148:7;1180:1;1176;:5;1183:12;1168:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1207:9;1223:1;1219;:5;;;;:::i;:::-;1207:17;;1242:1;1235:8;;;1062:189;;;;;:::o;88:117:1:-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:117;566:1;563;556:12;580:117;689:1;686;679:12;720:568;793:8;803:6;853:3;846:4;838:6;834:17;830:27;820:122;;861:79;;:::i;:::-;820:122;974:6;961:20;951:30;;1004:18;996:6;993:30;990:117;;;1026:79;;:::i;:::-;990:117;1140:4;1132:6;1128:17;1116:29;;1194:3;1186:4;1178:6;1174:17;1164:8;1160:32;1157:41;1154:128;;;1201:79;;:::i;:::-;1154:128;720:568;;;;;:::o;1294:90::-;1328:7;1371:5;1364:13;1357:21;1346:32;;1294:90;;;:::o;1390:116::-;1460:21;1475:5;1460:21;:::i;:::-;1453:5;1450:32;1440:60;;1496:1;1493;1486:12;1440:60;1390:116;:::o;1512:133::-;1555:5;1593:6;1580:20;1571:29;;1609:30;1633:5;1609:30;:::i;:::-;1512:133;;;;:::o;1651:698::-;1743:6;1751;1759;1808:2;1796:9;1787:7;1783:23;1779:32;1776:119;;;1814:79;;:::i;:::-;1776:119;1962:1;1951:9;1947:17;1934:31;1992:18;1984:6;1981:30;1978:117;;;2014:79;;:::i;:::-;1978:117;2127:80;2199:7;2190:6;2179:9;2175:22;2127:80;:::i;:::-;2109:98;;;;1905:312;2256:2;2282:50;2324:7;2315:6;2304:9;2300:22;2282:50;:::i;:::-;2272:60;;2227:115;1651:698;;;;;:::o;2355:99::-;2407:6;2441:5;2435:12;2425:22;;2355:99;;;:::o;2460:169::-;2544:11;2578:6;2573:3;2566:19;2618:4;2613:3;2609:14;2594:29;;2460:169;;;;:::o;2635:307::-;2703:1;2713:113;2727:6;2724:1;2721:13;2713:113;;;2812:1;2807:3;2803:11;2797:18;2793:1;2788:3;2784:11;2777:39;2749:2;2746:1;2742:10;2737:15;;2713:113;;;2844:6;2841:1;2838:13;2835:101;;;2924:1;2915:6;2910:3;2906:16;2899:27;2835:101;2684:258;2635:307;;;:::o;2948:102::-;2989:6;3040:2;3036:7;3031:2;3024:5;3020:14;3016:28;3006:38;;2948:102;;;:::o;3056:364::-;3144:3;3172:39;3205:5;3172:39;:::i;:::-;3227:71;3291:6;3286:3;3227:71;:::i;:::-;3220:78;;3307:52;3352:6;3347:3;3340:4;3333:5;3329:16;3307:52;:::i;:::-;3384:29;3406:6;3384:29;:::i;:::-;3379:3;3375:39;3368:46;;3148:272;3056:364;;;;:::o;3426:313::-;3539:4;3577:2;3566:9;3562:18;3554:26;;3626:9;3620:4;3616:20;3612:1;3601:9;3597:17;3590:47;3654:78;3727:4;3718:6;3654:78;:::i;:::-;3646:86;;3426:313;;;;:::o;3745:77::-;3782:7;3811:5;3800:16;;3745:77;;;:::o;3828:122::-;3901:24;3919:5;3901:24;:::i;:::-;3894:5;3891:35;3881:63;;3940:1;3937;3930:12;3881:63;3828:122;:::o;3956:139::-;4002:5;4040:6;4027:20;4018:29;;4056:33;4083:5;4056:33;:::i;:::-;3956:139;;;;:::o;4101:329::-;4160:6;4209:2;4197:9;4188:7;4184:23;4180:32;4177:119;;;4215:79;;:::i;:::-;4177:119;4335:1;4360:53;4405:7;4396:6;4385:9;4381:22;4360:53;:::i;:::-;4350:63;;4306:117;4101:329;;;;:::o;4436:126::-;4473:7;4513:42;4506:5;4502:54;4491:65;;4436:126;;;:::o;4568:96::-;4605:7;4634:24;4652:5;4634:24;:::i;:::-;4623:35;;4568:96;;;:::o;4670:122::-;4743:24;4761:5;4743:24;:::i;:::-;4736:5;4733:35;4723:63;;4782:1;4779;4772:12;4723:63;4670:122;:::o;4798:139::-;4844:5;4882:6;4869:20;4860:29;;4898:33;4925:5;4898:33;:::i;:::-;4798:139;;;;:::o;4943:474::-;5011:6;5019;5068:2;5056:9;5047:7;5043:23;5039:32;5036:119;;;5074:79;;:::i;:::-;5036:119;5194:1;5219:53;5264:7;5255:6;5244:9;5240:22;5219:53;:::i;:::-;5209:63;;5165:117;5321:2;5347:53;5392:7;5383:6;5372:9;5368:22;5347:53;:::i;:::-;5337:63;;5292:118;4943:474;;;;;:::o;5423:109::-;5504:21;5519:5;5504:21;:::i;:::-;5499:3;5492:34;5423:109;;:::o;5538:210::-;5625:4;5663:2;5652:9;5648:18;5640:26;;5676:65;5738:1;5727:9;5723:17;5714:6;5676:65;:::i;:::-;5538:210;;;;:::o;5754:118::-;5841:24;5859:5;5841:24;:::i;:::-;5836:3;5829:37;5754:118;;:::o;5878:222::-;5971:4;6009:2;5998:9;5994:18;5986:26;;6022:71;6090:1;6079:9;6075:17;6066:6;6022:71;:::i;:::-;5878:222;;;;:::o;6106:619::-;6183:6;6191;6199;6248:2;6236:9;6227:7;6223:23;6219:32;6216:119;;;6254:79;;:::i;:::-;6216:119;6374:1;6399:53;6444:7;6435:6;6424:9;6420:22;6399:53;:::i;:::-;6389:63;;6345:117;6501:2;6527:53;6572:7;6563:6;6552:9;6548:22;6527:53;:::i;:::-;6517:63;;6472:118;6629:2;6655:53;6700:7;6691:6;6680:9;6676:22;6655:53;:::i;:::-;6645:63;;6600:118;6106:619;;;;;:::o;6731:329::-;6790:6;6839:2;6827:9;6818:7;6814:23;6810:32;6807:119;;;6845:79;;:::i;:::-;6807:119;6965:1;6990:53;7035:7;7026:6;7015:9;7011:22;6990:53;:::i;:::-;6980:63;;6936:117;6731:329;;;;:::o;7066:86::-;7101:7;7141:4;7134:5;7130:16;7119:27;;7066:86;;;:::o;7158:112::-;7241:22;7257:5;7241:22;:::i;:::-;7236:3;7229:35;7158:112;;:::o;7276:214::-;7365:4;7403:2;7392:9;7388:18;7380:26;;7416:67;7480:1;7469:9;7465:17;7456:6;7416:67;:::i;:::-;7276:214;;;;:::o;7496:619::-;7573:6;7581;7589;7638:2;7626:9;7617:7;7613:23;7609:32;7606:119;;;7644:79;;:::i;:::-;7606:119;7764:1;7789:53;7834:7;7825:6;7814:9;7810:22;7789:53;:::i;:::-;7779:63;;7735:117;7891:2;7917:53;7962:7;7953:6;7942:9;7938:22;7917:53;:::i;:::-;7907:63;;7862:118;8019:2;8045:53;8090:7;8081:6;8070:9;8066:22;8045:53;:::i;:::-;8035:63;;7990:118;7496:619;;;;;:::o;8121:118::-;8208:24;8226:5;8208:24;:::i;:::-;8203:3;8196:37;8121:118;;:::o;8245:222::-;8338:4;8376:2;8365:9;8361:18;8353:26;;8389:71;8457:1;8446:9;8442:17;8433:6;8389:71;:::i;:::-;8245:222;;;;:::o;8473:474::-;8541:6;8549;8598:2;8586:9;8577:7;8573:23;8569:32;8566:119;;;8604:79;;:::i;:::-;8566:119;8724:1;8749:53;8794:7;8785:6;8774:9;8770:22;8749:53;:::i;:::-;8739:63;;8695:117;8851:2;8877:53;8922:7;8913:6;8902:9;8898:22;8877:53;:::i;:::-;8867:63;;8822:118;8473:474;;;;;:::o;8953:468::-;9018:6;9026;9075:2;9063:9;9054:7;9050:23;9046:32;9043:119;;;9081:79;;:::i;:::-;9043:119;9201:1;9226:50;9268:7;9259:6;9248:9;9244:22;9226:50;:::i;:::-;9216:60;;9172:114;9325:2;9351:53;9396:7;9387:6;9376:9;9372:22;9351:53;:::i;:::-;9341:63;;9296:118;8953:468;;;;;:::o;9427:60::-;9455:3;9476:5;9469:12;;9427:60;;;:::o;9493:142::-;9543:9;9576:53;9594:34;9603:24;9621:5;9603:24;:::i;:::-;9594:34;:::i;:::-;9576:53;:::i;:::-;9563:66;;9493:142;;;:::o;9641:126::-;9691:9;9724:37;9755:5;9724:37;:::i;:::-;9711:50;;9641:126;;;:::o;9773:144::-;9841:9;9874:37;9905:5;9874:37;:::i;:::-;9861:50;;9773:144;;;:::o;9923:167::-;10028:55;10077:5;10028:55;:::i;:::-;10023:3;10016:68;9923:167;;:::o;10096:258::-;10207:4;10245:2;10234:9;10230:18;10222:26;;10258:89;10344:1;10333:9;10329:17;10320:6;10258:89;:::i;:::-;10096:258;;;;:::o;10360:156::-;10500:8;10496:1;10488:6;10484:14;10477:32;10360:156;:::o;10522:365::-;10664:3;10685:66;10749:1;10744:3;10685:66;:::i;:::-;10678:73;;10760:93;10849:3;10760:93;:::i;:::-;10878:2;10873:3;10869:12;10862:19;;10522:365;;;:::o;10893:419::-;11059:4;11097:2;11086:9;11082:18;11074:26;;11146:9;11140:4;11136:20;11132:1;11121:9;11117:17;11110:47;11174:131;11300:4;11174:131;:::i;:::-;11166:139;;10893:419;;;:::o;11318:224::-;11458:34;11454:1;11446:6;11442:14;11435:58;11527:7;11522:2;11514:6;11510:15;11503:32;11318:224;:::o;11548:366::-;11690:3;11711:67;11775:2;11770:3;11711:67;:::i;:::-;11704:74;;11787:93;11876:3;11787:93;:::i;:::-;11905:2;11900:3;11896:12;11889:19;;11548:366;;;:::o;11920:419::-;12086:4;12124:2;12113:9;12109:18;12101:26;;12173:9;12167:4;12163:20;12159:1;12148:9;12144:17;12137:47;12201:131;12327:4;12201:131;:::i;:::-;12193:139;;11920:419;;;:::o;12345:180::-;12393:77;12390:1;12383:88;12490:4;12487:1;12480:15;12514:4;12511:1;12504:15;12531:180;12579:77;12576:1;12569:88;12676:4;12673:1;12666:15;12700:4;12697:1;12690:15;12717:233;12756:3;12779:24;12797:5;12779:24;:::i;:::-;12770:33;;12825:66;12818:5;12815:77;12812:103;;12895:18;;:::i;:::-;12812:103;12942:1;12935:5;12931:13;12924:20;;12717:233;;;:::o;12956:221::-;13096:34;13092:1;13084:6;13080:14;13073:58;13165:4;13160:2;13152:6;13148:15;13141:29;12956:221;:::o;13183:366::-;13325:3;13346:67;13410:2;13405:3;13346:67;:::i;:::-;13339:74;;13422:93;13511:3;13422:93;:::i;:::-;13540:2;13535:3;13531:12;13524:19;;13183:366;;;:::o;13555:419::-;13721:4;13759:2;13748:9;13744:18;13736:26;;13808:9;13802:4;13798:20;13794:1;13783:9;13779:17;13772:47;13836:131;13962:4;13836:131;:::i;:::-;13828:139;;13555:419;;;:::o;13980:102::-;14022:8;14069:5;14066:1;14062:13;14041:34;;13980:102;;;:::o;14088:848::-;14149:5;14156:4;14180:6;14171:15;;14204:5;14195:14;;14218:712;14239:1;14229:8;14226:15;14218:712;;;14334:4;14329:3;14325:14;14319:4;14316:24;14313:50;;;14343:18;;:::i;:::-;14313:50;14393:1;14383:8;14379:16;14376:451;;;14808:4;14801:5;14797:16;14788:25;;14376:451;14858:4;14852;14848:15;14840:23;;14888:32;14911:8;14888:32;:::i;:::-;14876:44;;14218:712;;;14088:848;;;;;;;:::o;14942:1073::-;14996:5;15187:8;15177:40;;15208:1;15199:10;;15210:5;;15177:40;15236:4;15226:36;;15253:1;15244:10;;15255:5;;15226:36;15322:4;15370:1;15365:27;;;;15406:1;15401:191;;;;15315:277;;15365:27;15383:1;15374:10;;15385:5;;;15401:191;15446:3;15436:8;15433:17;15430:43;;;15453:18;;:::i;:::-;15430:43;15502:8;15499:1;15495:16;15486:25;;15537:3;15530:5;15527:14;15524:40;;;15544:18;;:::i;:::-;15524:40;15577:5;;;15315:277;;15701:2;15691:8;15688:16;15682:3;15676:4;15673:13;15669:36;15651:2;15641:8;15638:16;15633:2;15627:4;15624:12;15620:35;15604:111;15601:246;;;15757:8;15751:4;15747:19;15738:28;;15792:3;15785:5;15782:14;15779:40;;;15799:18;;:::i;:::-;15779:40;15832:5;;15601:246;15872:42;15910:3;15900:8;15894:4;15891:1;15872:42;:::i;:::-;15857:57;;;;15946:4;15941:3;15937:14;15930:5;15927:25;15924:51;;;15955:18;;:::i;:::-;15924:51;16004:4;15997:5;15993:16;15984:25;;14942:1073;;;;;;:::o;16021:281::-;16079:5;16103:23;16121:4;16103:23;:::i;:::-;16095:31;;16147:25;16163:8;16147:25;:::i;:::-;16135:37;;16191:104;16228:66;16218:8;16212:4;16191:104;:::i;:::-;16182:113;;16021:281;;;;:::o;16308:348::-;16348:7;16371:20;16389:1;16371:20;:::i;:::-;16366:25;;16405:20;16423:1;16405:20;:::i;:::-;16400:25;;16593:1;16525:66;16521:74;16518:1;16515:81;16510:1;16503:9;16496:17;16492:105;16489:131;;;16600:18;;:::i;:::-;16489:131;16648:1;16645;16641:9;16630:20;;16308:348;;;;:::o;16662:180::-;16710:77;16707:1;16700:88;16807:4;16804:1;16797:15;16831:4;16828:1;16821:15;16848:185;16888:1;16905:20;16923:1;16905:20;:::i;:::-;16900:25;;16939:20;16957:1;16939:20;:::i;:::-;16934:25;;16978:1;16968:35;;16983:18;;:::i;:::-;16968:35;17025:1;17022;17018:9;17013:14;;16848:185;;;;:::o;17039:191::-;17079:4;17099:20;17117:1;17099:20;:::i;:::-;17094:25;;17133:20;17151:1;17133:20;:::i;:::-;17128:25;;17172:1;17169;17166:8;17163:34;;;17177:18;;:::i;:::-;17163:34;17222:1;17219;17215:9;17207:17;;17039:191;;;;:::o;17236:143::-;17293:5;17324:6;17318:13;17309:22;;17340:33;17367:5;17340:33;:::i;:::-;17236:143;;;;:::o;17385:351::-;17455:6;17504:2;17492:9;17483:7;17479:23;17475:32;17472:119;;;17510:79;;:::i;:::-;17472:119;17630:1;17655:64;17711:7;17702:6;17691:9;17687:22;17655:64;:::i;:::-;17645:74;;17601:128;17385:351;;;;:::o;17742:332::-;17863:4;17901:2;17890:9;17886:18;17878:26;;17914:71;17982:1;17971:9;17967:17;17958:6;17914:71;:::i;:::-;17995:72;18063:2;18052:9;18048:18;18039:6;17995:72;:::i;:::-;17742:332;;;;;:::o;18080:137::-;18134:5;18165:6;18159:13;18150:22;;18181:30;18205:5;18181:30;:::i;:::-;18080:137;;;;:::o;18223:345::-;18290:6;18339:2;18327:9;18318:7;18314:23;18310:32;18307:119;;;18345:79;;:::i;:::-;18307:119;18465:1;18490:61;18543:7;18534:6;18523:9;18519:22;18490:61;:::i;:::-;18480:71;;18436:125;18223:345;;;;:::o;18574:305::-;18614:3;18633:20;18651:1;18633:20;:::i;:::-;18628:25;;18667:20;18685:1;18667:20;:::i;:::-;18662:25;;18821:1;18753:66;18749:74;18746:1;18743:81;18740:107;;;18827:18;;:::i;:::-;18740:107;18871:1;18868;18864:9;18857:16;;18574:305;;;;:::o;18885:174::-;19025:26;19021:1;19013:6;19009:14;19002:50;18885:174;:::o;19065:366::-;19207:3;19228:67;19292:2;19287:3;19228:67;:::i;:::-;19221:74;;19304:93;19393:3;19304:93;:::i;:::-;19422:2;19417:3;19413:12;19406:19;;19065:366;;;:::o;19437:419::-;19603:4;19641:2;19630:9;19626:18;19618:26;;19690:9;19684:4;19680:20;19676:1;19665:9;19661:17;19654:47;19718:131;19844:4;19718:131;:::i;:::-;19710:139;;19437:419;;;:::o;19862:180::-;19910:77;19907:1;19900:88;20007:4;20004:1;19997:15;20031:4;20028:1;20021:15;20048:85;20093:7;20122:5;20111:16;;20048:85;;;:::o;20139:158::-;20197:9;20230:61;20248:42;20257:32;20283:5;20257:32;:::i;:::-;20248:42;:::i;:::-;20230:61;:::i;:::-;20217:74;;20139:158;;;:::o;20303:147::-;20398:45;20437:5;20398:45;:::i;:::-;20393:3;20386:58;20303:147;;:::o;20456:114::-;20523:6;20557:5;20551:12;20541:22;;20456:114;;;:::o;20576:184::-;20675:11;20709:6;20704:3;20697:19;20749:4;20744:3;20740:14;20725:29;;20576:184;;;;:::o;20766:132::-;20833:4;20856:3;20848:11;;20886:4;20881:3;20877:14;20869:22;;20766:132;;;:::o;20904:108::-;20981:24;20999:5;20981:24;:::i;:::-;20976:3;20969:37;20904:108;;:::o;21018:179::-;21087:10;21108:46;21150:3;21142:6;21108:46;:::i;:::-;21186:4;21181:3;21177:14;21163:28;;21018:179;;;;:::o;21203:113::-;21273:4;21305;21300:3;21296:14;21288:22;;21203:113;;;:::o;21352:732::-;21471:3;21500:54;21548:5;21500:54;:::i;:::-;21570:86;21649:6;21644:3;21570:86;:::i;:::-;21563:93;;21680:56;21730:5;21680:56;:::i;:::-;21759:7;21790:1;21775:284;21800:6;21797:1;21794:13;21775:284;;;21876:6;21870:13;21903:63;21962:3;21947:13;21903:63;:::i;:::-;21896:70;;21989:60;22042:6;21989:60;:::i;:::-;21979:70;;21835:224;21822:1;21819;21815:9;21810:14;;21775:284;;;21779:14;22075:3;22068:10;;21476:608;;;21352:732;;;;:::o;22090:831::-;22353:4;22391:3;22380:9;22376:19;22368:27;;22405:71;22473:1;22462:9;22458:17;22449:6;22405:71;:::i;:::-;22486:80;22562:2;22551:9;22547:18;22538:6;22486:80;:::i;:::-;22613:9;22607:4;22603:20;22598:2;22587:9;22583:18;22576:48;22641:108;22744:4;22735:6;22641:108;:::i;:::-;22633:116;;22759:72;22827:2;22816:9;22812:18;22803:6;22759:72;:::i;:::-;22841:73;22909:3;22898:9;22894:19;22885:6;22841:73;:::i;:::-;22090:831;;;;;;;;:::o;22927:147::-;23028:11;23065:3;23050:18;;22927:147;;;;:::o;23080:114::-;;:::o;23200:398::-;23359:3;23380:83;23461:1;23456:3;23380:83;:::i;:::-;23373:90;;23472:93;23561:3;23472:93;:::i;:::-;23590:1;23585:3;23581:11;23574:18;;23200:398;;;:::o;23604:379::-;23788:3;23810:147;23953:3;23810:147;:::i;:::-;23803:154;;23974:3;23967:10;;23604:379;;;:::o;23989:177::-;24129:29;24125:1;24117:6;24113:14;24106:53;23989:177;:::o;24172:366::-;24314:3;24335:67;24399:2;24394:3;24335:67;:::i;:::-;24328:74;;24411:93;24500:3;24411:93;:::i;:::-;24529:2;24524:3;24520:12;24513:19;;24172:366;;;:::o;24544:419::-;24710:4;24748:2;24737:9;24733:18;24725:26;;24797:9;24791:4;24787:20;24783:1;24772:9;24768:17;24761:47;24825:131;24951:4;24825:131;:::i;:::-;24817:139;;24544:419;;;:::o;24969:220::-;25109:34;25105:1;25097:6;25093:14;25086:58;25178:3;25173:2;25165:6;25161:15;25154:28;24969:220;:::o;25195:366::-;25337:3;25358:67;25422:2;25417:3;25358:67;:::i;:::-;25351:74;;25434:93;25523:3;25434:93;:::i;:::-;25552:2;25547:3;25543:12;25536:19;;25195:366;;;:::o;25567:419::-;25733:4;25771:2;25760:9;25756:18;25748:26;;25820:9;25814:4;25810:20;25806:1;25795:9;25791:17;25784:47;25848:131;25974:4;25848:131;:::i;:::-;25840:139;;25567:419;;;:::o

Swarm Source

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