ETH Price: $2,636.78 (-0.85%)
Gas: 2 Gwei

Token

Smiley Doge (XD)
 

Overview

Max Total Supply

100,000,000 XD

Holders

87

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.00000022 XD

Value
$0.00
0xef9098fc8ae25ab0fe87fdc34a6e115313d12c51
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:
XD

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

// 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 XD 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 = 100_000_000 * 10**9;
    uint256 constant public swapThreshold = _totalSupply / 5_000;
    uint256 public buyfee = 10;
    uint256 public sellfee = 10;
    uint256 constant public transferfee = 0;
    uint256 constant public fee_denominator = 1_000;
    bool private canSwapFees = false;
    address payable private marketingAddress = payable(0xc4ADdB5412E16b797313dBb54DD310210a8AACB4);


    IRouter02 public swapRouter;
    string constant private _name = "Smiley Doge";
    string constant private _symbol = "XD";
    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);


    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) external onlyOwner {
        marketingAddress = payable(marketing);
        emit _changeWallets(marketing);
    }


    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;

        if(address(this).balance > 0) {(success,) = marketingAddress.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);
        }

        event ChangeTaxes(uint256 buy, uint256 sell);
        function changeTaxes(uint256 buy, uint256 sell) external onlyOwner {
            buyfee = buy * 10;
            sellfee = sell * 10;

            emit ChangeTaxes(buyfee, sellfee);
        }

        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":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"}],"name":"ChangeTaxes","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"}],"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":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"changeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","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"}]

