ETH Price: $3,358.09 (-2.79%)
Gas: 2 Gwei

Token

Babydoge 2.0 (Babydoge2.0)
 

Overview

Max Total Supply

420,000,000,000,000,000 Babydoge2.0

Holders

1,055

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
29,937,689,350,973.870876803 Babydoge2.0

Value
$0.00
0xf46c2c334f06dde27c7bba8fa8822c2983ac73b5
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:
Babydoge2

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-08
*/

/**
 *Submitted for verification at BscScan.com on 2023-07-01
*/

// SPDX-License-Identifier: No

pragma solidity = 0.8.19;

//--- Context ---//
abstract contract Context {
    constructor() {
    }

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

//--- Ownable ---//
abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}



//--- Interface for ERC20 ---//
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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);
}

//--- Contract v2 ---//
contract Babydoge2 is Context, Ownable, IERC20 {

    function totalSupply() external pure override returns (uint256) { if (_totalSupply == 0) { revert(); } return _totalSupply; }
    function decimals() external pure override returns (uint8) { if (_totalSupply == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    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 balanceOf(address account) public view override returns (uint256) {
        return balance[account];
    }


    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private liquidityAdd;
    mapping (address => bool) private isLpPair;
    mapping (address => bool) private isPresaleAddress;
    mapping (address => uint256) private balance;


    uint256 constant public _totalSupply = 420_000_000_000_000_000 * 10**9;
    uint256 constant public swapThreshold = _totalSupply / 5_000;
    uint256 constant public buyfee = 0;
    uint256 constant public sellfee = 30;
    uint256 constant public transferfee = 0;
    uint256 constant public fee_denominator = 1_000;
    bool private canSwapFees = false;
    address payable private marketingAddress = payable(0x4765Dd152Ae878A53a001c61Bd9c421f51664a99);
    address payable private marketing2Address = payable(0x77FD62C2A1EFBE70c0d1581aa73b32922A9751E1);


    IRouter02 public swapRouter;
    string constant private _name = "Babydoge 2.0";
    string constant private _symbol = "Babydoge2.0";
    uint8 constant private _decimals = 9;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public lpPair;
    bool public isTradingEnabled = false;
    bool private inSwap;

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


    event _enableTrading();
    event _setPresaleAddress(address account, bool enabled);
    event _toggleCanSwapFees(bool enabled);
    event _changePair(address newLpPair);
    event _changeWallets(address marketing, address marketing2);


    constructor () {
        _noFee[msg.sender] = true;

        if (block.chainid == 56) {
            swapRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            swapRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            swapRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (block.chainid == 43114) {
            swapRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            swapRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert("Chain not valid");
        }
        liquidityAdd[msg.sender] = true;
        balance[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        lpPair = IFactoryV2(swapRouter.factory()).createPair(swapRouter.WETH(), address(this));
        isLpPair[lpPair] = true;
        _approve(msg.sender, address(swapRouter), type(uint256).max);
        _approve(address(this), address(swapRouter), type(uint256).max);
    }
    
    receive() external payable {}

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

        function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

        function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = 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] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }
    function isNoFeeWallet(address account) external view returns(bool) {
        return _noFee[account];
    }

    function setNoFeeWallet(address account, bool enabled) public onlyOwner {
        _noFee[account] = enabled;
    }

    function isLimitedAddress(address ins, address out) internal view returns (bool) {

        bool isLimited = ins != owner()
            && out != owner() && msg.sender != owner()
            && !liquidityAdd[ins]  && !liquidityAdd[out] && out != DEAD && out != address(0) && out != address(this);
            return isLimited;
    }

    function is_buy(address ins, address out) internal view returns (bool) {
        bool _is_buy = !isLpPair[out] && isLpPair[ins];
        return _is_buy;
    }

    function is_sell(address ins, address out) internal view returns (bool) { 
        bool _is_sell = isLpPair[out] && !isLpPair[ins];
        return _is_sell;
    } 

    function canSwap(address ins, address out) internal view returns (bool) {
        bool canswap = canSwapFees && !isPresaleAddress[ins] && !isPresaleAddress[out];

        return canswap;
    }

    function changeLpPair(address newPair) external onlyOwner {
        isLpPair[newPair] = true;
        emit _changePair(newPair);
    }

    function toggleCanSwapFees(bool yesno) external onlyOwner {
        require(canSwapFees != yesno,"Bool is the same");
        canSwapFees = yesno;
        emit _toggleCanSwapFees(yesno);
    }

    function _transfer(address from, address to, uint256 amount) internal returns  (bool) {
        bool takeFee = true;
        require(to != address(0), "ERC20: transfer to the zero address");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (isLimitedAddress(from,to)) {
            require(isTradingEnabled,"Trading is not enabled");
        }


        if(is_sell(from, to) &&  !inSwap && canSwap(from, to)) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance >= swapThreshold) { internalSwap(contractTokenBalance); }
        }

        if (_noFee[from] || _noFee[to]){
            takeFee = false;
        }

        balance[from] -= amount; uint256 amountAfterFee = (takeFee) ? takeTaxes(from, is_buy(from, to), is_sell(from, to), amount) : amount;
        balance[to] += amountAfterFee; emit Transfer(from, to, amountAfterFee);

        return true;

    }

    function changeWallets(address marketing, address marketing2) external onlyOwner {
        marketingAddress = payable(marketing);
        marketing2Address = payable(marketing2);
        emit _changeWallets(marketing, marketing2);
    }


    function takeTaxes(address from, bool isbuy, bool issell, uint256 amount) internal returns (uint256) {
        uint256 fee;
        if (isbuy)  fee = buyfee;  else if (issell)  fee = sellfee;  else  fee = transferfee; 
        if (fee == 0)  return amount;
        uint256 feeAmount = amount * fee / fee_denominator;
        if (feeAmount > 0) {

            balance[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
            
        }
        return amount - feeAmount;
    }

    function internalSwap(uint256 contractTokenBalance) internal inSwapFlag {
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        if (_allowances[address(this)][address(swapRouter)] != type(uint256).max) {
            _allowances[address(this)][address(swapRouter)] = type(uint256).max;
        }

        try swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }
        bool success;

        uint256 twoThird = address(this).balance * 2 / 3;

        if(twoThird > 0) {(success,) = marketingAddress.call{value: twoThird, gas: 35000}("");}
        if(address(this).balance > 0) {(success,) = marketing2Address.call{value: address(this).balance, gas: 35000}("");}

    }

        function setPresaleAddress(address presale, bool yesno) external onlyOwner {
            require(isPresaleAddress[presale] != yesno,"Same bool");
            isPresaleAddress[presale] = yesno;
            _noFee[presale] = yesno;
            liquidityAdd[presale] = yesno;
            emit _setPresaleAddress(presale, yesno);
        }

        function enableTrading() external onlyOwner {
            require(!isTradingEnabled, "Trading already enabled");
            isTradingEnabled = true;
            emit _enableTrading();
        }
    
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLpPair","type":"address"}],"name":"_changePair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"},{"indexed":false,"internalType":"address","name":"marketing2","type":"address"}],"name":"_changeWallets","type":"event"},{"anonymous":false,"inputs":[],"name":"_enableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"_setPresaleAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"_toggleCanSwapFees","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"changeLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"},{"internalType":"address","name":"marketing2","type":"address"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee_denominator","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":"account","type":"address"}],"name":"isNoFeeWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setNoFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"presale","type":"address"},{"internalType":"bool","name":"yesno","type":"bool"}],"name":"setPresaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"yesno","type":"bool"}],"name":"toggleCanSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760006101000a81548160ff021916908315150217905550734765dd152ae878a53a001c61bd9c421f51664a99600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507377fd62c2a1efbe70c0d1581aa73b32922a9751e1600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60146101000a81548160ff021916908315150217905550348015620000f157600080fd5b506200011262000106620007e860201b60201c565b620007f060201b60201c565b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060384603620001ce577310ed43c718714eb63d5aa57b78b54704e256024e600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b9565b60614603620002325773d99d1c33f9fc3444f8101754abc46c52416550d1600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b8565b6001461480620002425750600446145b806200024e5750600346145b15620002af57737a250d5630b4cf539739df2c5dacb4c659f2488d600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b7565b61a86a460362000314577360ae616a2155ee3d9a68541ba4544862310933d4600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b6565b60fa4603620003785773f491e7b69e4244ad4002bc14e878a34207e38c29600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003b5565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003ac9062000a7f565b60405180910390fd5b5b5b5b5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506b015b6a759f4835dc24000000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b015b6a759f4835dc24000000604051620004cd919062000abc565b60405180910390a3600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000569919062000b43565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000618919062000b43565b306040518363ffffffff1660e01b81526004016200063892919062000b86565b6020604051808303816000875af115801562000658573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200067e919062000b43565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200078d33600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620008b460201b60201c565b620007e230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620008b460201b60201c565b62000c25565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200091d9062000c03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000998576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200098f9062000c03565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600082825260208201905092915050565b7f436861696e206e6f742076616c69640000000000000000000000000000000000600082015250565b600062000a67600f8362000a1e565b915062000a748262000a2f565b602082019050919050565b6000602082019050818103600083015262000a9a8162000a58565b9050919050565b6000819050919050565b62000ab68162000aa1565b82525050565b600060208201905062000ad3600083018462000aab565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b0b8262000ade565b9050919050565b62000b1d8162000afe565b811462000b2957600080fd5b50565b60008151905062000b3d8162000b12565b92915050565b60006020828403121562000b5c5762000b5b62000ad9565b5b600062000b6c8482850162000b2c565b91505092915050565b62000b808162000afe565b82525050565b600060408201905062000b9d600083018562000b75565b62000bac602083018462000b75565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600062000beb60138362000a1e565b915062000bf88262000bb3565b602082019050919050565b6000602082019050818103600083015262000c1e8162000bdc565b9050919050565b61324a8062000c356000396000f3fe6080604052600436106101d15760003560e01c806354de7bee116100f7578063a61699c411610095578063dc9d75b011610064578063dc9d75b014610663578063dd62ed3e1461068e578063e9451f5f146106cb578063f2fde38b146106f6576101d8565b8063a61699c4146105a9578063a9059cbb146105d2578063c31c9c071461060f578063d5914dc01461063a576101d8565b8063893d20e8116100d1578063893d20e8146105115780638a8c523c1461053c5780638da5cb5b1461055357806395d89b411461057e576101d8565b806354de7bee1461049257806370a08231146104bd578063715018a6146104fa576101d8565b806318160ddd1161016f578063313ce5671161013e578063313ce567146103e85780633cd17c96146104135780633eaaf86b1461043c578063452ed4f114610467576101d8565b806318160ddd146103185780631dc369451461034357806323b872dd1461036e57806327889862146103ab576101d8565b806306fdde03116101ab57806306fdde031461025e578063095ea7b3146102895780630faba554146102c6578063111a60b0146102ef576101d8565b806303fd2a45146101dd5780630445b66714610208578063064a59d014610233576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261071f565b6040516101ff91906125a2565b60405180910390f35b34801561021457600080fd5b5061021d610725565b60405161022a91906125d6565b60405180910390f35b34801561023f57600080fd5b50610248610742565b604051610255919061260c565b60405180910390f35b34801561026a57600080fd5b50610273610755565b60405161028091906126b7565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190612736565b610792565b6040516102bd919061260c565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906127a2565b6107a9565b005b3480156102fb57600080fd5b50610316600480360381019061031191906127e2565b610880565b005b34801561032457600080fd5b5061032d6109a5565b60405161033a91906125d6565b60405180910390f35b34801561034f57600080fd5b506103586109d1565b60405161036591906125d6565b60405180910390f35b34801561037a57600080fd5b506103956004803603810190610390919061280f565b6109d6565b6040516103a2919061260c565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612862565b610b23565b6040516103df919061260c565b60405180910390f35b3480156103f457600080fd5b506103fd610b79565b60405161040a91906128ab565b60405180910390f35b34801561041f57600080fd5b5061043a600480360381019061043591906127a2565b610b9a565b005b34801561044857600080fd5b50610451610dea565b60405161045e91906125d6565b60405180910390f35b34801561047357600080fd5b5061047c610dfa565b60405161048991906125a2565b60405180910390f35b34801561049e57600080fd5b506104a7610e20565b6040516104b491906125d6565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df9190612862565b610e25565b6040516104f191906125d6565b60405180910390f35b34801561050657600080fd5b5061050f610e6e565b005b34801561051d57600080fd5b50610526610ef6565b60405161053391906125a2565b60405180910390f35b34801561054857600080fd5b50610551610f05565b005b34801561055f57600080fd5b5061056861101a565b60405161057591906125a2565b60405180910390f35b34801561058a57600080fd5b50610593611043565b6040516105a091906126b7565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb91906128c6565b611080565b005b3480156105de57600080fd5b506105f960048036038101906105f49190612736565b6111bb565b604051610606919061260c565b60405180910390f35b34801561061b57600080fd5b506106246111d3565b6040516106319190612965565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190612862565b6111f9565b005b34801561066f57600080fd5b50610678611307565b60405161068591906125d6565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906128c6565b61130d565b6040516106c291906125d6565b60405180910390f35b3480156106d757600080fd5b506106e0611394565b6040516106ed91906125d6565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190612862565b611399565b005b61dead81565b6113886b015b6a759f4835dc2400000061073f91906129de565b81565b600a60149054906101000a900460ff1681565b60606040518060400160405280600c81526020017f42616279646f676520322e300000000000000000000000000000000000000000815250905090565b600061079f338484611490565b6001905092915050565b6107b16115f4565b73ffffffffffffffffffffffffffffffffffffffff166107cf61101a565b73ffffffffffffffffffffffffffffffffffffffff1614610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c90612a5b565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108886115f4565b73ffffffffffffffffffffffffffffffffffffffff166108a661101a565b73ffffffffffffffffffffffffffffffffffffffff16146108fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f390612a5b565b60405180910390fd5b801515600760009054906101000a900460ff16151503610951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094890612ac7565b60405180910390fd5b80600760006101000a81548160ff0219169083151502179055507f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e88160405161099a919061260c565b60405180910390a150565b6000806b015b6a759f4835dc24000000036109bf57600080fd5b6b015b6a759f4835dc24000000905090565b600081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b0f5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b079190612ae7565b925050819055505b610b1a8484846115fc565b90509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806b015b6a759f4835dc2400000003610b9357600080fd5b6009905090565b610ba26115f4565b73ffffffffffffffffffffffffffffffffffffffff16610bc061101a565b73ffffffffffffffffffffffffffffffffffffffff1614610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90612a5b565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90612b67565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b7645138282604051610dde929190612b87565b60405180910390a15050565b6b015b6a759f4835dc2400000081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e766115f4565b73ffffffffffffffffffffffffffffffffffffffff16610e9461101a565b73ffffffffffffffffffffffffffffffffffffffff1614610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612a5b565b60405180910390fd5b610ef460006119ed565b565b6000610f0061101a565b905090565b610f0d6115f4565b73ffffffffffffffffffffffffffffffffffffffff16610f2b61101a565b73ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7890612a5b565b60405180910390fd5b600a60149054906101000a900460ff1615610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890612bfc565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055507fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f42616279646f6765322e30000000000000000000000000000000000000000000815250905090565b6110886115f4565b73ffffffffffffffffffffffffffffffffffffffff166110a661101a565b73ffffffffffffffffffffffffffffffffffffffff16146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390612a5b565b60405180910390fd5b81600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb7dbb12e3d7d2f1359cb61a83553096a35374fe4c0b5624717a5c59b853e77c182826040516111af929190612c1c565b60405180910390a15050565b60006111c83384846115fc565b506001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112016115f4565b73ffffffffffffffffffffffffffffffffffffffff1661121f61101a565b73ffffffffffffffffffffffffffffffffffffffff1614611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90612a5b565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f03b62011431502c791d443ee6149c9ec9b43632aeb5eb55c621104c128fe02f7816040516112fc91906125a2565b60405180910390a150565b6103e881565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601e81565b6113a16115f4565b73ffffffffffffffffffffffffffffffffffffffff166113bf61101a565b73ffffffffffffffffffffffffffffffffffffffff1614611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90612a5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90612cb7565b60405180910390fd5b61148d816119ed565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690612d23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612d23565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166990612db5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d890612e47565b60405180910390fd5b60008311611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b90612ed9565b60405180910390fd5b61172e8585611ab1565b1561178357600a60149054906101000a900460ff16611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990612f45565b60405180910390fd5b5b61178d8585611ccc565b80156117a65750600a60159054906101000a900460ff16155b80156117b857506117b78585611d7e565b5b156117f65760006117c830610e25565b90506113886b015b6a759f4835dc240000006117e491906129de565b81106117f4576117f381611e49565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118975750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118a157600090505b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f09190612ae7565b925050819055506000816119045783611923565b61192286611912888861237c565b61191c8989611ccc565b8761242e565b5b905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119749190612f65565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119d891906125d6565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611abc61101a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b2a5750611afa61101a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b695750611b3961101a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbf5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c155750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c4f575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c885750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d725750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b600080600760009054906101000a900460ff168015611de75750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e3d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600a60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e8157611e80612f99565b5b604051908082528060200260200182016040528015611eaf5781602001602082028036833780820191505090505b5090503081600081518110611ec757611ec6612fc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f92919061300c565b81600181518110611fa657611fa5612fc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612169577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121cd959493929190613132565b600060405180830381600087803b1580156121e757600080fd5b505af19250505080156121f8575060015b612202575061235e565b6000806003600247612214919061318c565b61221e91906129de565b905060008111156122bd57600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b890604051612273906131ff565b600060405180830381858888f193505050503d80600081146122b1576040519150601f19603f3d011682016040523d82523d6000602084013e6122b6565b606091505b5050809250505b600047111561235a57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b890604051612310906131ff565b600060405180830381858888f193505050503d806000811461234e576040519150601f19603f3d011682016040523d82523d6000602084013e612353565b606091505b5050809250505b5050505b6000600a60156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124225750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b60008084156124405760009050612455565b831561244f57601e9050612454565b600090505b5b600081036124665782915050612559565b60006103e88285612477919061318c565b61248191906129de565b905060008111156125485780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124db9190612f65565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253f91906125d6565b60405180910390a35b80846125549190612ae7565b925050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061258c82612561565b9050919050565b61259c81612581565b82525050565b60006020820190506125b76000830184612593565b92915050565b6000819050919050565b6125d0816125bd565b82525050565b60006020820190506125eb60008301846125c7565b92915050565b60008115159050919050565b612606816125f1565b82525050565b600060208201905061262160008301846125fd565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612661578082015181840152602081019050612646565b60008484015250505050565b6000601f19601f8301169050919050565b600061268982612627565b6126938185612632565b93506126a3818560208601612643565b6126ac8161266d565b840191505092915050565b600060208201905081810360008301526126d1818461267e565b905092915050565b600080fd5b6126e781612581565b81146126f257600080fd5b50565b600081359050612704816126de565b92915050565b612713816125bd565b811461271e57600080fd5b50565b6000813590506127308161270a565b92915050565b6000806040838503121561274d5761274c6126d9565b5b600061275b858286016126f5565b925050602061276c85828601612721565b9150509250929050565b61277f816125f1565b811461278a57600080fd5b50565b60008135905061279c81612776565b92915050565b600080604083850312156127b9576127b86126d9565b5b60006127c7858286016126f5565b92505060206127d88582860161278d565b9150509250929050565b6000602082840312156127f8576127f76126d9565b5b60006128068482850161278d565b91505092915050565b600080600060608486031215612828576128276126d9565b5b6000612836868287016126f5565b9350506020612847868287016126f5565b925050604061285886828701612721565b9150509250925092565b600060208284031215612878576128776126d9565b5b6000612886848285016126f5565b91505092915050565b600060ff82169050919050565b6128a58161288f565b82525050565b60006020820190506128c0600083018461289c565b92915050565b600080604083850312156128dd576128dc6126d9565b5b60006128eb858286016126f5565b92505060206128fc858286016126f5565b9150509250929050565b6000819050919050565b600061292b61292661292184612561565b612906565b612561565b9050919050565b600061293d82612910565b9050919050565b600061294f82612932565b9050919050565b61295f81612944565b82525050565b600060208201905061297a6000830184612956565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129e9826125bd565b91506129f4836125bd565b925082612a0457612a03612980565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a45602083612632565b9150612a5082612a0f565b602082019050919050565b60006020820190508181036000830152612a7481612a38565b9050919050565b7f426f6f6c206973207468652073616d6500000000000000000000000000000000600082015250565b6000612ab1601083612632565b9150612abc82612a7b565b602082019050919050565b60006020820190508181036000830152612ae081612aa4565b9050919050565b6000612af2826125bd565b9150612afd836125bd565b9250828203905081811115612b1557612b146129af565b5b92915050565b7f53616d6520626f6f6c0000000000000000000000000000000000000000000000600082015250565b6000612b51600983612632565b9150612b5c82612b1b565b602082019050919050565b60006020820190508181036000830152612b8081612b44565b9050919050565b6000604082019050612b9c6000830185612593565b612ba960208301846125fd565b9392505050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612be6601783612632565b9150612bf182612bb0565b602082019050919050565b60006020820190508181036000830152612c1581612bd9565b9050919050565b6000604082019050612c316000830185612593565b612c3e6020830184612593565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ca1602683612632565b9150612cac82612c45565b604082019050919050565b60006020820190508181036000830152612cd081612c94565b9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612d0d601383612632565b9150612d1882612cd7565b602082019050919050565b60006020820190508181036000830152612d3c81612d00565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d9f602383612632565b9150612daa82612d43565b604082019050919050565b60006020820190508181036000830152612dce81612d92565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e31602583612632565b9150612e3c82612dd5565b604082019050919050565b60006020820190508181036000830152612e6081612e24565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612ec3602983612632565b9150612ece82612e67565b604082019050919050565b60006020820190508181036000830152612ef281612eb6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612f2f601683612632565b9150612f3a82612ef9565b602082019050919050565b60006020820190508181036000830152612f5e81612f22565b9050919050565b6000612f70826125bd565b9150612f7b836125bd565b9250828201905080821115612f9357612f926129af565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613006816126de565b92915050565b600060208284031215613022576130216126d9565b5b600061303084828501612ff7565b91505092915050565b6000819050919050565b600061305e61305961305484613039565b612906565b6125bd565b9050919050565b61306e81613043565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130a981612581565b82525050565b60006130bb83836130a0565b60208301905092915050565b6000602082019050919050565b60006130df82613074565b6130e9818561307f565b93506130f483613090565b8060005b8381101561312557815161310c88826130af565b9750613117836130c7565b9250506001810190506130f8565b5085935050505092915050565b600060a08201905061314760008301886125c7565b6131546020830187613065565b818103604083015261316681866130d4565b90506131756060830185612593565b61318260808301846125c7565b9695505050505050565b6000613197826125bd565b91506131a2836125bd565b92508282026131b0816125bd565b915082820484148315176131c7576131c66129af565b5b5092915050565b600081905092915050565b50565b60006131e96000836131ce565b91506131f4826131d9565b600082019050919050565b600061320a826131dc565b915081905091905056fea26469706673582212209bf55e41107ec5a8b5aacc7ee42af3337f1e88ee31a92d6384b592be1c382fca64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806354de7bee116100f7578063a61699c411610095578063dc9d75b011610064578063dc9d75b014610663578063dd62ed3e1461068e578063e9451f5f146106cb578063f2fde38b146106f6576101d8565b8063a61699c4146105a9578063a9059cbb146105d2578063c31c9c071461060f578063d5914dc01461063a576101d8565b8063893d20e8116100d1578063893d20e8146105115780638a8c523c1461053c5780638da5cb5b1461055357806395d89b411461057e576101d8565b806354de7bee1461049257806370a08231146104bd578063715018a6146104fa576101d8565b806318160ddd1161016f578063313ce5671161013e578063313ce567146103e85780633cd17c96146104135780633eaaf86b1461043c578063452ed4f114610467576101d8565b806318160ddd146103185780631dc369451461034357806323b872dd1461036e57806327889862146103ab576101d8565b806306fdde03116101ab57806306fdde031461025e578063095ea7b3146102895780630faba554146102c6578063111a60b0146102ef576101d8565b806303fd2a45146101dd5780630445b66714610208578063064a59d014610233576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261071f565b6040516101ff91906125a2565b60405180910390f35b34801561021457600080fd5b5061021d610725565b60405161022a91906125d6565b60405180910390f35b34801561023f57600080fd5b50610248610742565b604051610255919061260c565b60405180910390f35b34801561026a57600080fd5b50610273610755565b60405161028091906126b7565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190612736565b610792565b6040516102bd919061260c565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906127a2565b6107a9565b005b3480156102fb57600080fd5b50610316600480360381019061031191906127e2565b610880565b005b34801561032457600080fd5b5061032d6109a5565b60405161033a91906125d6565b60405180910390f35b34801561034f57600080fd5b506103586109d1565b60405161036591906125d6565b60405180910390f35b34801561037a57600080fd5b506103956004803603810190610390919061280f565b6109d6565b6040516103a2919061260c565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612862565b610b23565b6040516103df919061260c565b60405180910390f35b3480156103f457600080fd5b506103fd610b79565b60405161040a91906128ab565b60405180910390f35b34801561041f57600080fd5b5061043a600480360381019061043591906127a2565b610b9a565b005b34801561044857600080fd5b50610451610dea565b60405161045e91906125d6565b60405180910390f35b34801561047357600080fd5b5061047c610dfa565b60405161048991906125a2565b60405180910390f35b34801561049e57600080fd5b506104a7610e20565b6040516104b491906125d6565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df9190612862565b610e25565b6040516104f191906125d6565b60405180910390f35b34801561050657600080fd5b5061050f610e6e565b005b34801561051d57600080fd5b50610526610ef6565b60405161053391906125a2565b60405180910390f35b34801561054857600080fd5b50610551610f05565b005b34801561055f57600080fd5b5061056861101a565b60405161057591906125a2565b60405180910390f35b34801561058a57600080fd5b50610593611043565b6040516105a091906126b7565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb91906128c6565b611080565b005b3480156105de57600080fd5b506105f960048036038101906105f49190612736565b6111bb565b604051610606919061260c565b60405180910390f35b34801561061b57600080fd5b506106246111d3565b6040516106319190612965565b60405180910390f35b34801561064657600080fd5b50610661600480360381019061065c9190612862565b6111f9565b005b34801561066f57600080fd5b50610678611307565b60405161068591906125d6565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b091906128c6565b61130d565b6040516106c291906125d6565b60405180910390f35b3480156106d757600080fd5b506106e0611394565b6040516106ed91906125d6565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190612862565b611399565b005b61dead81565b6113886b015b6a759f4835dc2400000061073f91906129de565b81565b600a60149054906101000a900460ff1681565b60606040518060400160405280600c81526020017f42616279646f676520322e300000000000000000000000000000000000000000815250905090565b600061079f338484611490565b6001905092915050565b6107b16115f4565b73ffffffffffffffffffffffffffffffffffffffff166107cf61101a565b73ffffffffffffffffffffffffffffffffffffffff1614610825576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081c90612a5b565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108886115f4565b73ffffffffffffffffffffffffffffffffffffffff166108a661101a565b73ffffffffffffffffffffffffffffffffffffffff16146108fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f390612a5b565b60405180910390fd5b801515600760009054906101000a900460ff16151503610951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094890612ac7565b60405180910390fd5b80600760006101000a81548160ff0219169083151502179055507f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e88160405161099a919061260c565b60405180910390a150565b6000806b015b6a759f4835dc24000000036109bf57600080fd5b6b015b6a759f4835dc24000000905090565b600081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b0f5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b079190612ae7565b925050819055505b610b1a8484846115fc565b90509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806b015b6a759f4835dc2400000003610b9357600080fd5b6009905090565b610ba26115f4565b73ffffffffffffffffffffffffffffffffffffffff16610bc061101a565b73ffffffffffffffffffffffffffffffffffffffff1614610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90612a5b565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610ca8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9f90612b67565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b7645138282604051610dde929190612b87565b60405180910390a15050565b6b015b6a759f4835dc2400000081565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e766115f4565b73ffffffffffffffffffffffffffffffffffffffff16610e9461101a565b73ffffffffffffffffffffffffffffffffffffffff1614610eea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee190612a5b565b60405180910390fd5b610ef460006119ed565b565b6000610f0061101a565b905090565b610f0d6115f4565b73ffffffffffffffffffffffffffffffffffffffff16610f2b61101a565b73ffffffffffffffffffffffffffffffffffffffff1614610f81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7890612a5b565b60405180910390fd5b600a60149054906101000a900460ff1615610fd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc890612bfc565b60405180910390fd5b6001600a60146101000a81548160ff0219169083151502179055507fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600b81526020017f42616279646f6765322e30000000000000000000000000000000000000000000815250905090565b6110886115f4565b73ffffffffffffffffffffffffffffffffffffffff166110a661101a565b73ffffffffffffffffffffffffffffffffffffffff16146110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390612a5b565b60405180910390fd5b81600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb7dbb12e3d7d2f1359cb61a83553096a35374fe4c0b5624717a5c59b853e77c182826040516111af929190612c1c565b60405180910390a15050565b60006111c83384846115fc565b506001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112016115f4565b73ffffffffffffffffffffffffffffffffffffffff1661121f61101a565b73ffffffffffffffffffffffffffffffffffffffff1614611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c90612a5b565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f03b62011431502c791d443ee6149c9ec9b43632aeb5eb55c621104c128fe02f7816040516112fc91906125a2565b60405180910390a150565b6103e881565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b601e81565b6113a16115f4565b73ffffffffffffffffffffffffffffffffffffffff166113bf61101a565b73ffffffffffffffffffffffffffffffffffffffff1614611415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140c90612a5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611484576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147b90612cb7565b60405180910390fd5b61148d816119ed565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690612d23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361156e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156590612d23565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611672576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166990612db5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d890612e47565b60405180910390fd5b60008311611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b90612ed9565b60405180910390fd5b61172e8585611ab1565b1561178357600a60149054906101000a900460ff16611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990612f45565b60405180910390fd5b5b61178d8585611ccc565b80156117a65750600a60159054906101000a900460ff16155b80156117b857506117b78585611d7e565b5b156117f65760006117c830610e25565b90506113886b015b6a759f4835dc240000006117e491906129de565b81106117f4576117f381611e49565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118975750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118a157600090505b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546118f09190612ae7565b925050819055506000816119045783611923565b61192286611912888861237c565b61191c8989611ccc565b8761242e565b5b905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119749190612f65565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119d891906125d6565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611abc61101a565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b2a5750611afa61101a565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b695750611b3961101a565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611bbf5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c155750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611c4f575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c885750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cc057503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d725750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b600080600760009054906101000a900460ff168015611de75750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e3d5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600a60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e8157611e80612f99565b5b604051908082528060200260200182016040528015611eaf5781602001602082028036833780820191505090505b5090503081600081518110611ec757611ec6612fc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f92919061300c565b81600181518110611fa657611fa5612fc8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612169577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016121cd959493929190613132565b600060405180830381600087803b1580156121e757600080fd5b505af19250505080156121f8575060015b612202575061235e565b6000806003600247612214919061318c565b61221e91906129de565b905060008111156122bd57600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16816188b890604051612273906131ff565b600060405180830381858888f193505050503d80600081146122b1576040519150601f19603f3d011682016040523d82523d6000602084013e6122b6565b606091505b5050809250505b600047111561235a57600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b890604051612310906131ff565b600060405180830381858888f193505050503d806000811461234e576040519150601f19603f3d011682016040523d82523d6000602084013e612353565b606091505b5050809250505b5050505b6000600a60156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124225750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b60008084156124405760009050612455565b831561244f57601e9050612454565b600090505b5b600081036124665782915050612559565b60006103e88285612477919061318c565b61248191906129de565b905060008111156125485780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124db9190612f65565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161253f91906125d6565b60405180910390a35b80846125549190612ae7565b925050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061258c82612561565b9050919050565b61259c81612581565b82525050565b60006020820190506125b76000830184612593565b92915050565b6000819050919050565b6125d0816125bd565b82525050565b60006020820190506125eb60008301846125c7565b92915050565b60008115159050919050565b612606816125f1565b82525050565b600060208201905061262160008301846125fd565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612661578082015181840152602081019050612646565b60008484015250505050565b6000601f19601f8301169050919050565b600061268982612627565b6126938185612632565b93506126a3818560208601612643565b6126ac8161266d565b840191505092915050565b600060208201905081810360008301526126d1818461267e565b905092915050565b600080fd5b6126e781612581565b81146126f257600080fd5b50565b600081359050612704816126de565b92915050565b612713816125bd565b811461271e57600080fd5b50565b6000813590506127308161270a565b92915050565b6000806040838503121561274d5761274c6126d9565b5b600061275b858286016126f5565b925050602061276c85828601612721565b9150509250929050565b61277f816125f1565b811461278a57600080fd5b50565b60008135905061279c81612776565b92915050565b600080604083850312156127b9576127b86126d9565b5b60006127c7858286016126f5565b92505060206127d88582860161278d565b9150509250929050565b6000602082840312156127f8576127f76126d9565b5b60006128068482850161278d565b91505092915050565b600080600060608486031215612828576128276126d9565b5b6000612836868287016126f5565b9350506020612847868287016126f5565b925050604061285886828701612721565b9150509250925092565b600060208284031215612878576128776126d9565b5b6000612886848285016126f5565b91505092915050565b600060ff82169050919050565b6128a58161288f565b82525050565b60006020820190506128c0600083018461289c565b92915050565b600080604083850312156128dd576128dc6126d9565b5b60006128eb858286016126f5565b92505060206128fc858286016126f5565b9150509250929050565b6000819050919050565b600061292b61292661292184612561565b612906565b612561565b9050919050565b600061293d82612910565b9050919050565b600061294f82612932565b9050919050565b61295f81612944565b82525050565b600060208201905061297a6000830184612956565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006129e9826125bd565b91506129f4836125bd565b925082612a0457612a03612980565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a45602083612632565b9150612a5082612a0f565b602082019050919050565b60006020820190508181036000830152612a7481612a38565b9050919050565b7f426f6f6c206973207468652073616d6500000000000000000000000000000000600082015250565b6000612ab1601083612632565b9150612abc82612a7b565b602082019050919050565b60006020820190508181036000830152612ae081612aa4565b9050919050565b6000612af2826125bd565b9150612afd836125bd565b9250828203905081811115612b1557612b146129af565b5b92915050565b7f53616d6520626f6f6c0000000000000000000000000000000000000000000000600082015250565b6000612b51600983612632565b9150612b5c82612b1b565b602082019050919050565b60006020820190508181036000830152612b8081612b44565b9050919050565b6000604082019050612b9c6000830185612593565b612ba960208301846125fd565b9392505050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612be6601783612632565b9150612bf182612bb0565b602082019050919050565b60006020820190508181036000830152612c1581612bd9565b9050919050565b6000604082019050612c316000830185612593565b612c3e6020830184612593565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612ca1602683612632565b9150612cac82612c45565b604082019050919050565b60006020820190508181036000830152612cd081612c94565b9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612d0d601383612632565b9150612d1882612cd7565b602082019050919050565b60006020820190508181036000830152612d3c81612d00565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612d9f602383612632565b9150612daa82612d43565b604082019050919050565b60006020820190508181036000830152612dce81612d92565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e31602583612632565b9150612e3c82612dd5565b604082019050919050565b60006020820190508181036000830152612e6081612e24565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612ec3602983612632565b9150612ece82612e67565b604082019050919050565b60006020820190508181036000830152612ef281612eb6565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612f2f601683612632565b9150612f3a82612ef9565b602082019050919050565b60006020820190508181036000830152612f5e81612f22565b9050919050565b6000612f70826125bd565b9150612f7b836125bd565b9250828201905080821115612f9357612f926129af565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613006816126de565b92915050565b600060208284031215613022576130216126d9565b5b600061303084828501612ff7565b91505092915050565b6000819050919050565b600061305e61305961305484613039565b612906565b6125bd565b9050919050565b61306e81613043565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6130a981612581565b82525050565b60006130bb83836130a0565b60208301905092915050565b6000602082019050919050565b60006130df82613074565b6130e9818561307f565b93506130f483613090565b8060005b8381101561312557815161310c88826130af565b9750613117836130c7565b9250506001810190506130f8565b5085935050505092915050565b600060a08201905061314760008301886125c7565b6131546020830187613065565b818103604083015261316681866130d4565b90506131756060830185612593565b61318260808301846125c7565b9695505050505050565b6000613197826125bd565b91506131a2836125bd565b92508282026131b0816125bd565b915082820484148315176131c7576131c66129af565b5b5092915050565b600081905092915050565b50565b60006131e96000836131ce565b91506131f4826131d9565b600082019050919050565b600061320a826131dc565b915081905091905056fea26469706673582212209bf55e41107ec5a8b5aacc7ee42af3337f1e88ee31a92d6384b592be1c382fca64736f6c63430008130033