6080604052600a600755600a6008556000600960006101000a81548160ff02191690831515021790555073c4addb5412e16b797313dbb54dd310210a8aacb4600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60146101000a81548160ff021916908315150217905550348015620000a657600080fd5b50620000c7620000bb6200079560201b60201c565b6200079d60201b60201c565b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506038460362000183577310ed43c718714eb63d5aa57b78b54704e256024e600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036e565b60614603620001e75773d99d1c33f9fc3444f8101754abc46c52416550d1600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036d565b6001461480620001f75750600446145b80620002035750600346145b156200026457737a250d5630b4cf539739df2c5dacb4c659f2488d600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036c565b61a86a4603620002c9577360ae616a2155ee3d9a68541ba4544862310933d4600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036b565b60fa46036200032d5773f491e7b69e4244ad4002bc14e878a34207e38c29600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200036a565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003619062000a2c565b60405180910390fd5b5b5b5b5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555067016345785d8a0000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516200047a919062000a69565b60405180910390a3600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000516919062000af0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200059f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005c5919062000af0565b306040518363ffffffff1660e01b8152600401620005e592919062000b33565b6020604051808303816000875af115801562000605573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200062b919062000af0565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200073a33600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200086160201b60201c565b6200078f30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200086160201b60201c565b62000bd2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008d3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ca9062000bb0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000945576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200093c9062000bb0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600082825260208201905092915050565b7f436861696e206e6f742076616c69640000000000000000000000000000000000600082015250565b600062000a14600f83620009cb565b915062000a2182620009dc565b602082019050919050565b6000602082019050818103600083015262000a478162000a05565b9050919050565b6000819050919050565b62000a638162000a4e565b82525050565b600060208201905062000a80600083018462000a58565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ab88262000a8b565b9050919050565b62000aca8162000aab565b811462000ad657600080fd5b50565b60008151905062000aea8162000abf565b92915050565b60006020828403121562000b095762000b0862000a86565b5b600062000b198482850162000ad9565b91505092915050565b62000b2d8162000aab565b82525050565b600060408201905062000b4a600083018562000b22565b62000b59602083018462000b22565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600062000b98601383620009cb565b915062000ba58262000b60565b602082019050919050565b6000602082019050818103600083015262000bcb8162000b89565b9050919050565b61328e8062000be26000396000f3fe6080604052600436106101dc5760003560e01c806354de7bee11610102578063c31c9c0711610095578063dd62ed3e11610064578063dd62ed3e14610699578063e9451f5f146106d6578063f2fde38b14610701578063fe2314d61461072a576101e3565b8063c31c9c07146105f1578063c4ab12b51461061c578063d5914dc014610645578063dc9d75b01461066e576101e3565b80638a8c523c116100d15780638a8c523c146105475780638da5cb5b1461055e57806395d89b4114610589578063a9059cbb146105b4576101e3565b806354de7bee1461049d57806370a08231146104c8578063715018a614610505578063893d20e81461051c576101e3565b806318160ddd1161017a578063313ce56711610149578063313ce567146103f35780633cd17c961461041e5780633eaaf86b14610447578063452ed4f114610472576101e3565b806318160ddd146103235780631dc369451461034e57806323b872dd1461037957806327889862146103b6576101e3565b806306fdde03116101b657806306fdde0314610269578063095ea7b3146102945780630faba554146102d1578063111a60b0146102fa576101e3565b806303fd2a45146101e85780630445b66714610213578063064a59d01461023e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610753565b60405161020a91906125a6565b60405180910390f35b34801561021f57600080fd5b50610228610759565b60405161023591906125da565b60405180910390f35b34801561024a57600080fd5b50610253610772565b6040516102609190612610565b60405180910390f35b34801561027557600080fd5b5061027e610785565b60405161028b91906126bb565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b6919061273a565b6107c2565b6040516102c89190612610565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f391906127a6565b6107d9565b005b34801561030657600080fd5b50610321600480360381019061031c91906127e6565b6108b0565b005b34801561032f57600080fd5b506103386109d5565b60405161034591906125da565b60405180910390f35b34801561035a57600080fd5b506103636109f9565b60405161037091906125da565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b9190612813565b6109ff565b6040516103ad9190612610565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190612866565b610b4c565b6040516103ea9190612610565b60405180910390f35b3480156103ff57600080fd5b50610408610ba2565b60405161041591906128af565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906127a6565b610bbf565b005b34801561045357600080fd5b5061045c610e0f565b60405161046991906125da565b60405180910390f35b34801561047e57600080fd5b50610487610e1b565b60405161049491906125a6565b60405180910390f35b3480156104a957600080fd5b506104b2610e41565b6040516104bf91906125da565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190612866565b610e46565b6040516104fc91906125da565b60405180910390f35b34801561051157600080fd5b5061051a610e8f565b005b34801561052857600080fd5b50610531610f17565b60405161053e91906125a6565b60405180910390f35b34801561055357600080fd5b5061055c610f26565b005b34801561056a57600080fd5b5061057361103b565b60405161058091906125a6565b60405180910390f35b34801561059557600080fd5b5061059e611064565b6040516105ab91906126bb565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d6919061273a565b6110a1565b6040516105e89190612610565b60405180910390f35b3480156105fd57600080fd5b506106066110b9565b6040516106139190612929565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e9190612866565b6110df565b005b34801561065157600080fd5b5061066c60048036038101906106679190612866565b6111d6565b005b34801561067a57600080fd5b506106836112e4565b60405161069091906125da565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb9190612944565b6112ea565b6040516106cd91906125da565b60405180910390f35b3480156106e257600080fd5b506106eb611371565b6040516106f891906125da565b60405180910390f35b34801561070d57600080fd5b5061072860048036038101906107239190612866565b611377565b005b34801561073657600080fd5b50610751600480360381019061074c9190612984565b61146e565b005b61dead81565b61138867016345785d8a000061076f9190612a22565b81565b600b60149054906101000a900460ff1681565b60606040518060400160405280600b81526020017f536d696c657920446f6765000000000000000000000000000000000000000000815250905090565b60006107cf338484611551565b6001905092915050565b6107e16116b5565b73ffffffffffffffffffffffffffffffffffffffff166107ff61103b565b73ffffffffffffffffffffffffffffffffffffffff1614610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90612a9f565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108b86116b5565b73ffffffffffffffffffffffffffffffffffffffff166108d661103b565b73ffffffffffffffffffffffffffffffffffffffff161461092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092390612a9f565b60405180910390fd5b801515600960009054906101000a900460ff16151503610981576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097890612b0b565b60405180910390fd5b80600960006101000a81548160ff0219169083151502179055507f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e8816040516109ca9190612610565b60405180910390a150565b60008067016345785d8a0000036109eb57600080fd5b67016345785d8a0000905090565b60075481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b385781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b309190612b2b565b925050819055505b610b438484846116bd565b90509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008067016345785d8a000003610bb857600080fd5b6009905090565b610bc76116b5565b73ffffffffffffffffffffffffffffffffffffffff16610be561103b565b73ffffffffffffffffffffffffffffffffffffffff1614610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290612a9f565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490612bab565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b7645138282604051610e03929190612bcb565b60405180910390a15050565b67016345785d8a000081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e976116b5565b73ffffffffffffffffffffffffffffffffffffffff16610eb561103b565b73ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0290612a9f565b60405180910390fd5b610f156000611aaa565b565b6000610f2161103b565b905090565b610f2e6116b5565b73ffffffffffffffffffffffffffffffffffffffff16610f4c61103b565b73ffffffffffffffffffffffffffffffffffffffff1614610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990612a9f565b60405180910390fd5b600b60149054906101000a900460ff1615610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990612c40565b60405180910390fd5b6001600b60146101000a81548160ff0219169083151502179055507fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600281526020017f5844000000000000000000000000000000000000000000000000000000000000815250905090565b60006110ae3384846116bd565b506001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110e76116b5565b73ffffffffffffffffffffffffffffffffffffffff1661110561103b565b73ffffffffffffffffffffffffffffffffffffffff161461115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290612a9f565b60405180910390fd5b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb074145dac98cbf04c5e3a6d58501e8e3aa6eb107008ec598af2309ae5179dfe816040516111cb91906125a6565b60405180910390a150565b6111de6116b5565b73ffffffffffffffffffffffffffffffffffffffff166111fc61103b565b73ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612a9f565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f03b62011431502c791d443ee6149c9ec9b43632aeb5eb55c621104c128fe02f7816040516112d991906125a6565b60405180910390a150565b6103e881565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b61137f6116b5565b73ffffffffffffffffffffffffffffffffffffffff1661139d61103b565b73ffffffffffffffffffffffffffffffffffffffff16146113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612a9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990612cd2565b60405180910390fd5b61146b81611aaa565b50565b6114766116b5565b73ffffffffffffffffffffffffffffffffffffffff1661149461103b565b73ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190612a9f565b60405180910390fd5b600a826114f79190612cf2565b600781905550600a8161150a9190612cf2565b6008819055507fe5d51dc78edbb1ef2a1acc3ee7dbfec6cc09ea76021321c59a83c84fe52629fa600754600854604051611545929190612d34565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b790612da9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162690612da9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a90612e3b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990612ecd565b60405180910390fd5b600083116117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90612f5f565b60405180910390fd5b6117ef8585611b6e565b1561184457600b60149054906101000a900460ff16611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90612fcb565b60405180910390fd5b5b61184e8585611d89565b80156118675750600b60159054906101000a900460ff16155b801561187957506118788585611e3b565b5b156118b357600061188930610e46565b905061138867016345785d8a00006118a19190612a22565b81106118b1576118b081611f06565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119545750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561195e57600090505b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119ad9190612b2b565b925050819055506000816119c157836119e0565b6119df866119cf888861237e565b6119d98989611d89565b87612430565b5b905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a319190612feb565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a9591906125da565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611b7961103b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611be75750611bb761103b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c265750611bf661103b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c7c5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cd25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d0c575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d455750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d7d57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e2f5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b600080600960009054906101000a900460ff168015611ea45750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611efa5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600b60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f3e57611f3d61301f565b5b604051908082528060200260200182016040528015611f6c5781602001602082028036833780820191505090505b5090503081600081518110611f8457611f8361304e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204f9190613092565b816001815181106120635761206261304e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612226577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161228a9594939291906131b8565b600060405180830381600087803b1580156122a457600080fd5b505af19250505080156122b5575060015b6122bf5750612360565b60008047111561235d57600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b89060405161231390613243565b600060405180830381858888f193505050503d8060008114612351576040519150601f19603f3d011682016040523d82523d6000602084013e612356565b606091505b5050809150505b50505b6000600b60156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124245750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b6000808415612443576007549050612459565b8315612453576008549050612458565b600090505b5b6000810361246a578291505061255d565b60006103e8828561247b9190612cf2565b6124859190612a22565b9050600081111561254c5780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124df9190612feb565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254391906125da565b60405180910390a35b80846125589190612b2b565b925050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259082612565565b9050919050565b6125a081612585565b82525050565b60006020820190506125bb6000830184612597565b92915050565b6000819050919050565b6125d4816125c1565b82525050565b60006020820190506125ef60008301846125cb565b92915050565b60008115159050919050565b61260a816125f5565b82525050565b60006020820190506126256000830184612601565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561266557808201518184015260208101905061264a565b60008484015250505050565b6000601f19601f8301169050919050565b600061268d8261262b565b6126978185612636565b93506126a7818560208601612647565b6126b081612671565b840191505092915050565b600060208201905081810360008301526126d58184612682565b905092915050565b600080fd5b6126eb81612585565b81146126f657600080fd5b50565b600081359050612708816126e2565b92915050565b612717816125c1565b811461272257600080fd5b50565b6000813590506127348161270e565b92915050565b60008060408385031215612751576127506126dd565b5b600061275f858286016126f9565b925050602061277085828601612725565b9150509250929050565b612783816125f5565b811461278e57600080fd5b50565b6000813590506127a08161277a565b92915050565b600080604083850312156127bd576127bc6126dd565b5b60006127cb858286016126f9565b92505060206127dc85828601612791565b9150509250929050565b6000602082840312156127fc576127fb6126dd565b5b600061280a84828501612791565b91505092915050565b60008060006060848603121561282c5761282b6126dd565b5b600061283a868287016126f9565b935050602061284b868287016126f9565b925050604061285c86828701612725565b9150509250925092565b60006020828403121561287c5761287b6126dd565b5b600061288a848285016126f9565b91505092915050565b600060ff82169050919050565b6128a981612893565b82525050565b60006020820190506128c460008301846128a0565b92915050565b6000819050919050565b60006128ef6128ea6128e584612565565b6128ca565b612565565b9050919050565b6000612901826128d4565b9050919050565b6000612913826128f6565b9050919050565b61292381612908565b82525050565b600060208201905061293e600083018461291a565b92915050565b6000806040838503121561295b5761295a6126dd565b5b6000612969858286016126f9565b925050602061297a858286016126f9565b9150509250929050565b6000806040838503121561299b5761299a6126dd565b5b60006129a985828601612725565b92505060206129ba85828601612725565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a2d826125c1565b9150612a38836125c1565b925082612a4857612a476129c4565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a89602083612636565b9150612a9482612a53565b602082019050919050565b60006020820190508181036000830152612ab881612a7c565b9050919050565b7f426f6f6c206973207468652073616d6500000000000000000000000000000000600082015250565b6000612af5601083612636565b9150612b0082612abf565b602082019050919050565b60006020820190508181036000830152612b2481612ae8565b9050919050565b6000612b36826125c1565b9150612b41836125c1565b9250828203905081811115612b5957612b586129f3565b5b92915050565b7f53616d6520626f6f6c0000000000000000000000000000000000000000000000600082015250565b6000612b95600983612636565b9150612ba082612b5f565b602082019050919050565b60006020820190508181036000830152612bc481612b88565b9050919050565b6000604082019050612be06000830185612597565b612bed6020830184612601565b9392505050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612c2a601783612636565b9150612c3582612bf4565b602082019050919050565b60006020820190508181036000830152612c5981612c1d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612cbc602683612636565b9150612cc782612c60565b604082019050919050565b60006020820190508181036000830152612ceb81612caf565b9050919050565b6000612cfd826125c1565b9150612d08836125c1565b9250828202612d16816125c1565b91508282048414831517612d2d57612d2c6129f3565b5b5092915050565b6000604082019050612d4960008301856125cb565b612d5660208301846125cb565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612d93601383612636565b9150612d9e82612d5d565b602082019050919050565b60006020820190508181036000830152612dc281612d86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e25602383612636565b9150612e3082612dc9565b604082019050919050565b60006020820190508181036000830152612e5481612e18565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612eb7602583612636565b9150612ec282612e5b565b604082019050919050565b60006020820190508181036000830152612ee681612eaa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f49602983612636565b9150612f5482612eed565b604082019050919050565b60006020820190508181036000830152612f7881612f3c565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612fb5601683612636565b9150612fc082612f7f565b602082019050919050565b60006020820190508181036000830152612fe481612fa8565b9050919050565b6000612ff6826125c1565b9150613001836125c1565b9250828201905080821115613019576130186129f3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061308c816126e2565b92915050565b6000602082840312156130a8576130a76126dd565b5b60006130b68482850161307d565b91505092915050565b6000819050919050565b60006130e46130df6130da846130bf565b6128ca565b6125c1565b9050919050565b6130f4816130c9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61312f81612585565b82525050565b60006131418383613126565b60208301905092915050565b6000602082019050919050565b6000613165826130fa565b61316f8185613105565b935061317a83613116565b8060005b838110156131ab5781516131928882613135565b975061319d8361314d565b92505060018101905061317e565b5085935050505092915050565b600060a0820190506131cd60008301886125cb565b6131da60208301876130eb565b81810360408301526131ec818661315a565b90506131fb6060830185612597565b61320860808301846125cb565b9695505050505050565b600081905092915050565b50565b600061322d600083613212565b91506132388261321d565b600082019050919050565b600061324e82613220565b915081905091905056fea2646970667358221220f5808cd6ff06cab55d6d25132e3c61c4faa6cfa3d554f5e2417f7da84992854064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806354de7bee11610102578063c31c9c0711610095578063dd62ed3e11610064578063dd62ed3e14610699578063e9451f5f146106d6578063f2fde38b14610701578063fe2314d61461072a576101e3565b8063c31c9c07146105f1578063c4ab12b51461061c578063d5914dc014610645578063dc9d75b01461066e576101e3565b80638a8c523c116100d15780638a8c523c146105475780638da5cb5b1461055e57806395d89b4114610589578063a9059cbb146105b4576101e3565b806354de7bee1461049d57806370a08231146104c8578063715018a614610505578063893d20e81461051c576101e3565b806318160ddd1161017a578063313ce56711610149578063313ce567146103f35780633cd17c961461041e5780633eaaf86b14610447578063452ed4f114610472576101e3565b806318160ddd146103235780631dc369451461034e57806323b872dd1461037957806327889862146103b6576101e3565b806306fdde03116101b657806306fdde0314610269578063095ea7b3146102945780630faba554146102d1578063111a60b0146102fa576101e3565b806303fd2a45146101e85780630445b66714610213578063064a59d01461023e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610753565b60405161020a91906125a6565b60405180910390f35b34801561021f57600080fd5b50610228610759565b60405161023591906125da565b60405180910390f35b34801561024a57600080fd5b50610253610772565b6040516102609190612610565b60405180910390f35b34801561027557600080fd5b5061027e610785565b60405161028b91906126bb565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b6919061273a565b6107c2565b6040516102c89190612610565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f391906127a6565b6107d9565b005b34801561030657600080fd5b50610321600480360381019061031c91906127e6565b6108b0565b005b34801561032f57600080fd5b506103386109d5565b60405161034591906125da565b60405180910390f35b34801561035a57600080fd5b506103636109f9565b60405161037091906125da565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b9190612813565b6109ff565b6040516103ad9190612610565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d89190612866565b610b4c565b6040516103ea9190612610565b60405180910390f35b3480156103ff57600080fd5b50610408610ba2565b60405161041591906128af565b60405180910390f35b34801561042a57600080fd5b50610445600480360381019061044091906127a6565b610bbf565b005b34801561045357600080fd5b5061045c610e0f565b60405161046991906125da565b60405180910390f35b34801561047e57600080fd5b50610487610e1b565b60405161049491906125a6565b60405180910390f35b3480156104a957600080fd5b506104b2610e41565b6040516104bf91906125da565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea9190612866565b610e46565b6040516104fc91906125da565b60405180910390f35b34801561051157600080fd5b5061051a610e8f565b005b34801561052857600080fd5b50610531610f17565b60405161053e91906125a6565b60405180910390f35b34801561055357600080fd5b5061055c610f26565b005b34801561056a57600080fd5b5061057361103b565b60405161058091906125a6565b60405180910390f35b34801561059557600080fd5b5061059e611064565b6040516105ab91906126bb565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d6919061273a565b6110a1565b6040516105e89190612610565b60405180910390f35b3480156105fd57600080fd5b506106066110b9565b6040516106139190612929565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e9190612866565b6110df565b005b34801561065157600080fd5b5061066c60048036038101906106679190612866565b6111d6565b005b34801561067a57600080fd5b506106836112e4565b60405161069091906125da565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb9190612944565b6112ea565b6040516106cd91906125da565b60405180910390f35b3480156106e257600080fd5b506106eb611371565b6040516106f891906125da565b60405180910390f35b34801561070d57600080fd5b5061072860048036038101906107239190612866565b611377565b005b34801561073657600080fd5b50610751600480360381019061074c9190612984565b61146e565b005b61dead81565b61138867016345785d8a000061076f9190612a22565b81565b600b60149054906101000a900460ff1681565b60606040518060400160405280600b81526020017f536d696c657920446f6765000000000000000000000000000000000000000000815250905090565b60006107cf338484611551565b6001905092915050565b6107e16116b5565b73ffffffffffffffffffffffffffffffffffffffff166107ff61103b565b73ffffffffffffffffffffffffffffffffffffffff1614610855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084c90612a9f565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108b86116b5565b73ffffffffffffffffffffffffffffffffffffffff166108d661103b565b73ffffffffffffffffffffffffffffffffffffffff161461092c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092390612a9f565b60405180910390fd5b801515600960009054906101000a900460ff16151503610981576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097890612b0b565b60405180910390fd5b80600960006101000a81548160ff0219169083151502179055507f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e8816040516109ca9190612610565b60405180910390a150565b60008067016345785d8a0000036109eb57600080fd5b67016345785d8a0000905090565b60075481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b385781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b309190612b2b565b925050819055505b610b438484846116bd565b90509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008067016345785d8a000003610bb857600080fd5b6009905090565b610bc76116b5565b73ffffffffffffffffffffffffffffffffffffffff16610be561103b565b73ffffffffffffffffffffffffffffffffffffffff1614610c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3290612a9f565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610ccd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc490612bab565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b7645138282604051610e03929190612bcb565b60405180910390a15050565b67016345785d8a000081565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e976116b5565b73ffffffffffffffffffffffffffffffffffffffff16610eb561103b565b73ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0290612a9f565b60405180910390fd5b610f156000611aaa565b565b6000610f2161103b565b905090565b610f2e6116b5565b73ffffffffffffffffffffffffffffffffffffffff16610f4c61103b565b73ffffffffffffffffffffffffffffffffffffffff1614610fa2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9990612a9f565b60405180910390fd5b600b60149054906101000a900460ff1615610ff2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe990612c40565b60405180910390fd5b6001600b60146101000a81548160ff0219169083151502179055507fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600281526020017f5844000000000000000000000000000000000000000000000000000000000000815250905090565b60006110ae3384846116bd565b506001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110e76116b5565b73ffffffffffffffffffffffffffffffffffffffff1661110561103b565b73ffffffffffffffffffffffffffffffffffffffff161461115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115290612a9f565b60405180910390fd5b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb074145dac98cbf04c5e3a6d58501e8e3aa6eb107008ec598af2309ae5179dfe816040516111cb91906125a6565b60405180910390a150565b6111de6116b5565b73ffffffffffffffffffffffffffffffffffffffff166111fc61103b565b73ffffffffffffffffffffffffffffffffffffffff1614611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612a9f565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f03b62011431502c791d443ee6149c9ec9b43632aeb5eb55c621104c128fe02f7816040516112d991906125a6565b60405180910390a150565b6103e881565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60085481565b61137f6116b5565b73ffffffffffffffffffffffffffffffffffffffff1661139d61103b565b73ffffffffffffffffffffffffffffffffffffffff16146113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea90612a9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611462576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145990612cd2565b60405180910390fd5b61146b81611aaa565b50565b6114766116b5565b73ffffffffffffffffffffffffffffffffffffffff1661149461103b565b73ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e190612a9f565b60405180910390fd5b600a826114f79190612cf2565b600781905550600a8161150a9190612cf2565b6008819055507fe5d51dc78edbb1ef2a1acc3ee7dbfec6cc09ea76021321c59a83c84fe52629fa600754600854604051611545929190612d34565b60405180910390a15050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b790612da9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162690612da9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172a90612e3b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179990612ecd565b60405180910390fd5b600083116117e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117dc90612f5f565b60405180910390fd5b6117ef8585611b6e565b1561184457600b60149054906101000a900460ff16611843576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183a90612fcb565b60405180910390fd5b5b61184e8585611d89565b80156118675750600b60159054906101000a900460ff16155b801561187957506118788585611e3b565b5b156118b357600061188930610e46565b905061138867016345785d8a00006118a19190612a22565b81106118b1576118b081611f06565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119545750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561195e57600090505b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119ad9190612b2b565b925050819055506000816119c157836119e0565b6119df866119cf888861237e565b6119d98989611d89565b87612430565b5b905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a319190612feb565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a9591906125da565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611b7961103b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611be75750611bb761103b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c265750611bf661103b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c7c5750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cd25750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d0c575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d455750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d7d57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e2f5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b600080600960009054906101000a900460ff168015611ea45750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611efa5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600b60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f3e57611f3d61301f565b5b604051908082528060200260200182016040528015611f6c5781602001602082028036833780820191505090505b5090503081600081518110611f8457611f8361304e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561202b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204f9190613092565b816001815181106120635761206261304e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612226577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161228a9594939291906131b8565b600060405180830381600087803b1580156122a457600080fd5b505af19250505080156122b5575060015b6122bf5750612360565b60008047111561235d57600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b89060405161231390613243565b600060405180830381858888f193505050503d8060008114612351576040519150601f19603f3d011682016040523d82523d6000602084013e612356565b606091505b5050809150505b50505b6000600b60156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124245750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b6000808415612443576007549050612459565b8315612453576008549050612458565b600090505b5b6000810361246a578291505061255d565b60006103e8828561247b9190612cf2565b6124859190612a22565b9050600081111561254c5780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546124df9190612feb565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161254391906125da565b60405180910390a35b80846125589190612b2b565b925050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061259082612565565b9050919050565b6125a081612585565b82525050565b60006020820190506125bb6000830184612597565b92915050565b6000819050919050565b6125d4816125c1565b82525050565b60006020820190506125ef60008301846125cb565b92915050565b60008115159050919050565b61260a816125f5565b82525050565b60006020820190506126256000830184612601565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561266557808201518184015260208101905061264a565b60008484015250505050565b6000601f19601f8301169050919050565b600061268d8261262b565b6126978185612636565b93506126a7818560208601612647565b6126b081612671565b840191505092915050565b600060208201905081810360008301526126d58184612682565b905092915050565b600080fd5b6126eb81612585565b81146126f657600080fd5b50565b600081359050612708816126e2565b92915050565b612717816125c1565b811461272257600080fd5b50565b6000813590506127348161270e565b92915050565b60008060408385031215612751576127506126dd565b5b600061275f858286016126f9565b925050602061277085828601612725565b9150509250929050565b612783816125f5565b811461278e57600080fd5b50565b6000813590506127a08161277a565b92915050565b600080604083850312156127bd576127bc6126dd565b5b60006127cb858286016126f9565b92505060206127dc85828601612791565b9150509250929050565b6000602082840312156127fc576127fb6126dd565b5b600061280a84828501612791565b91505092915050565b60008060006060848603121561282c5761282b6126dd565b5b600061283a868287016126f9565b935050602061284b868287016126f9565b925050604061285c86828701612725565b9150509250925092565b60006020828403121561287c5761287b6126dd565b5b600061288a848285016126f9565b91505092915050565b600060ff82169050919050565b6128a981612893565b82525050565b60006020820190506128c460008301846128a0565b92915050565b6000819050919050565b60006128ef6128ea6128e584612565565b6128ca565b612565565b9050919050565b6000612901826128d4565b9050919050565b6000612913826128f6565b9050919050565b61292381612908565b82525050565b600060208201905061293e600083018461291a565b92915050565b6000806040838503121561295b5761295a6126dd565b5b6000612969858286016126f9565b925050602061297a858286016126f9565b9150509250929050565b6000806040838503121561299b5761299a6126dd565b5b60006129a985828601612725565b92505060206129ba85828601612725565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a2d826125c1565b9150612a38836125c1565b925082612a4857612a476129c4565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a89602083612636565b9150612a9482612a53565b602082019050919050565b60006020820190508181036000830152612ab881612a7c565b9050919050565b7f426f6f6c206973207468652073616d6500000000000000000000000000000000600082015250565b6000612af5601083612636565b9150612b0082612abf565b602082019050919050565b60006020820190508181036000830152612b2481612ae8565b9050919050565b6000612b36826125c1565b9150612b41836125c1565b9250828203905081811115612b5957612b586129f3565b5b92915050565b7f53616d6520626f6f6c0000000000000000000000000000000000000000000000600082015250565b6000612b95600983612636565b9150612ba082612b5f565b602082019050919050565b60006020820190508181036000830152612bc481612b88565b9050919050565b6000604082019050612be06000830185612597565b612bed6020830184612601565b9392505050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612c2a601783612636565b9150612c3582612bf4565b602082019050919050565b60006020820190508181036000830152612c5981612c1d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612cbc602683612636565b9150612cc782612c60565b604082019050919050565b60006020820190508181036000830152612ceb81612caf565b9050919050565b6000612cfd826125c1565b9150612d08836125c1565b9250828202612d16816125c1565b91508282048414831517612d2d57612d2c6129f3565b5b5092915050565b6000604082019050612d4960008301856125cb565b612d5660208301846125cb565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612d93601383612636565b9150612d9e82612d5d565b602082019050919050565b60006020820190508181036000830152612dc281612d86565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e25602383612636565b9150612e3082612dc9565b604082019050919050565b60006020820190508181036000830152612e5481612e18565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612eb7602583612636565b9150612ec282612e5b565b604082019050919050565b60006020820190508181036000830152612ee681612eaa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f49602983612636565b9150612f5482612eed565b604082019050919050565b60006020820190508181036000830152612f7881612f3c565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612fb5601683612636565b9150612fc082612f7f565b602082019050919050565b60006020820190508181036000830152612fe481612fa8565b9050919050565b6000612ff6826125c1565b9150613001836125c1565b9250828201905080821115613019576130186129f3565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061308c816126e2565b92915050565b6000602082840312156130a8576130a76126dd565b5b60006130b68482850161307d565b91505092915050565b6000819050919050565b60006130e46130df6130da846130bf565b6128ca565b6125c1565b9050919050565b6130f4816130c9565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61312f81612585565b82525050565b60006131418383613126565b60208301905092915050565b6000602082019050919050565b6000613165826130fa565b61316f8185613105565b935061317a83613116565b8060005b838110156131ab5781516131928882613135565b975061319d8361314d565b92505060018101905061317e565b5085935050505092915050565b600060a0820190506131cd60008301886125cb565b6131da60208301876130eb565b81810360408301526131ec818661315a565b90506131fb6060830185612597565b61320860808301846125cb565b9695505050505050565b600081905092915050565b50565b600061322d600083613212565b91506132388261321d565b600082019050919050565b600061324e82613220565b915081905091905056fea2646970667358221220f5808cd6ff06cab55d6d25132e3c61c4faa6cfa3d554f5e2417f7da84992854064736f6c63430008130033

Deployed Bytecode Sourcemap

4873:9389:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6658:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6106:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6766:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5266:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8616:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9491:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10653:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4922:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9062:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9374:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5053:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13440:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6041:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6738:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6240:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5577:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;850:94;;;;;;;;;;;;;:::i;:::-;;5352:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14055:198;;;;;;;;;;;;;:::i;:::-;;627:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5176:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8439:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6484:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11920:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10508:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6286:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5438:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6206:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;952:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13848:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6658:73;6689:42;6658:73;:::o;6106:60::-;6161:5;6080:19;6146:20;;;;:::i;:::-;6106:60;:::o;6766:36::-;;;;;;;;;;;;;:::o;5266:80::-;5314:13;5338:5;;;;;;;;;;;;;;;;;5331:12;;5266:80;:::o;8616:161::-;8693:4;8710:37;8719:10;8731:7;8740:6;8710:8;:37::i;:::-;8765:4;8758:11;;8616:161;;;;:::o;9491:116::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9592:7:::1;9574:6;:15;9581:7;9574:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;9491:116:::0;;:::o;10653:196::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10745:5:::1;10730:20;;:11;;;;;;;;;;;:20;;::::0;10722:48:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10795:5;10781:11;;:19;;;;;;;;;;;;;;;;;;10816:25;10835:5;10816:25;;;;;;:::i;:::-;;;;;;;;10653:196:::0;:::o;4922:125::-;4977:7;5008:1;6080:19;4992:17;4988:36;;5013:8;;;4988:36;6080:19;5025;;4922:125;:::o;6173:26::-;;;;:::o;9062:306::-;9162:4;9218:17;9183:11;:19;9195:6;9183:19;;;;;;;;;;;;;;;:31;9203:10;9183:31;;;;;;;;;;;;;;;;:52;9179:126;;9287:6;9252:11;:19;9264:6;9252:19;;;;;;;;;;;;;;;:31;9272:10;9252:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;9179:126;9324:36;9334:6;9342:9;9353:6;9324:9;:36::i;:::-;9317:43;;9062:306;;;;;:::o;9374:109::-;9436:4;9460:6;:15;9467:7;9460:15;;;;;;;;;;;;;;;;;;;;;;;;;9453:22;;9374:109;;;:::o;5053:117::-;5105:5;5134:1;6080:19;5118:17;5114:36;;5139:8;;;5114:36;6650:1;5151:16;;5053:117;:::o;13440:341::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13567:5:::1;13538:34;;:16;:25;13555:7;13538:25;;;;;;;;;;;;;;;;;;;;;;;;;:34;;::::0;13530:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13628:5;13600:16;:25;13617:7;13600:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;13666:5;13648:6;:15;13655:7;13648:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13710:5;13686:12;:21;13699:7;13686:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13735:34;13754:7;13763:5;13735:34;;;;;;;:::i;:::-;;;;;;;;13440:341:::0;;:::o;6041:58::-;6080:19;6041:58;:::o;6738:21::-;;;;;;;;;;;;;:::o;6240:39::-;6278:1;6240:39;:::o;5577:117::-;5643:7;5670;:16;5678:7;5670:16;;;;;;;;;;;;;;;;5663:23;;5577:117;;;:::o;850:94::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;915:21:::1;933:1;915:9;:21::i;:::-;850:94::o:0;5352:80::-;5404:7;5422;:5;:7::i;:::-;5415:14;;5352:80;:::o;14055:198::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14123:16:::1;;;;;;;;;;;14122:17;14114:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14201:4;14182:16;;:23;;;;;;;;;;;;;;;;;;14225:16;;;;;;;;;;14055:198::o:0;627:87::-;673:7;700:6;;;;;;;;;;;693:13;;627:87;:::o;5176:84::-;5226:13;5250:7;;;;;;;;;;;;;;;;;5243:14;;5176:84;:::o;8439:165::-;8517:4;8534:40;8544:10;8556:9;8567:6;8534:9;:40::i;:::-;;8592:4;8585:11;;8439:165;;;;:::o;6484:27::-;;;;;;;;;;;;;:::o;11920:158::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12019:9:::1;11992:16;;:37;;;;;;;;;;;;;;;;;;12045:25;12060:9;12045:25;;;;;;:::i;:::-;;;;;;;;11920:158:::0;:::o;10508:137::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10597:4:::1;10577:8;:17;10586:7;10577:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;10617:20;10629:7;10617:20;;;;;;:::i;:::-;;;;;;;;10508:137:::0;:::o;6286:47::-;6328:5;6286:47;:::o;5438:133::-;5522:7;5540:11;:19;5552:6;5540:19;;;;;;;;;;;;;;;:28;5560:7;5540:28;;;;;;;;;;;;;;;;5533:35;;5438:133;;;;:::o;6206:27::-;;;;:::o;952:192::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1061:1:::1;1041:22;;:8;:22;;::::0;1033:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1117:19;1127:8;1117:9;:19::i;:::-;952:192:::0;:::o;13848:195::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13945:2:::1;13939:3;:8;;;;:::i;:::-;13930:6;:17;;;;13979:2;13972:4;:9;;;;:::i;:::-;13962:7;:19;;;;14003:28;14015:6;;14023:7;;14003:28;;;;;;;:::i;:::-;;;;;;;;13848:195:::0;;:::o;8789:261::-;8902:1;8884:20;;:6;:20;;;8876:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;8966:1;8947:21;;:7;:21;;;8939:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9036:6;9005:11;:19;9017:6;9005:19;;;;;;;;;;;;;;;:28;9025:7;9005:28;;;;;;;;;;;;;;;:37;;;;8789:261;;;:::o;147:107::-;192:15;235:10;220:26;;147:107;:::o;10857:1055::-;10937:4;10954:12;10969:4;10954:19;;11006:1;10992:16;;:2;:16;;;10984:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11083:1;11067:18;;:4;:18;;;11059:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11155:1;11146:6;:10;11138:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11219:25;11236:4;11241:2;11219:16;:25::i;:::-;11215:108;;;11269:16;;;;;;;;;;;11261:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11215:108;11340:17;11348:4;11354:2;11340:7;:17::i;:::-;:29;;;;;11363:6;;;;;;;;;;;11362:7;11340:29;:50;;;;;11373:17;11381:4;11387:2;11373:7;:17::i;:::-;11340:50;11337:232;;;11407:28;11438:24;11456:4;11438:9;:24::i;:::-;11407:55;;6161:5;6080:19;6146:20;;;;:::i;:::-;11480;:37;11477:81;;11521:34;11534:20;11521:12;:34::i;:::-;11477:81;11392:177;11337:232;11585:6;:12;11592:4;11585:12;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;11601:6;:10;11608:2;11601:10;;;;;;;;;;;;;;;;;;;;;;;;;11585:26;11581:73;;;11637:5;11627:15;;11581:73;11683:6;11666:7;:13;11674:4;11666:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11691:22;11717:7;11716:81;;11791:6;11716:81;;;11728:60;11738:4;11744:16;11751:4;11757:2;11744:6;:16::i;:::-;11762:17;11770:4;11776:2;11762:7;:17::i;:::-;11781:6;11728:9;:60::i;:::-;11716:81;11691:106;;11823:14;11808:7;:11;11816:2;11808:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;11859:2;11844:34;;11853:4;11844:34;;;11863:14;11844:34;;;;;;:::i;:::-;;;;;;;;11898:4;11891:11;;;;10857:1055;;;;;:::o;1152:173::-;1208:16;1227:6;;;;;;;;;;;1208:25;;1253:8;1244:6;;:17;;;;;;;;;;;;;;;;;;1308:8;1277:40;;1298:8;1277:40;;;;;;;;;;;;1197:128;1152:173;:::o;9615:338::-;9690:4;9709:14;9733:7;:5;:7::i;:::-;9726:14;;:3;:14;;;;:45;;;;;9764:7;:5;:7::i;:::-;9757:14;;:3;:14;;;;9726:45;:70;;;;;9789:7;:5;:7::i;:::-;9775:21;;:10;:21;;;;9726:70;:105;;;;;9814:12;:17;9827:3;9814:17;;;;;;;;;;;;;;;;;;;;;;;;;9813:18;9726:105;:128;;;;;9837:12;:17;9850:3;9837:17;;;;;;;;;;;;;;;;;;;;;;;;;9836:18;9726:128;:143;;;;;6689:42;9858:11;;:3;:11;;;;9726:143;:164;;;;;9888:1;9873:17;;:3;:17;;;;9726:164;:188;;;;;9909:4;9894:20;;:3;:20;;;;9726:188;9709:205;;9936:9;9929:16;;;9615:338;;;;:::o;10130:165::-;10196:4;10214:13;10230:8;:13;10239:3;10230:13;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;;10248:8;:13;10257:3;10248:13;;;;;;;;;;;;;;;;;;;;;;;;;10247:14;10230:31;10214:47;;10279:8;10272:15;;;10130:165;;;;:::o;10304:196::-;10370:4;10387:12;10402:11;;;;;;;;;;;:37;;;;;10418:16;:21;10435:3;10418:21;;;;;;;;;;;;;;;;;;;;;;;;;10417:22;10402:37;:63;;;;;10444:16;:21;10461:3;10444:21;;;;;;;;;;;;;;;;;;;;;;;;;10443:22;10402:63;10387:78;;10485:7;10478:14;;;10304:196;;;;:::o;12626:802::-;6881:4;6872:6;;:13;;;;;;;;;;;;;;;;;;12719:21:::1;12757:1;12743:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12719:40;;12788:4;12770;12775:1;12770:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12814:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12804:4;12809:1;12804:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;12899:17;12848:11;:26;12868:4;12848:26;;;;;;;;;;;;;;;:47;12883:10;;;;;;;;;;;12848:47;;;;;;;;;;;;;;;;:68;12844:168;;12983:17;12933:11;:26;12953:4;12933:26;;;;;;;;;;;;;;;:47;12968:10;;;;;;;;;;;12933:47;;;;;;;;;;;;;;;:67;;;;12844:168;13028:10;;;;;;;;;;;:61;;;13104:20;13139:1;13155:4;13182;13202:15;13028:200;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13024:247;;13253:7;;;13024:247;13281:12;13333:1:::0;13309:21:::1;:25;13306:113;;;13350:16;;;;;;;;;;;:21;;13379;13407:5;13350:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13337:80;;;;;13306:113;12698:730;;6896:1;6917:5:::0;6908:6;;:14;;;;;;;;;;;;;;;;;;12626:802;:::o;9961:161::-;10026:4;10043:12;10059:8;:13;10068:3;10059:13;;;;;;;;;;;;;;;;;;;;;;;;;10058:14;:31;;;;;10076:8;:13;10085:3;10076:13;;;;;;;;;;;;;;;;;;;;;;;;;10058:31;10043:46;;10107:7;10100:14;;;9961:161;;;;:::o;12088:530::-;12180:7;12200:11;12226:5;12222:84;;;12240:6;;12234:12;;12222:84;;;12258:6;12254:52;;;12273:7;;12267:13;;12254:52;;;6278:1;12289:17;;12254:52;12222:84;12329:1;12322:3;:8;12318:28;;12340:6;12333:13;;;;;12318:28;12357:17;6328:5;12386:3;12377:6;:12;;;;:::i;:::-;:30;;;;:::i;:::-;12357:50;;12434:1;12422:9;:13;12418:157;;;12480:9;12454:7;:22;12470:4;12454:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;12532:4;12509:40;;12518:4;12509:40;;;12539:9;12509:40;;;;;;:::i;:::-;;;;;;;;12418:157;12601:9;12592:6;:18;;;;:::i;:::-;12585:25;;;;12088: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:60::-;6632:3;6653:5;6646:12;;6604:60;;;:::o;6670:142::-;6720:9;6753:53;6771:34;6780:24;6798:5;6780:24;:::i;:::-;6771:34;:::i;:::-;6753:53;:::i;:::-;6740:66;;6670:142;;;:::o;6818:126::-;6868:9;6901:37;6932:5;6901:37;:::i;:::-;6888:50;;6818:126;;;:::o;6950:143::-;7017:9;7050:37;7081:5;7050:37;:::i;:::-;7037:50;;6950:143;;;:::o;7099:165::-;7203:54;7251:5;7203:54;:::i;:::-;7198:3;7191:67;7099:165;;:::o;7270:256::-;7380:4;7418:2;7407:9;7403:18;7395:26;;7431:88;7516:1;7505:9;7501:17;7492:6;7431:88;:::i;:::-;7270:256;;;;:::o;7532:474::-;7600:6;7608;7657:2;7645:9;7636:7;7632:23;7628:32;7625:119;;;7663:79;;:::i;:::-;7625:119;7783:1;7808:53;7853:7;7844:6;7833:9;7829:22;7808:53;:::i;:::-;7798:63;;7754:117;7910:2;7936:53;7981:7;7972:6;7961:9;7957:22;7936:53;:::i;:::-;7926:63;;7881:118;7532:474;;;;;:::o;8012:::-;8080:6;8088;8137:2;8125:9;8116:7;8112:23;8108:32;8105:119;;;8143:79;;:::i;:::-;8105:119;8263:1;8288:53;8333:7;8324:6;8313:9;8309:22;8288:53;:::i;:::-;8278:63;;8234:117;8390:2;8416:53;8461:7;8452:6;8441:9;8437:22;8416:53;:::i;:::-;8406:63;;8361:118;8012:474;;;;;:::o;8492:180::-;8540:77;8537:1;8530:88;8637:4;8634:1;8627:15;8661:4;8658:1;8651:15;8678:180;8726:77;8723:1;8716:88;8823:4;8820:1;8813:15;8847:4;8844:1;8837:15;8864:185;8904:1;8921:20;8939:1;8921:20;:::i;:::-;8916:25;;8955:20;8973:1;8955:20;:::i;:::-;8950:25;;8994:1;8984:35;;8999:18;;:::i;:::-;8984:35;9041:1;9038;9034:9;9029:14;;8864:185;;;;:::o;9055:182::-;9195:34;9191:1;9183:6;9179:14;9172:58;9055:182;:::o;9243:366::-;9385:3;9406:67;9470:2;9465:3;9406:67;:::i;:::-;9399:74;;9482:93;9571:3;9482:93;:::i;:::-;9600:2;9595:3;9591:12;9584:19;;9243:366;;;:::o;9615:419::-;9781:4;9819:2;9808:9;9804:18;9796:26;;9868:9;9862:4;9858:20;9854:1;9843:9;9839:17;9832:47;9896:131;10022:4;9896:131;:::i;:::-;9888:139;;9615:419;;;:::o;10040:166::-;10180:18;10176:1;10168:6;10164:14;10157:42;10040:166;:::o;10212:366::-;10354:3;10375:67;10439:2;10434:3;10375:67;:::i;:::-;10368:74;;10451:93;10540:3;10451:93;:::i;:::-;10569:2;10564:3;10560:12;10553:19;;10212:366;;;:::o;10584:419::-;10750:4;10788:2;10777:9;10773:18;10765:26;;10837:9;10831:4;10827:20;10823:1;10812:9;10808:17;10801:47;10865:131;10991:4;10865:131;:::i;:::-;10857:139;;10584:419;;;:::o;11009:194::-;11049:4;11069:20;11087:1;11069:20;:::i;:::-;11064:25;;11103:20;11121:1;11103:20;:::i;:::-;11098:25;;11147:1;11144;11140:9;11132:17;;11171:1;11165:4;11162:11;11159:37;;;11176:18;;:::i;:::-;11159:37;11009:194;;;;:::o;11209:159::-;11349:11;11345:1;11337:6;11333:14;11326:35;11209:159;:::o;11374:365::-;11516:3;11537:66;11601:1;11596:3;11537:66;:::i;:::-;11530:73;;11612:93;11701:3;11612:93;:::i;:::-;11730:2;11725:3;11721:12;11714:19;;11374:365;;;:::o;11745:419::-;11911:4;11949:2;11938:9;11934:18;11926:26;;11998:9;11992:4;11988:20;11984:1;11973:9;11969:17;11962:47;12026:131;12152:4;12026:131;:::i;:::-;12018:139;;11745:419;;;:::o;12170:320::-;12285:4;12323:2;12312:9;12308:18;12300:26;;12336:71;12404:1;12393:9;12389:17;12380:6;12336:71;:::i;:::-;12417:66;12479:2;12468:9;12464:18;12455:6;12417:66;:::i;:::-;12170:320;;;;;:::o;12496:173::-;12636:25;12632:1;12624:6;12620:14;12613:49;12496:173;:::o;12675:366::-;12817:3;12838:67;12902:2;12897:3;12838:67;:::i;:::-;12831:74;;12914:93;13003:3;12914:93;:::i;:::-;13032:2;13027:3;13023:12;13016:19;;12675:366;;;:::o;13047:419::-;13213:4;13251:2;13240:9;13236:18;13228:26;;13300:9;13294:4;13290:20;13286:1;13275:9;13271:17;13264:47;13328:131;13454:4;13328:131;:::i;:::-;13320:139;;13047:419;;;:::o;13472:225::-;13612:34;13608:1;13600:6;13596:14;13589:58;13681:8;13676:2;13668:6;13664:15;13657:33;13472:225;:::o;13703:366::-;13845:3;13866:67;13930:2;13925:3;13866:67;:::i;:::-;13859:74;;13942:93;14031:3;13942:93;:::i;:::-;14060:2;14055:3;14051:12;14044:19;;13703:366;;;:::o;14075:419::-;14241:4;14279:2;14268:9;14264:18;14256:26;;14328:9;14322:4;14318:20;14314:1;14303:9;14299:17;14292:47;14356:131;14482:4;14356:131;:::i;:::-;14348:139;;14075:419;;;:::o;14500:410::-;14540:7;14563:20;14581:1;14563:20;:::i;:::-;14558:25;;14597:20;14615:1;14597:20;:::i;:::-;14592:25;;14652:1;14649;14645:9;14674:30;14692:11;14674:30;:::i;:::-;14663:41;;14853:1;14844:7;14840:15;14837:1;14834:22;14814:1;14807:9;14787:83;14764:139;;14883:18;;:::i;:::-;14764:139;14548:362;14500:410;;;;:::o;14916:332::-;15037:4;15075:2;15064:9;15060:18;15052:26;;15088:71;15156:1;15145:9;15141:17;15132:6;15088:71;:::i;:::-;15169:72;15237:2;15226:9;15222:18;15213:6;15169:72;:::i;:::-;14916:332;;;;;:::o;15254:169::-;15394:21;15390:1;15382:6;15378:14;15371:45;15254:169;:::o;15429:366::-;15571:3;15592:67;15656:2;15651:3;15592:67;:::i;:::-;15585:74;;15668:93;15757:3;15668:93;:::i;:::-;15786:2;15781:3;15777:12;15770:19;;15429:366;;;:::o;15801:419::-;15967:4;16005:2;15994:9;15990:18;15982:26;;16054:9;16048:4;16044:20;16040:1;16029:9;16025:17;16018:47;16082:131;16208:4;16082:131;:::i;:::-;16074:139;;15801:419;;;:::o;16226:222::-;16366:34;16362:1;16354:6;16350:14;16343:58;16435:5;16430:2;16422:6;16418:15;16411:30;16226:222;:::o;16454:366::-;16596:3;16617:67;16681:2;16676:3;16617:67;:::i;:::-;16610:74;;16693:93;16782:3;16693:93;:::i;:::-;16811:2;16806:3;16802:12;16795:19;;16454:366;;;:::o;16826:419::-;16992:4;17030:2;17019:9;17015:18;17007:26;;17079:9;17073:4;17069:20;17065:1;17054:9;17050:17;17043:47;17107:131;17233:4;17107:131;:::i;:::-;17099:139;;16826:419;;;:::o;17251:224::-;17391:34;17387:1;17379:6;17375:14;17368:58;17460:7;17455:2;17447:6;17443:15;17436:32;17251:224;:::o;17481:366::-;17623:3;17644:67;17708:2;17703:3;17644:67;:::i;:::-;17637:74;;17720:93;17809:3;17720:93;:::i;:::-;17838:2;17833:3;17829:12;17822:19;;17481:366;;;:::o;17853:419::-;18019:4;18057:2;18046:9;18042:18;18034:26;;18106:9;18100:4;18096:20;18092:1;18081:9;18077:17;18070:47;18134:131;18260:4;18134:131;:::i;:::-;18126:139;;17853:419;;;:::o;18278:228::-;18418:34;18414:1;18406:6;18402:14;18395:58;18487:11;18482:2;18474:6;18470:15;18463:36;18278:228;:::o;18512:366::-;18654:3;18675:67;18739:2;18734:3;18675:67;:::i;:::-;18668:74;;18751:93;18840:3;18751:93;:::i;:::-;18869:2;18864:3;18860:12;18853:19;;18512:366;;;:::o;18884:419::-;19050:4;19088:2;19077:9;19073:18;19065:26;;19137:9;19131:4;19127:20;19123:1;19112:9;19108:17;19101:47;19165:131;19291:4;19165:131;:::i;:::-;19157:139;;18884:419;;;:::o;19309:172::-;19449:24;19445:1;19437:6;19433:14;19426:48;19309:172;:::o;19487:366::-;19629:3;19650:67;19714:2;19709:3;19650:67;:::i;:::-;19643:74;;19726:93;19815:3;19726:93;:::i;:::-;19844:2;19839:3;19835:12;19828:19;;19487:366;;;:::o;19859:419::-;20025:4;20063:2;20052:9;20048:18;20040:26;;20112:9;20106:4;20102:20;20098:1;20087:9;20083:17;20076:47;20140:131;20266:4;20140:131;:::i;:::-;20132:139;;19859:419;;;:::o;20284:191::-;20324:3;20343:20;20361:1;20343:20;:::i;:::-;20338:25;;20377:20;20395:1;20377:20;:::i;:::-;20372:25;;20420:1;20417;20413:9;20406:16;;20441:3;20438:1;20435:10;20432:36;;;20448:18;;:::i;:::-;20432:36;20284:191;;;;:::o;20481:180::-;20529:77;20526:1;20519:88;20626:4;20623:1;20616:15;20650:4;20647:1;20640:15;20667:180;20715:77;20712:1;20705:88;20812:4;20809:1;20802:15;20836:4;20833:1;20826:15;20853:143;20910:5;20941:6;20935:13;20926:22;;20957:33;20984:5;20957:33;:::i;:::-;20853:143;;;;:::o;21002:351::-;21072:6;21121:2;21109:9;21100:7;21096:23;21092:32;21089:119;;;21127:79;;:::i;:::-;21089:119;21247:1;21272:64;21328:7;21319:6;21308:9;21304:22;21272:64;:::i;:::-;21262:74;;21218:128;21002:351;;;;:::o;21359:85::-;21404:7;21433:5;21422:16;;21359:85;;;:::o;21450:158::-;21508:9;21541:61;21559:42;21568:32;21594:5;21568:32;:::i;:::-;21559:42;:::i;:::-;21541:61;:::i;:::-;21528:74;;21450:158;;;:::o;21614:147::-;21709:45;21748:5;21709:45;:::i;:::-;21704:3;21697:58;21614:147;;:::o;21767:114::-;21834:6;21868:5;21862:12;21852:22;;21767:114;;;:::o;21887:184::-;21986:11;22020:6;22015:3;22008:19;22060:4;22055:3;22051:14;22036:29;;21887:184;;;;:::o;22077:132::-;22144:4;22167:3;22159:11;;22197:4;22192:3;22188:14;22180:22;;22077:132;;;:::o;22215:108::-;22292:24;22310:5;22292:24;:::i;:::-;22287:3;22280:37;22215:108;;:::o;22329:179::-;22398:10;22419:46;22461:3;22453:6;22419:46;:::i;:::-;22497:4;22492:3;22488:14;22474:28;;22329:179;;;;:::o;22514:113::-;22584:4;22616;22611:3;22607:14;22599:22;;22514:113;;;:::o;22663:732::-;22782:3;22811:54;22859:5;22811:54;:::i;:::-;22881:86;22960:6;22955:3;22881:86;:::i;:::-;22874:93;;22991:56;23041:5;22991:56;:::i;:::-;23070:7;23101:1;23086:284;23111:6;23108:1;23105:13;23086:284;;;23187:6;23181:13;23214:63;23273:3;23258:13;23214:63;:::i;:::-;23207:70;;23300:60;23353:6;23300:60;:::i;:::-;23290:70;;23146:224;23133:1;23130;23126:9;23121:14;;23086:284;;;23090:14;23386:3;23379:10;;22787:608;;;22663:732;;;;:::o;23401:831::-;23664:4;23702:3;23691:9;23687:19;23679:27;;23716:71;23784:1;23773:9;23769:17;23760:6;23716:71;:::i;:::-;23797:80;23873:2;23862:9;23858:18;23849:6;23797:80;:::i;:::-;23924:9;23918:4;23914:20;23909:2;23898:9;23894:18;23887:48;23952:108;24055:4;24046:6;23952:108;:::i;:::-;23944:116;;24070:72;24138:2;24127:9;24123:18;24114:6;24070:72;:::i;:::-;24152:73;24220:3;24209:9;24205:19;24196:6;24152:73;:::i;:::-;23401:831;;;;;;;;:::o;24238:147::-;24339:11;24376:3;24361:18;;24238:147;;;;:::o;24391:114::-;;:::o;24511:398::-;24670:3;24691:83;24772:1;24767:3;24691:83;:::i;:::-;24684:90;;24783:93;24872:3;24783:93;:::i;:::-;24901:1;24896:3;24892:11;24885:18;;24511:398;;;:::o;24915:379::-;25099:3;25121:147;25264:3;25121:147;:::i;:::-;25114:154;;25285:3;25278:10;;24915:379;;;:::o

Swarm Source

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