Deployed Bytecode Sourcemap

4943:9536:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6876:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6195:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6984:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5343:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8854:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9729:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10891:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4999:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6262:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9300:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9612:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5130:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13919:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6118:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6956:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6346:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5654:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;920:94;;;;;;;;;;;;;:::i;:::-;;5429:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14272:198;;;;;;;;;;;;;:::i;:::-;;697:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5253:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12158:240;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8677:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6692:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10746:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6392:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5515:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6303:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1022:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6876:73;6907:42;6876:73;:::o;6195:60::-;6250:5;6157:31;6235:20;;;;:::i;:::-;6195:60;:::o;6984:36::-;;;;;;;;;;;;;:::o;5343:80::-;5391:13;5415:5;;;;;;;;;;;;;;;;;5408:12;;5343:80;:::o;8854:161::-;8931:4;8948:37;8957:10;8969:7;8978:6;8948:8;:37::i;:::-;9003:4;8996:11;;8854:161;;;;:::o;9729:116::-;843:12;:10;:12::i;:::-;832:23;;:7;:5;:7::i;:::-;:23;;;824:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9830:7:::1;9812:6;:15;9819:7;9812:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;9729:116:::0;;:::o;10891:196::-;843:12;:10;:12::i;:::-;832:23;;:7;:5;:7::i;:::-;:23;;;824:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10983:5:::1;10968:20;;:11;;;;;;;;;;;:20;;::::0;10960:48:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11033:5;11019:11;;:19;;;;;;;;;;;;;;;;;;11054:25;11073:5;11054:25;;;;;;:::i;:::-;;;;;;;;10891:196:::0;:::o;4999:125::-;5054:7;5085:1;6157:31;5069:17;5065:36;;5090:8;;;5065:36;6157:31;5102:19;;4999:125;:::o;6262:34::-;6295:1;6262:34;:::o;9300:306::-;9400:4;9456:17;9421:11;:19;9433:6;9421:19;;;;;;;;;;;;;;;:31;9441:10;9421:31;;;;;;;;;;;;;;;;:52;9417:126;;9525:6;9490:11;:19;9502:6;9490:19;;;;;;;;;;;;;;;:31;9510:10;9490:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;9417:126;9562:36;9572:6;9580:9;9591:6;9562:9;:36::i;:::-;9555:43;;9300:306;;;;;:::o;9612:109::-;9674:4;9698:6;:15;9705:7;9698:15;;;;;;;;;;;;;;;;;;;;;;;;;9691:22;;9612:109;;;:::o;5130:117::-;5182:5;5211:1;6157:31;5195:17;5191:36;;5216:8;;;5191:36;6868:1;5228:16;;5130:117;:::o;13919:341::-;843:12;:10;:12::i;:::-;832:23;;:7;:5;:7::i;:::-;:23;;;824:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14046:5:::1;14017:34;;:16;:25;14034:7;14017:25;;;;;;;;;;;;;;;;;;;;;;;;;:34;;::::0;14009:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14107:5;14079:16;:25;14096:7;14079:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;14145:5;14127:6;:15;14134:7;14127:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14189:5;14165:12;:21;14178:7;14165:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14214:34;14233:7;14242:5;14214:34;;;;;;;:::i;:::-;;;;;;;;13919:341:::0;;:::o;6118:70::-;6157:31;6118:70;:::o;6956:21::-;;;;;;;;;;;;;:::o;6346:39::-;6384:1;6346:39;:::o;5654:117::-;5720:7;5747;:16;5755:7;5747:16;;;;;;;;;;;;;;;;5740:23;;5654:117;;;:::o;920:94::-;843:12;:10;:12::i;:::-;832:23;;:7;:5;:7::i;:::-;:23;;;824:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;985:21:::1;1003:1;985:9;:21::i;:::-;920:94::o:0;5429:80::-;5481:7;5499;:5;:7::i;:::-;5492:14;;5429:80;:::o;14272:198::-;843:12;:10;:12::i;:::-;832:23;;:7;:5;:7::i;:::-;:23;;;824:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14340:16:::1;;;;;;;;;;;14339:17;14331:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14418:4;14399:16;;:23;;;;;;;;;;;;;;;;;;14442:16;;;;;;;;;;14272:198::o:0;697:87::-;743:7;770:6;;;;;;;;;;;763:13;;697:87;:::o;5253:84::-;5303:13;5327:7;;;;;;;;;;;;;;;;;5320:14;;5253:84;:::o;12158:240::-;843:12;:10;:12::i;:::-;832:23;;:7;:5;:7::i;:::-;:23;;;824:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12277:9:::1;12250:16;;:37;;;;;;;;;;;;;;;;;;12326:10;12298:17;;:39;;;;;;;;;;;;;;;;;;12353:37;12368:9;12379:10;12353:37;;;;;;;:::i;:::-;;;;;;;;12158:240:::0;;:::o;8677:165::-;8755:4;8772:40;8782:10;8794:9;8805:6;8772:9;:40::i;:::-;;8830:4;8823:11;;8677:165;;;;:::o;6692:27::-;;;;;;;;;;;;;:::o;10746:137::-;843:12;:10;:12::i;:::-;832:23;;:7;:5;:7::i;:::-;:23;;;824:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10835:4:::1;10815:8;:17;10824:7;10815:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;10855:20;10867:7;10855:20;;;;;;:::i;:::-;;;;;;;;10746:137:::0;:::o;6392:47::-;6434:5;6392:47;:::o;5515:133::-;5599:7;5617:11;:19;5629:6;5617:19;;;;;;;;;;;;;;;:28;5637:7;5617:28;;;;;;;;;;;;;;;;5610:35;;5515:133;;;;:::o;6303:36::-;6337:2;6303:36;:::o;1022:192::-;843:12;:10;:12::i;:::-;832:23;;:7;:5;:7::i;:::-;:23;;;824:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1131:1:::1;1111:22;;:8;:22;;::::0;1103:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1187:19;1197:8;1187:9;:19::i;:::-;1022:192:::0;:::o;9027:261::-;9140:1;9122:20;;:6;:20;;;9114:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;9204:1;9185:21;;:7;:21;;;9177:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9274:6;9243:11;:19;9255:6;9243:19;;;;;;;;;;;;;;;:28;9263:7;9243:28;;;;;;;;;;;;;;;:37;;;;9027:261;;;:::o;217:107::-;262:15;305:10;290:26;;217:107;:::o;11095:1055::-;11175:4;11192:12;11207:4;11192:19;;11244:1;11230:16;;:2;:16;;;11222:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11321:1;11305:18;;:4;:18;;;11297:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11393:1;11384:6;:10;11376:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11457:25;11474:4;11479:2;11457:16;:25::i;:::-;11453:108;;;11507:16;;;;;;;;;;;11499:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11453:108;11578:17;11586:4;11592:2;11578:7;:17::i;:::-;:29;;;;;11601:6;;;;;;;;;;;11600:7;11578:29;:50;;;;;11611:17;11619:4;11625:2;11611:7;:17::i;:::-;11578:50;11575:232;;;11645:28;11676:24;11694:4;11676:9;:24::i;:::-;11645:55;;6250:5;6157:31;6235:20;;;;:::i;:::-;11718;:37;11715:81;;11759:34;11772:20;11759:12;:34::i;:::-;11715:81;11630:177;11575:232;11823:6;:12;11830:4;11823:12;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;11839:6;:10;11846:2;11839:10;;;;;;;;;;;;;;;;;;;;;;;;;11823:26;11819:73;;;11875:5;11865:15;;11819:73;11921:6;11904:7;:13;11912:4;11904:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11929:22;11955:7;11954:81;;12029:6;11954:81;;;11966:60;11976:4;11982:16;11989:4;11995:2;11982:6;:16::i;:::-;12000:17;12008:4;12014:2;12000:7;:17::i;:::-;12019:6;11966:9;:60::i;:::-;11954:81;11929:106;;12061:14;12046:7;:11;12054:2;12046:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;12097:2;12082:34;;12091:4;12082:34;;;12101:14;12082:34;;;;;;:::i;:::-;;;;;;;;12136:4;12129:11;;;;11095:1055;;;;;:::o;1222:173::-;1278:16;1297:6;;;;;;;;;;;1278:25;;1323:8;1314:6;;:17;;;;;;;;;;;;;;;;;;1378:8;1347:40;;1368:8;1347:40;;;;;;;;;;;;1267:128;1222:173;:::o;9853:338::-;9928:4;9947:14;9971:7;:5;:7::i;:::-;9964:14;;:3;:14;;;;:45;;;;;10002:7;:5;:7::i;:::-;9995:14;;:3;:14;;;;9964:45;:70;;;;;10027:7;:5;:7::i;:::-;10013:21;;:10;:21;;;;9964:70;:105;;;;;10052:12;:17;10065:3;10052:17;;;;;;;;;;;;;;;;;;;;;;;;;10051:18;9964:105;:128;;;;;10075:12;:17;10088:3;10075:17;;;;;;;;;;;;;;;;;;;;;;;;;10074:18;9964:128;:143;;;;;6907:42;10096:11;;:3;:11;;;;9964:143;:164;;;;;10126:1;10111:17;;:3;:17;;;;9964:164;:188;;;;;10147:4;10132:20;;:3;:20;;;;9964:188;9947:205;;10174:9;10167:16;;;9853:338;;;;:::o;10368:165::-;10434:4;10452:13;10468:8;:13;10477:3;10468:13;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;;10486:8;:13;10495:3;10486:13;;;;;;;;;;;;;;;;;;;;;;;;;10485:14;10468:31;10452:47;;10517:8;10510:15;;;10368:165;;;;:::o;10542:196::-;10608:4;10625:12;10640:11;;;;;;;;;;;:37;;;;;10656:16;:21;10673:3;10656:21;;;;;;;;;;;;;;;;;;;;;;;;;10655:22;10640:37;:63;;;;;10682:16;:21;10699:3;10682:21;;;;;;;;;;;;;;;;;;;;;;;;;10681:22;10640:63;10625:78;;10723:7;10716:14;;;10542:196;;;;:::o;12946:961::-;7099:4;7090:6;;:13;;;;;;;;;;;;;;;;;;13039:21:::1;13077:1;13063:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13039:40;;13108:4;13090;13095:1;13090:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13134:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13124:4;13129:1;13124:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;13219:17;13168:11;:26;13188:4;13168:26;;;;;;;;;;;;;;;:47;13203:10;;;;;;;;;;;13168:47;;;;;;;;;;;;;;;;:68;13164:168;;13303:17;13253:11;:26;13273:4;13253:26;;;;;;;;;;;;;;;:47;13288:10;;;;;;;;;;;13253:47;;;;;;;;;;;;;;;:67;;;;13164:168;13348:10;;;;;;;;;;;:61;;;13424:20;13459:1;13475:4;13502;13522:15;13348:200;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13344:247;;13573:7;;;13344:247;13601:12;13626:16:::0;13673:1:::1;13669;13645:21;:25;;;;:::i;:::-;:29;;;;:::i;:::-;13626:48;;13701:1;13690:8;:12;13687:87;;;13718:16;;;;;;;;;;;:21;;13747:8;13762:5;13718:54;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13705:67;;;;;13687:87;13811:1;13787:21;:25;13784:114;;;13828:17;;;;;;;;;;;:22;;13858:21;13886:5;13828:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13815:81;;;;;13784:114;13018:889;;;7114:1;7135:5:::0;7126:6;;:14;;;;;;;;;;;;;;;;;;12946:961;:::o;10199:161::-;10264:4;10281:12;10297:8;:13;10306:3;10297:13;;;;;;;;;;;;;;;;;;;;;;;;;10296:14;:31;;;;;10314:8;:13;10323:3;10314:13;;;;;;;;;;;;;;;;;;;;;;;;;10296:31;10281:46;;10345:7;10338:14;;;10199:161;;;;:::o;12408:530::-;12500:7;12520:11;12546:5;12542:84;;;6295:1;12554:12;;12542:84;;;12578:6;12574:52;;;6337:2;12587:13;;12574:52;;;6384:1;12609:17;;12574:52;12542:84;12649:1;12642:3;:8;12638:28;;12660:6;12653:13;;;;;12638:28;12677:17;6434:5;12706:3;12697:6;:12;;;;:::i;:::-;:30;;;;:::i;:::-;12677:50;;12754:1;12742:9;:13;12738:157;;;12800:9;12774:7;:22;12790:4;12774:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;12852:4;12829:40;;12838:4;12829:40;;;12859:9;12829:40;;;;;;:::i;:::-;;;;;;;;12738:157;12921:9;12912:6;:18;;;;:::i;:::-;12905:25;;;;12408:530;;;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:77::-;630:7;659:5;648:16;;593:77;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:90::-;1062:7;1105:5;1098:13;1091:21;1080:32;;1028:90;;;:::o;1124:109::-;1205:21;1220:5;1205:21;:::i;:::-;1200:3;1193:34;1124:109;;:::o;1239:210::-;1326:4;1364:2;1353:9;1349:18;1341:26;;1377:65;1439:1;1428:9;1424:17;1415:6;1377:65;:::i;:::-;1239:210;;;;:::o;1455:99::-;1507:6;1541:5;1535:12;1525:22;;1455:99;;;:::o;1560:169::-;1644:11;1678:6;1673:3;1666:19;1718:4;1713:3;1709:14;1694:29;;1560:169;;;;:::o;1735:246::-;1816:1;1826:113;1840:6;1837:1;1834:13;1826:113;;;1925:1;1920:3;1916:11;1910:18;1906:1;1901:3;1897:11;1890:39;1862:2;1859:1;1855:10;1850:15;;1826:113;;;1973:1;1964:6;1959:3;1955:16;1948:27;1797:184;1735:246;;;:::o;1987:102::-;2028:6;2079:2;2075:7;2070:2;2063:5;2059:14;2055:28;2045:38;;1987:102;;;:::o;2095:377::-;2183:3;2211:39;2244:5;2211:39;:::i;:::-;2266:71;2330:6;2325:3;2266:71;:::i;:::-;2259:78;;2346:65;2404:6;2399:3;2392:4;2385:5;2381:16;2346:65;:::i;:::-;2436:29;2458:6;2436:29;:::i;:::-;2431:3;2427:39;2420:46;;2187:285;2095:377;;;;:::o;2478:313::-;2591:4;2629:2;2618:9;2614:18;2606:26;;2678:9;2672:4;2668:20;2664:1;2653:9;2649:17;2642:47;2706:78;2779:4;2770:6;2706:78;:::i;:::-;2698:86;;2478:313;;;;:::o;2878:117::-;2987:1;2984;2977:12;3124:122;3197:24;3215:5;3197:24;:::i;:::-;3190:5;3187:35;3177:63;;3236:1;3233;3226:12;3177:63;3124:122;:::o;3252:139::-;3298:5;3336:6;3323:20;3314:29;;3352:33;3379:5;3352:33;:::i;:::-;3252:139;;;;:::o;3397:122::-;3470:24;3488:5;3470:24;:::i;:::-;3463:5;3460:35;3450:63;;3509:1;3506;3499:12;3450:63;3397:122;:::o;3525:139::-;3571:5;3609:6;3596:20;3587:29;;3625:33;3652:5;3625:33;:::i;:::-;3525:139;;;;:::o;3670:474::-;3738:6;3746;3795:2;3783:9;3774:7;3770:23;3766:32;3763:119;;;3801:79;;:::i;:::-;3763:119;3921:1;3946:53;3991:7;3982:6;3971:9;3967:22;3946:53;:::i;:::-;3936:63;;3892:117;4048:2;4074:53;4119:7;4110:6;4099:9;4095:22;4074:53;:::i;:::-;4064:63;;4019:118;3670:474;;;;;:::o;4150:116::-;4220:21;4235:5;4220:21;:::i;:::-;4213:5;4210:32;4200:60;;4256:1;4253;4246:12;4200:60;4150:116;:::o;4272:133::-;4315:5;4353:6;4340:20;4331:29;;4369:30;4393:5;4369:30;:::i;:::-;4272:133;;;;:::o;4411:468::-;4476:6;4484;4533:2;4521:9;4512:7;4508:23;4504:32;4501:119;;;4539:79;;:::i;:::-;4501:119;4659:1;4684:53;4729:7;4720:6;4709:9;4705:22;4684:53;:::i;:::-;4674:63;;4630:117;4786:2;4812:50;4854:7;4845:6;4834:9;4830:22;4812:50;:::i;:::-;4802:60;;4757:115;4411:468;;;;;:::o;4885:323::-;4941:6;4990:2;4978:9;4969:7;4965:23;4961:32;4958:119;;;4996:79;;:::i;:::-;4958:119;5116:1;5141:50;5183:7;5174:6;5163:9;5159:22;5141:50;:::i;:::-;5131:60;;5087:114;4885:323;;;;:::o;5214:619::-;5291:6;5299;5307;5356:2;5344:9;5335:7;5331:23;5327:32;5324:119;;;5362:79;;:::i;:::-;5324:119;5482:1;5507:53;5552:7;5543:6;5532:9;5528:22;5507:53;:::i;:::-;5497:63;;5453:117;5609:2;5635:53;5680:7;5671:6;5660:9;5656:22;5635:53;:::i;:::-;5625:63;;5580:118;5737:2;5763:53;5808:7;5799:6;5788:9;5784:22;5763:53;:::i;:::-;5753:63;;5708:118;5214:619;;;;;:::o;5839:329::-;5898:6;5947:2;5935:9;5926:7;5922:23;5918:32;5915:119;;;5953:79;;:::i;:::-;5915:119;6073:1;6098:53;6143:7;6134:6;6123:9;6119:22;6098:53;:::i;:::-;6088:63;;6044:117;5839:329;;;;:::o;6174:86::-;6209:7;6249:4;6242:5;6238:16;6227:27;;6174:86;;;:::o;6266:112::-;6349:22;6365:5;6349:22;:::i;:::-;6344:3;6337:35;6266:112;;:::o;6384:214::-;6473:4;6511:2;6500:9;6496:18;6488:26;;6524:67;6588:1;6577:9;6573:17;6564:6;6524:67;:::i;:::-;6384:214;;;;:::o;6604:474::-;6672:6;6680;6729:2;6717:9;6708:7;6704:23;6700:32;6697:119;;;6735:79;;:::i;:::-;6697:119;6855:1;6880:53;6925:7;6916:6;6905:9;6901:22;6880:53;:::i;:::-;6870:63;;6826:117;6982:2;7008:53;7053:7;7044:6;7033:9;7029:22;7008:53;:::i;:::-;6998:63;;6953:118;6604:474;;;;;:::o;7084:60::-;7112:3;7133:5;7126:12;;7084:60;;;:::o;7150:142::-;7200:9;7233:53;7251:34;7260:24;7278:5;7260:24;:::i;:::-;7251:34;:::i;:::-;7233:53;:::i;:::-;7220:66;;7150:142;;;:::o;7298:126::-;7348:9;7381:37;7412:5;7381:37;:::i;:::-;7368:50;;7298:126;;;:::o;7430:143::-;7497:9;7530:37;7561:5;7530:37;:::i;:::-;7517:50;;7430:143;;;:::o;7579:165::-;7683:54;7731:5;7683:54;:::i;:::-;7678:3;7671:67;7579:165;;:::o;7750:256::-;7860:4;7898:2;7887:9;7883:18;7875:26;;7911:88;7996:1;7985:9;7981:17;7972:6;7911:88;:::i;:::-;7750:256;;;;:::o;8012:180::-;8060:77;8057:1;8050:88;8157:4;8154:1;8147:15;8181:4;8178:1;8171:15;8198:180;8246:77;8243:1;8236:88;8343:4;8340:1;8333:15;8367:4;8364:1;8357:15;8384:185;8424:1;8441:20;8459:1;8441:20;:::i;:::-;8436:25;;8475:20;8493:1;8475:20;:::i;:::-;8470:25;;8514:1;8504:35;;8519:18;;:::i;:::-;8504:35;8561:1;8558;8554:9;8549:14;;8384:185;;;;:::o;8575:182::-;8715:34;8711:1;8703:6;8699:14;8692:58;8575:182;:::o;8763:366::-;8905:3;8926:67;8990:2;8985:3;8926:67;:::i;:::-;8919:74;;9002:93;9091:3;9002:93;:::i;:::-;9120:2;9115:3;9111:12;9104:19;;8763:366;;;:::o;9135:419::-;9301:4;9339:2;9328:9;9324:18;9316:26;;9388:9;9382:4;9378:20;9374:1;9363:9;9359:17;9352:47;9416:131;9542:4;9416:131;:::i;:::-;9408:139;;9135:419;;;:::o;9560:166::-;9700:18;9696:1;9688:6;9684:14;9677:42;9560:166;:::o;9732:366::-;9874:3;9895:67;9959:2;9954:3;9895:67;:::i;:::-;9888:74;;9971:93;10060:3;9971:93;:::i;:::-;10089:2;10084:3;10080:12;10073:19;;9732:366;;;:::o;10104:419::-;10270:4;10308:2;10297:9;10293:18;10285:26;;10357:9;10351:4;10347:20;10343:1;10332:9;10328:17;10321:47;10385:131;10511:4;10385:131;:::i;:::-;10377:139;;10104:419;;;:::o;10529:194::-;10569:4;10589:20;10607:1;10589:20;:::i;:::-;10584:25;;10623:20;10641:1;10623:20;:::i;:::-;10618:25;;10667:1;10664;10660:9;10652:17;;10691:1;10685:4;10682:11;10679:37;;;10696:18;;:::i;:::-;10679:37;10529:194;;;;:::o;10729:159::-;10869:11;10865:1;10857:6;10853:14;10846:35;10729:159;:::o;10894:365::-;11036:3;11057:66;11121:1;11116:3;11057:66;:::i;:::-;11050:73;;11132:93;11221:3;11132:93;:::i;:::-;11250:2;11245:3;11241:12;11234:19;;10894:365;;;:::o;11265:419::-;11431:4;11469:2;11458:9;11454:18;11446:26;;11518:9;11512:4;11508:20;11504:1;11493:9;11489:17;11482:47;11546:131;11672:4;11546:131;:::i;:::-;11538:139;;11265:419;;;:::o;11690:320::-;11805:4;11843:2;11832:9;11828:18;11820:26;;11856:71;11924:1;11913:9;11909:17;11900:6;11856:71;:::i;:::-;11937:66;11999:2;11988:9;11984:18;11975:6;11937:66;:::i;:::-;11690:320;;;;;:::o;12016:173::-;12156:25;12152:1;12144:6;12140:14;12133:49;12016:173;:::o;12195:366::-;12337:3;12358:67;12422:2;12417:3;12358:67;:::i;:::-;12351:74;;12434:93;12523:3;12434:93;:::i;:::-;12552:2;12547:3;12543:12;12536:19;;12195:366;;;:::o;12567:419::-;12733:4;12771:2;12760:9;12756:18;12748:26;;12820:9;12814:4;12810:20;12806:1;12795:9;12791:17;12784:47;12848:131;12974:4;12848:131;:::i;:::-;12840:139;;12567:419;;;:::o;12992:332::-;13113:4;13151:2;13140:9;13136:18;13128:26;;13164:71;13232:1;13221:9;13217:17;13208:6;13164:71;:::i;:::-;13245:72;13313:2;13302:9;13298:18;13289:6;13245:72;:::i;:::-;12992:332;;;;;:::o;13330:225::-;13470:34;13466:1;13458:6;13454:14;13447:58;13539:8;13534:2;13526:6;13522:15;13515:33;13330:225;:::o;13561:366::-;13703:3;13724:67;13788:2;13783:3;13724:67;:::i;:::-;13717:74;;13800:93;13889:3;13800:93;:::i;:::-;13918:2;13913:3;13909:12;13902:19;;13561:366;;;:::o;13933:419::-;14099:4;14137:2;14126:9;14122:18;14114:26;;14186:9;14180:4;14176:20;14172:1;14161:9;14157:17;14150:47;14214:131;14340:4;14214:131;:::i;:::-;14206:139;;13933:419;;;:::o;14358:169::-;14498:21;14494:1;14486:6;14482:14;14475:45;14358:169;:::o;14533:366::-;14675:3;14696:67;14760:2;14755:3;14696:67;:::i;:::-;14689:74;;14772:93;14861:3;14772:93;:::i;:::-;14890:2;14885:3;14881:12;14874:19;;14533:366;;;:::o;14905:419::-;15071:4;15109:2;15098:9;15094:18;15086:26;;15158:9;15152:4;15148:20;15144:1;15133:9;15129:17;15122:47;15186:131;15312:4;15186:131;:::i;:::-;15178:139;;14905:419;;;:::o;15330:222::-;15470:34;15466:1;15458:6;15454:14;15447:58;15539:5;15534:2;15526:6;15522:15;15515:30;15330:222;:::o;15558:366::-;15700:3;15721:67;15785:2;15780:3;15721:67;:::i;:::-;15714:74;;15797:93;15886:3;15797:93;:::i;:::-;15915:2;15910:3;15906:12;15899:19;;15558:366;;;:::o;15930:419::-;16096:4;16134:2;16123:9;16119:18;16111:26;;16183:9;16177:4;16173:20;16169:1;16158:9;16154:17;16147:47;16211:131;16337:4;16211:131;:::i;:::-;16203:139;;15930:419;;;:::o;16355:224::-;16495:34;16491:1;16483:6;16479:14;16472:58;16564:7;16559:2;16551:6;16547:15;16540:32;16355:224;:::o;16585:366::-;16727:3;16748:67;16812:2;16807:3;16748:67;:::i;:::-;16741:74;;16824:93;16913:3;16824:93;:::i;:::-;16942:2;16937:3;16933:12;16926:19;;16585:366;;;:::o;16957:419::-;17123:4;17161:2;17150:9;17146:18;17138:26;;17210:9;17204:4;17200:20;17196:1;17185:9;17181:17;17174:47;17238:131;17364:4;17238:131;:::i;:::-;17230:139;;16957:419;;;:::o;17382:228::-;17522:34;17518:1;17510:6;17506:14;17499:58;17591:11;17586:2;17578:6;17574:15;17567:36;17382:228;:::o;17616:366::-;17758:3;17779:67;17843:2;17838:3;17779:67;:::i;:::-;17772:74;;17855:93;17944:3;17855:93;:::i;:::-;17973:2;17968:3;17964:12;17957:19;;17616:366;;;:::o;17988:419::-;18154:4;18192:2;18181:9;18177:18;18169:26;;18241:9;18235:4;18231:20;18227:1;18216:9;18212:17;18205:47;18269:131;18395:4;18269:131;:::i;:::-;18261:139;;17988:419;;;:::o;18413:172::-;18553:24;18549:1;18541:6;18537:14;18530:48;18413:172;:::o;18591:366::-;18733:3;18754:67;18818:2;18813:3;18754:67;:::i;:::-;18747:74;;18830:93;18919:3;18830:93;:::i;:::-;18948:2;18943:3;18939:12;18932:19;;18591:366;;;:::o;18963:419::-;19129:4;19167:2;19156:9;19152:18;19144:26;;19216:9;19210:4;19206:20;19202:1;19191:9;19187:17;19180:47;19244:131;19370:4;19244:131;:::i;:::-;19236:139;;18963:419;;;:::o;19388:191::-;19428:3;19447:20;19465:1;19447:20;:::i;:::-;19442:25;;19481:20;19499:1;19481:20;:::i;:::-;19476:25;;19524:1;19521;19517:9;19510:16;;19545:3;19542:1;19539:10;19536:36;;;19552:18;;:::i;:::-;19536:36;19388:191;;;;:::o;19585:180::-;19633:77;19630:1;19623:88;19730:4;19727:1;19720:15;19754:4;19751:1;19744:15;19771:180;19819:77;19816:1;19809:88;19916:4;19913:1;19906:15;19940:4;19937:1;19930:15;19957:143;20014:5;20045:6;20039:13;20030:22;;20061:33;20088:5;20061:33;:::i;:::-;19957:143;;;;:::o;20106:351::-;20176:6;20225:2;20213:9;20204:7;20200:23;20196:32;20193:119;;;20231:79;;:::i;:::-;20193:119;20351:1;20376:64;20432:7;20423:6;20412:9;20408:22;20376:64;:::i;:::-;20366:74;;20322:128;20106:351;;;;:::o;20463:85::-;20508:7;20537:5;20526:16;;20463:85;;;:::o;20554:158::-;20612:9;20645:61;20663:42;20672:32;20698:5;20672:32;:::i;:::-;20663:42;:::i;:::-;20645:61;:::i;:::-;20632:74;;20554:158;;;:::o;20718:147::-;20813:45;20852:5;20813:45;:::i;:::-;20808:3;20801:58;20718:147;;:::o;20871:114::-;20938:6;20972:5;20966:12;20956:22;;20871:114;;;:::o;20991:184::-;21090:11;21124:6;21119:3;21112:19;21164:4;21159:3;21155:14;21140:29;;20991:184;;;;:::o;21181:132::-;21248:4;21271:3;21263:11;;21301:4;21296:3;21292:14;21284:22;;21181:132;;;:::o;21319:108::-;21396:24;21414:5;21396:24;:::i;:::-;21391:3;21384:37;21319:108;;:::o;21433:179::-;21502:10;21523:46;21565:3;21557:6;21523:46;:::i;:::-;21601:4;21596:3;21592:14;21578:28;;21433:179;;;;:::o;21618:113::-;21688:4;21720;21715:3;21711:14;21703:22;;21618:113;;;:::o;21767:732::-;21886:3;21915:54;21963:5;21915:54;:::i;:::-;21985:86;22064:6;22059:3;21985:86;:::i;:::-;21978:93;;22095:56;22145:5;22095:56;:::i;:::-;22174:7;22205:1;22190:284;22215:6;22212:1;22209:13;22190:284;;;22291:6;22285:13;22318:63;22377:3;22362:13;22318:63;:::i;:::-;22311:70;;22404:60;22457:6;22404:60;:::i;:::-;22394:70;;22250:224;22237:1;22234;22230:9;22225:14;;22190:284;;;22194:14;22490:3;22483:10;;21891:608;;;21767:732;;;;:::o;22505:831::-;22768:4;22806:3;22795:9;22791:19;22783:27;;22820:71;22888:1;22877:9;22873:17;22864:6;22820:71;:::i;:::-;22901:80;22977:2;22966:9;22962:18;22953:6;22901:80;:::i;:::-;23028:9;23022:4;23018:20;23013:2;23002:9;22998:18;22991:48;23056:108;23159:4;23150:6;23056:108;:::i;:::-;23048:116;;23174:72;23242:2;23231:9;23227:18;23218:6;23174:72;:::i;:::-;23256:73;23324:3;23313:9;23309:19;23300:6;23256:73;:::i;:::-;22505:831;;;;;;;;:::o;23342:410::-;23382:7;23405:20;23423:1;23405:20;:::i;:::-;23400:25;;23439:20;23457:1;23439:20;:::i;:::-;23434:25;;23494:1;23491;23487:9;23516:30;23534:11;23516:30;:::i;:::-;23505:41;;23695:1;23686:7;23682:15;23679:1;23676:22;23656:1;23649:9;23629:83;23606:139;;23725:18;;:::i;:::-;23606:139;23390:362;23342:410;;;;:::o;23758:147::-;23859:11;23896:3;23881:18;;23758:147;;;;:::o;23911:114::-;;:::o;24031:398::-;24190:3;24211:83;24292:1;24287:3;24211:83;:::i;:::-;24204:90;;24303:93;24392:3;24303:93;:::i;:::-;24421:1;24416:3;24412:11;24405:18;;24031:398;;;:::o;24435:379::-;24619:3;24641:147;24784:3;24641:147;:::i;:::-;24634:154;;24805:3;24798:10;;24435:379;;;:::o

Swarm Source

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