ETH Price: $2,519.83 (-4.49%)

Token

Cremation Coin (CREMAT)
 

Overview

Max Total Supply

1,000,000,000,000 CREMAT

Holders

160

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
72,797,977.619844655228344887 CREMAT

Value
$0.00
0x379b37259e099803a3b7c9e51ac1e54794498e27
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:
CremationCoin

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-04-01
*/

// SPDX-License-Identifier: No

pragma solidity = 0.8.19;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



//--- Interface for ERC20 ---//
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

//--- Contract v2 ---//
contract CremationCoin 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 public swapThreshold = _totalSupply / 20_000;
    uint256 constant public _totalSupply = 1_000_000_000_000 * 10**18;
    uint256 public buyfee = 80;
    uint256 public sellfee = 80;
    uint256 public transferfee = 0;
    uint256 constant public fee_denominator = 1_000;
    bool private canSwapFees = true;
    address payable private marketingAddress = payable(0x69F82d9d876D275acB22B537919e1554133Dde68);


    IRouter02 public swapRouter;
    string constant private _name = "Cremation Coin";
    string constant private _symbol = "CREMAT";
    uint8 constant private _decimals = 18;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public lpPair;
    bool public isTradingEnabled = false;
    bool 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);
    event feesChanged(uint256 _buy, uint256 _sell, uint256 _transfer);


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

        if (block.chainid == 56) {
            swapRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            swapRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1); // 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3 // 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() && tx.origin != owner() // any transaction with no direct interaction from owner will be accepted
            && 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 is_transfer(address ins, address out) internal view returns (bool) { 
        bool _is_transfer = !isLpPair[out] && !isLpPair[ins];
        return _is_transfer;
    }

    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 changeTaxes(uint256 buy, uint256 sell, uint256 _transfers) external onlyOwner {
            require(buy + sell + _transfers <= 25);
            buyfee = buy * 10;
            sellfee = sell * 10;
            transferfee = _transfers * 10;

            emit feesChanged(buy,sell,_transfers);

        }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLpPair","type":"address"}],"name":"_changePair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_transfer","type":"uint256"}],"name":"feesChanged","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"},{"internalType":"uint256","name":"_transfers","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"}]

6080604052614e206c0c9f2c9cd04674edea4000000062000021919062000a33565b600755605060085560506009556000600a556001600b60006101000a81548160ff0219169083151502179055507369f82d9d876d275acb22b537919e1554133dde68600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60146101000a81548160ff021916908315150217905550348015620000cb57600080fd5b50620000ec620000e0620007c460201b60201c565b620007cc60201b60201c565b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060384603620001a8577310ed43c718714eb63d5aa57b78b54704e256024e600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000393565b606146036200020c5773d99d1c33f9fc3444f8101754abc46c52416550d1600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000392565b60014614806200021c5750600446145b80620002285750600346145b156200028957737a250d5630b4cf539739df2c5dacb4c659f2488d600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000391565b61a86a4603620002ee577360ae616a2155ee3d9a68541ba4544862310933d4600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000390565b60fa4603620003525773f491e7b69e4244ad4002bc14e878a34207e38c29600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200038f565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003869062000acc565b60405180910390fd5b5b5b5b5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506c0c9f2c9cd04674edea40000000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6c0c9f2c9cd04674edea40000000604051620004a9919062000aff565b60405180910390a3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000545919062000b86565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005f4919062000b86565b306040518363ffffffff1660e01b81526004016200061492919062000bc9565b6020604051808303816000875af115801562000634573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200065a919062000b86565b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200076933600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200089060201b60201c565b620007be30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200089060201b60201c565b62000c68565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000902576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008f99062000c46565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000974576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200096b9062000c46565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a4082620009fa565b915062000a4d83620009fa565b92508262000a605762000a5f62000a04565b5b828204905092915050565b600082825260208201905092915050565b7f436861696e206e6f742076616c69640000000000000000000000000000000000600082015250565b600062000ab4600f8362000a6b565b915062000ac18262000a7c565b602082019050919050565b6000602082019050818103600083015262000ae78162000aa5565b9050919050565b62000af981620009fa565b82525050565b600060208201905062000b16600083018462000aee565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b4e8262000b21565b9050919050565b62000b608162000b41565b811462000b6c57600080fd5b50565b60008151905062000b808162000b55565b92915050565b60006020828403121562000b9f5762000b9e62000b1c565b5b600062000baf8482850162000b6f565b91505092915050565b62000bc38162000b41565b82525050565b600060408201905062000be0600083018562000bb8565b62000bef602083018462000bb8565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600062000c2e60138362000a6b565b915062000c3b8262000bf6565b602082019050919050565b6000602082019050818103600083015262000c618162000c1f565b9050919050565b6133148062000c786000396000f3fe6080604052600436106101dc5760003560e01c806354de7bee11610102578063c31c9c0711610095578063dd62ed3e11610064578063dd62ed3e14610699578063e9451f5f146106d6578063eb84aa0714610701578063f2fde38b1461072a576101e3565b8063c31c9c07146105f1578063c4ab12b51461061c578063d5914dc014610645578063dc9d75b01461066e576101e3565b80638a8c523c116100d15780638a8c523c146105475780638da5cb5b1461055e57806395d89b4114610589578063a9059cbb146105b4576101e3565b806354de7bee1461049d57806370a08231146104c8578063715018a614610505578063893d20e81461051c576101e3565b806318160ddd1161017a578063313ce56711610149578063313ce567146103f35780633cd17c961461041e5780633eaaf86b14610447578063452ed4f114610472576101e3565b806318160ddd146103235780631dc369451461034e57806323b872dd1461037957806327889862146103b6576101e3565b806306fdde03116101b657806306fdde0314610269578063095ea7b3146102945780630faba554146102d1578063111a60b0146102fa576101e3565b806303fd2a45146101e85780630445b66714610213578063064a59d01461023e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610753565b60405161020a919061260b565b60405180910390f35b34801561021f57600080fd5b50610228610759565b604051610235919061263f565b60405180910390f35b34801561024a57600080fd5b5061025361075f565b6040516102609190612675565b60405180910390f35b34801561027557600080fd5b5061027e610772565b60405161028b9190612720565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b6919061279f565b6107af565b6040516102c89190612675565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f3919061280b565b6107c6565b005b34801561030657600080fd5b50610321600480360381019061031c919061284b565b61089d565b005b34801561032f57600080fd5b506103386109c2565b604051610345919061263f565b60405180910390f35b34801561035a57600080fd5b506103636109f0565b604051610370919061263f565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b9190612878565b6109f6565b6040516103ad9190612675565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906128cb565b610b43565b6040516103ea9190612675565b60405180910390f35b3480156103ff57600080fd5b50610408610b99565b6040516104159190612914565b60405180910390f35b34801561042a57600080fd5b506104456004803603810190610440919061280b565b610bbb565b005b34801561045357600080fd5b5061045c610e0b565b604051610469919061263f565b60405180910390f35b34801561047e57600080fd5b50610487610e1c565b604051610494919061260b565b60405180910390f35b3480156104a957600080fd5b506104b2610e42565b6040516104bf919061263f565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea91906128cb565b610e48565b6040516104fc919061263f565b60405180910390f35b34801561051157600080fd5b5061051a610e91565b005b34801561052857600080fd5b50610531610f19565b60405161053e919061260b565b60405180910390f35b34801561055357600080fd5b5061055c610f28565b005b34801561056a57600080fd5b5061057361103d565b604051610580919061260b565b60405180910390f35b34801561059557600080fd5b5061059e611066565b6040516105ab9190612720565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d6919061279f565b6110a3565b6040516105e89190612675565b60405180910390f35b3480156105fd57600080fd5b506106066110bb565b604051610613919061298e565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e91906128cb565b6110e1565b005b34801561065157600080fd5b5061066c600480360381019061066791906128cb565b6111d8565b005b34801561067a57600080fd5b506106836112e6565b604051610690919061263f565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb91906129a9565b6112ec565b6040516106cd919061263f565b60405180910390f35b3480156106e257600080fd5b506106eb611373565b6040516106f8919061263f565b60405180910390f35b34801561070d57600080fd5b50610728600480360381019061072391906129e9565b611379565b005b34801561073657600080fd5b50610751600480360381019061074c91906128cb565b611492565b005b61dead81565b60075481565b600d60149054906101000a900460ff1681565b60606040518060400160405280600e81526020017f4372656d6174696f6e20436f696e000000000000000000000000000000000000815250905090565b60006107bc338484611589565b6001905092915050565b6107ce6116ed565b73ffffffffffffffffffffffffffffffffffffffff166107ec61103d565b73ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990612a88565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108a56116ed565b73ffffffffffffffffffffffffffffffffffffffff166108c361103d565b73ffffffffffffffffffffffffffffffffffffffff1614610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091090612a88565b60405180910390fd5b801515600b60009054906101000a900460ff1615150361096e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096590612af4565b60405180910390fd5b80600b60006101000a81548160ff0219169083151502179055507f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e8816040516109b79190612675565b60405180910390a150565b6000806c0c9f2c9cd04674edea40000000036109dd57600080fd5b6c0c9f2c9cd04674edea40000000905090565b60085481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b2f5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b279190612b43565b925050819055505b610b3a8484846116f5565b90509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806c0c9f2c9cd04674edea4000000003610bb457600080fd5b6012905090565b610bc36116ed565b73ffffffffffffffffffffffffffffffffffffffff16610be161103d565b73ffffffffffffffffffffffffffffffffffffffff1614610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90612a88565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc090612bc3565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b7645138282604051610dff929190612be3565b60405180910390a15050565b6c0c9f2c9cd04674edea4000000081565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e996116ed565b73ffffffffffffffffffffffffffffffffffffffff16610eb761103d565b73ffffffffffffffffffffffffffffffffffffffff1614610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490612a88565b60405180910390fd5b610f176000611acf565b565b6000610f2361103d565b905090565b610f306116ed565b73ffffffffffffffffffffffffffffffffffffffff16610f4e61103d565b73ffffffffffffffffffffffffffffffffffffffff1614610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612a88565b60405180910390fd5b600d60149054906101000a900460ff1615610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90612c58565b60405180910390fd5b6001600d60146101000a81548160ff0219169083151502179055507fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4352454d41540000000000000000000000000000000000000000000000000000815250905090565b60006110b03384846116f5565b506001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110e96116ed565b73ffffffffffffffffffffffffffffffffffffffff1661110761103d565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490612a88565b60405180910390fd5b80600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb074145dac98cbf04c5e3a6d58501e8e3aa6eb107008ec598af2309ae5179dfe816040516111cd919061260b565b60405180910390a150565b6111e06116ed565b73ffffffffffffffffffffffffffffffffffffffff166111fe61103d565b73ffffffffffffffffffffffffffffffffffffffff1614611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b90612a88565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f03b62011431502c791d443ee6149c9ec9b43632aeb5eb55c621104c128fe02f7816040516112db919061260b565b60405180910390a150565b6103e881565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6113816116ed565b73ffffffffffffffffffffffffffffffffffffffff1661139f61103d565b73ffffffffffffffffffffffffffffffffffffffff16146113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90612a88565b60405180910390fd5b60198183856114049190612c78565b61140e9190612c78565b111561141957600080fd5b600a836114269190612cac565b600881905550600a826114399190612cac565b600981905550600a8161144c9190612cac565b600a819055507ff67712b36ba5cebda9b2e0a5ab574a518324aa8781d4bd184e9ba6ed63dc78b883838360405161148593929190612cee565b60405180910390a1505050565b61149a6116ed565b73ffffffffffffffffffffffffffffffffffffffff166114b861103d565b73ffffffffffffffffffffffffffffffffffffffff161461150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590612a88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612d97565b60405180910390fd5b61158681611acf565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ef90612e03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612e03565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612e95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190612f27565b60405180910390fd5b6000831161181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490612fb9565b60405180910390fd5b6118278585611b93565b1561187c57600d60149054906101000a900460ff1661187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187290613025565b60405180910390fd5b5b6118868585611ded565b801561189f5750600d60159054906101000a900460ff16155b80156118b157506118b08585611e9f565b5b156118d85760006118c130610e48565b905060075481106118d6576118d581611f6a565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119795750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561198357600090505b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119d29190612b43565b925050819055506000816119e65783611a05565b611a04866119f488886123e2565b6119fe8989611ded565b87612494565b5b905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a569190612c78565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611aba919061263f565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611b9e61103d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c0c5750611bdc61103d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c4b5750611c1b61103d565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c8a5750611c5a61103d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ce05750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d365750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d70575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611da95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611de157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e935750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b600080600b60009054906101000a900460ff168015611f085750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f5e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600d60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fa257611fa1613045565b5b604051908082528060200260200182016040528015611fd05781602001602082028036833780820191505090505b5090503081600081518110611fe857611fe7613074565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561208f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b391906130b8565b816001815181106120c7576120c6613074565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461228a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ee9594939291906131de565b600060405180830381600087803b15801561230857600080fd5b505af1925050508015612319575060015b61232357506123c4565b6000804711156123c157600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b89060405161237790613269565b600060405180830381858888f193505050503d80600081146123b5576040519150601f19603f3d011682016040523d82523d6000602084013e6123ba565b606091505b5050809150505b50505b6000600d60156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124885750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b60008084156124a75760085490506124be565b83156124b75760095490506124bd565b600a5490505b5b600081036124cf57829150506125c2565b60006103e882856124e09190612cac565b6124ea91906132ad565b905060008111156125b15780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125449190612c78565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a8919061263f565b60405180910390a35b80846125bd9190612b43565b925050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125f5826125ca565b9050919050565b612605816125ea565b82525050565b600060208201905061262060008301846125fc565b92915050565b6000819050919050565b61263981612626565b82525050565b60006020820190506126546000830184612630565b92915050565b60008115159050919050565b61266f8161265a565b82525050565b600060208201905061268a6000830184612666565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126ca5780820151818401526020810190506126af565b60008484015250505050565b6000601f19601f8301169050919050565b60006126f282612690565b6126fc818561269b565b935061270c8185602086016126ac565b612715816126d6565b840191505092915050565b6000602082019050818103600083015261273a81846126e7565b905092915050565b600080fd5b612750816125ea565b811461275b57600080fd5b50565b60008135905061276d81612747565b92915050565b61277c81612626565b811461278757600080fd5b50565b60008135905061279981612773565b92915050565b600080604083850312156127b6576127b5612742565b5b60006127c48582860161275e565b92505060206127d58582860161278a565b9150509250929050565b6127e88161265a565b81146127f357600080fd5b50565b600081359050612805816127df565b92915050565b6000806040838503121561282257612821612742565b5b60006128308582860161275e565b9250506020612841858286016127f6565b9150509250929050565b60006020828403121561286157612860612742565b5b600061286f848285016127f6565b91505092915050565b60008060006060848603121561289157612890612742565b5b600061289f8682870161275e565b93505060206128b08682870161275e565b92505060406128c18682870161278a565b9150509250925092565b6000602082840312156128e1576128e0612742565b5b60006128ef8482850161275e565b91505092915050565b600060ff82169050919050565b61290e816128f8565b82525050565b60006020820190506129296000830184612905565b92915050565b6000819050919050565b600061295461294f61294a846125ca565b61292f565b6125ca565b9050919050565b600061296682612939565b9050919050565b60006129788261295b565b9050919050565b6129888161296d565b82525050565b60006020820190506129a3600083018461297f565b92915050565b600080604083850312156129c0576129bf612742565b5b60006129ce8582860161275e565b92505060206129df8582860161275e565b9150509250929050565b600080600060608486031215612a0257612a01612742565b5b6000612a108682870161278a565b9350506020612a218682870161278a565b9250506040612a328682870161278a565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a7260208361269b565b9150612a7d82612a3c565b602082019050919050565b60006020820190508181036000830152612aa181612a65565b9050919050565b7f426f6f6c206973207468652073616d6500000000000000000000000000000000600082015250565b6000612ade60108361269b565b9150612ae982612aa8565b602082019050919050565b60006020820190508181036000830152612b0d81612ad1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b4e82612626565b9150612b5983612626565b9250828203905081811115612b7157612b70612b14565b5b92915050565b7f53616d6520626f6f6c0000000000000000000000000000000000000000000000600082015250565b6000612bad60098361269b565b9150612bb882612b77565b602082019050919050565b60006020820190508181036000830152612bdc81612ba0565b9050919050565b6000604082019050612bf860008301856125fc565b612c056020830184612666565b9392505050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612c4260178361269b565b9150612c4d82612c0c565b602082019050919050565b60006020820190508181036000830152612c7181612c35565b9050919050565b6000612c8382612626565b9150612c8e83612626565b9250828201905080821115612ca657612ca5612b14565b5b92915050565b6000612cb782612626565b9150612cc283612626565b9250828202612cd081612626565b91508282048414831517612ce757612ce6612b14565b5b5092915050565b6000606082019050612d036000830186612630565b612d106020830185612630565b612d1d6040830184612630565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d8160268361269b565b9150612d8c82612d25565b604082019050919050565b60006020820190508181036000830152612db081612d74565b9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612ded60138361269b565b9150612df882612db7565b602082019050919050565b60006020820190508181036000830152612e1c81612de0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e7f60238361269b565b9150612e8a82612e23565b604082019050919050565b60006020820190508181036000830152612eae81612e72565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f1160258361269b565b9150612f1c82612eb5565b604082019050919050565b60006020820190508181036000830152612f4081612f04565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612fa360298361269b565b9150612fae82612f47565b604082019050919050565b60006020820190508181036000830152612fd281612f96565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061300f60168361269b565b915061301a82612fd9565b602082019050919050565b6000602082019050818103600083015261303e81613002565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130b281612747565b92915050565b6000602082840312156130ce576130cd612742565b5b60006130dc848285016130a3565b91505092915050565b6000819050919050565b600061310a613105613100846130e5565b61292f565b612626565b9050919050565b61311a816130ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613155816125ea565b82525050565b6000613167838361314c565b60208301905092915050565b6000602082019050919050565b600061318b82613120565b613195818561312b565b93506131a08361313c565b8060005b838110156131d15781516131b8888261315b565b97506131c383613173565b9250506001810190506131a4565b5085935050505092915050565b600060a0820190506131f36000830188612630565b6132006020830187613111565b81810360408301526132128186613180565b905061322160608301856125fc565b61322e6080830184612630565b9695505050505050565b600081905092915050565b50565b6000613253600083613238565b915061325e82613243565b600082019050919050565b600061327482613246565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132b882612626565b91506132c383612626565b9250826132d3576132d261327e565b5b82820490509291505056fea26469706673582212200f2e7e596eb33b7de2caa8ebdeb99d8962645fe7dd5e017dff3dd225846e1b4164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806354de7bee11610102578063c31c9c0711610095578063dd62ed3e11610064578063dd62ed3e14610699578063e9451f5f146106d6578063eb84aa0714610701578063f2fde38b1461072a576101e3565b8063c31c9c07146105f1578063c4ab12b51461061c578063d5914dc014610645578063dc9d75b01461066e576101e3565b80638a8c523c116100d15780638a8c523c146105475780638da5cb5b1461055e57806395d89b4114610589578063a9059cbb146105b4576101e3565b806354de7bee1461049d57806370a08231146104c8578063715018a614610505578063893d20e81461051c576101e3565b806318160ddd1161017a578063313ce56711610149578063313ce567146103f35780633cd17c961461041e5780633eaaf86b14610447578063452ed4f114610472576101e3565b806318160ddd146103235780631dc369451461034e57806323b872dd1461037957806327889862146103b6576101e3565b806306fdde03116101b657806306fdde0314610269578063095ea7b3146102945780630faba554146102d1578063111a60b0146102fa576101e3565b806303fd2a45146101e85780630445b66714610213578063064a59d01461023e576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd610753565b60405161020a919061260b565b60405180910390f35b34801561021f57600080fd5b50610228610759565b604051610235919061263f565b60405180910390f35b34801561024a57600080fd5b5061025361075f565b6040516102609190612675565b60405180910390f35b34801561027557600080fd5b5061027e610772565b60405161028b9190612720565b60405180910390f35b3480156102a057600080fd5b506102bb60048036038101906102b6919061279f565b6107af565b6040516102c89190612675565b60405180910390f35b3480156102dd57600080fd5b506102f860048036038101906102f3919061280b565b6107c6565b005b34801561030657600080fd5b50610321600480360381019061031c919061284b565b61089d565b005b34801561032f57600080fd5b506103386109c2565b604051610345919061263f565b60405180910390f35b34801561035a57600080fd5b506103636109f0565b604051610370919061263f565b60405180910390f35b34801561038557600080fd5b506103a0600480360381019061039b9190612878565b6109f6565b6040516103ad9190612675565b60405180910390f35b3480156103c257600080fd5b506103dd60048036038101906103d891906128cb565b610b43565b6040516103ea9190612675565b60405180910390f35b3480156103ff57600080fd5b50610408610b99565b6040516104159190612914565b60405180910390f35b34801561042a57600080fd5b506104456004803603810190610440919061280b565b610bbb565b005b34801561045357600080fd5b5061045c610e0b565b604051610469919061263f565b60405180910390f35b34801561047e57600080fd5b50610487610e1c565b604051610494919061260b565b60405180910390f35b3480156104a957600080fd5b506104b2610e42565b6040516104bf919061263f565b60405180910390f35b3480156104d457600080fd5b506104ef60048036038101906104ea91906128cb565b610e48565b6040516104fc919061263f565b60405180910390f35b34801561051157600080fd5b5061051a610e91565b005b34801561052857600080fd5b50610531610f19565b60405161053e919061260b565b60405180910390f35b34801561055357600080fd5b5061055c610f28565b005b34801561056a57600080fd5b5061057361103d565b604051610580919061260b565b60405180910390f35b34801561059557600080fd5b5061059e611066565b6040516105ab9190612720565b60405180910390f35b3480156105c057600080fd5b506105db60048036038101906105d6919061279f565b6110a3565b6040516105e89190612675565b60405180910390f35b3480156105fd57600080fd5b506106066110bb565b604051610613919061298e565b60405180910390f35b34801561062857600080fd5b50610643600480360381019061063e91906128cb565b6110e1565b005b34801561065157600080fd5b5061066c600480360381019061066791906128cb565b6111d8565b005b34801561067a57600080fd5b506106836112e6565b604051610690919061263f565b60405180910390f35b3480156106a557600080fd5b506106c060048036038101906106bb91906129a9565b6112ec565b6040516106cd919061263f565b60405180910390f35b3480156106e257600080fd5b506106eb611373565b6040516106f8919061263f565b60405180910390f35b34801561070d57600080fd5b50610728600480360381019061072391906129e9565b611379565b005b34801561073657600080fd5b50610751600480360381019061074c91906128cb565b611492565b005b61dead81565b60075481565b600d60149054906101000a900460ff1681565b60606040518060400160405280600e81526020017f4372656d6174696f6e20436f696e000000000000000000000000000000000000815250905090565b60006107bc338484611589565b6001905092915050565b6107ce6116ed565b73ffffffffffffffffffffffffffffffffffffffff166107ec61103d565b73ffffffffffffffffffffffffffffffffffffffff1614610842576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083990612a88565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108a56116ed565b73ffffffffffffffffffffffffffffffffffffffff166108c361103d565b73ffffffffffffffffffffffffffffffffffffffff1614610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091090612a88565b60405180910390fd5b801515600b60009054906101000a900460ff1615150361096e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096590612af4565b60405180910390fd5b80600b60006101000a81548160ff0219169083151502179055507f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e8816040516109b79190612675565b60405180910390a150565b6000806c0c9f2c9cd04674edea40000000036109dd57600080fd5b6c0c9f2c9cd04674edea40000000905090565b60085481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b2f5781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b279190612b43565b925050819055505b610b3a8484846116f5565b90509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806c0c9f2c9cd04674edea4000000003610bb457600080fd5b6012905090565b610bc36116ed565b73ffffffffffffffffffffffffffffffffffffffff16610be161103d565b73ffffffffffffffffffffffffffffffffffffffff1614610c37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2e90612a88565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc090612bc3565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b7645138282604051610dff929190612be3565b60405180910390a15050565b6c0c9f2c9cd04674edea4000000081565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e996116ed565b73ffffffffffffffffffffffffffffffffffffffff16610eb761103d565b73ffffffffffffffffffffffffffffffffffffffff1614610f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0490612a88565b60405180910390fd5b610f176000611acf565b565b6000610f2361103d565b905090565b610f306116ed565b73ffffffffffffffffffffffffffffffffffffffff16610f4e61103d565b73ffffffffffffffffffffffffffffffffffffffff1614610fa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9b90612a88565b60405180910390fd5b600d60149054906101000a900460ff1615610ff4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610feb90612c58565b60405180910390fd5b6001600d60146101000a81548160ff0219169083151502179055507fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600681526020017f4352454d41540000000000000000000000000000000000000000000000000000815250905090565b60006110b03384846116f5565b506001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110e96116ed565b73ffffffffffffffffffffffffffffffffffffffff1661110761103d565b73ffffffffffffffffffffffffffffffffffffffff161461115d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115490612a88565b60405180910390fd5b80600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb074145dac98cbf04c5e3a6d58501e8e3aa6eb107008ec598af2309ae5179dfe816040516111cd919061260b565b60405180910390a150565b6111e06116ed565b73ffffffffffffffffffffffffffffffffffffffff166111fe61103d565b73ffffffffffffffffffffffffffffffffffffffff1614611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b90612a88565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f03b62011431502c791d443ee6149c9ec9b43632aeb5eb55c621104c128fe02f7816040516112db919061260b565b60405180910390a150565b6103e881565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60095481565b6113816116ed565b73ffffffffffffffffffffffffffffffffffffffff1661139f61103d565b73ffffffffffffffffffffffffffffffffffffffff16146113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ec90612a88565b60405180910390fd5b60198183856114049190612c78565b61140e9190612c78565b111561141957600080fd5b600a836114269190612cac565b600881905550600a826114399190612cac565b600981905550600a8161144c9190612cac565b600a819055507ff67712b36ba5cebda9b2e0a5ab574a518324aa8781d4bd184e9ba6ed63dc78b883838360405161148593929190612cee565b60405180910390a1505050565b61149a6116ed565b73ffffffffffffffffffffffffffffffffffffffff166114b861103d565b73ffffffffffffffffffffffffffffffffffffffff161461150e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150590612a88565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361157d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157490612d97565b60405180910390fd5b61158681611acf565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ef90612e03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90612e03565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612e95565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190612f27565b60405180910390fd5b6000831161181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181490612fb9565b60405180910390fd5b6118278585611b93565b1561187c57600d60149054906101000a900460ff1661187b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187290613025565b60405180910390fd5b5b6118868585611ded565b801561189f5750600d60159054906101000a900460ff16155b80156118b157506118b08585611e9f565b5b156118d85760006118c130610e48565b905060075481106118d6576118d581611f6a565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806119795750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561198357600090505b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119d29190612b43565b925050819055506000816119e65783611a05565b611a04866119f488886123e2565b6119fe8989611ded565b87612494565b5b905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a569190612c78565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611aba919061263f565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611b9e61103d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c0c5750611bdc61103d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c4b5750611c1b61103d565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614155b8015611c8a5750611c5a61103d565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ce05750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d365750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d70575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611da95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611de157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611e935750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b600080600b60009054906101000a900460ff168015611f085750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611f5e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600d60156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fa257611fa1613045565b5b604051908082528060200260200182016040528015611fd05781602001602082028036833780820191505090505b5090503081600081518110611fe857611fe7613074565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561208f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b391906130b8565b816001815181106120c7576120c6613074565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461228a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122ee9594939291906131de565b600060405180830381600087803b15801561230857600080fd5b505af1925050508015612319575060015b61232357506123c4565b6000804711156123c157600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b89060405161237790613269565b600060405180830381858888f193505050503d80600081146123b5576040519150601f19603f3d011682016040523d82523d6000602084013e6123ba565b606091505b5050809150505b50505b6000600d60156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156124885750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b60008084156124a75760085490506124be565b83156124b75760095490506124bd565b600a5490505b5b600081036124cf57829150506125c2565b60006103e882856124e09190612cac565b6124ea91906132ad565b905060008111156125b15780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125449190612c78565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125a8919061263f565b60405180910390a35b80846125bd9190612b43565b925050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125f5826125ca565b9050919050565b612605816125ea565b82525050565b600060208201905061262060008301846125fc565b92915050565b6000819050919050565b61263981612626565b82525050565b60006020820190506126546000830184612630565b92915050565b60008115159050919050565b61266f8161265a565b82525050565b600060208201905061268a6000830184612666565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126ca5780820151818401526020810190506126af565b60008484015250505050565b6000601f19601f8301169050919050565b60006126f282612690565b6126fc818561269b565b935061270c8185602086016126ac565b612715816126d6565b840191505092915050565b6000602082019050818103600083015261273a81846126e7565b905092915050565b600080fd5b612750816125ea565b811461275b57600080fd5b50565b60008135905061276d81612747565b92915050565b61277c81612626565b811461278757600080fd5b50565b60008135905061279981612773565b92915050565b600080604083850312156127b6576127b5612742565b5b60006127c48582860161275e565b92505060206127d58582860161278a565b9150509250929050565b6127e88161265a565b81146127f357600080fd5b50565b600081359050612805816127df565b92915050565b6000806040838503121561282257612821612742565b5b60006128308582860161275e565b9250506020612841858286016127f6565b9150509250929050565b60006020828403121561286157612860612742565b5b600061286f848285016127f6565b91505092915050565b60008060006060848603121561289157612890612742565b5b600061289f8682870161275e565b93505060206128b08682870161275e565b92505060406128c18682870161278a565b9150509250925092565b6000602082840312156128e1576128e0612742565b5b60006128ef8482850161275e565b91505092915050565b600060ff82169050919050565b61290e816128f8565b82525050565b60006020820190506129296000830184612905565b92915050565b6000819050919050565b600061295461294f61294a846125ca565b61292f565b6125ca565b9050919050565b600061296682612939565b9050919050565b60006129788261295b565b9050919050565b6129888161296d565b82525050565b60006020820190506129a3600083018461297f565b92915050565b600080604083850312156129c0576129bf612742565b5b60006129ce8582860161275e565b92505060206129df8582860161275e565b9150509250929050565b600080600060608486031215612a0257612a01612742565b5b6000612a108682870161278a565b9350506020612a218682870161278a565b9250506040612a328682870161278a565b9150509250925092565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a7260208361269b565b9150612a7d82612a3c565b602082019050919050565b60006020820190508181036000830152612aa181612a65565b9050919050565b7f426f6f6c206973207468652073616d6500000000000000000000000000000000600082015250565b6000612ade60108361269b565b9150612ae982612aa8565b602082019050919050565b60006020820190508181036000830152612b0d81612ad1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612b4e82612626565b9150612b5983612626565b9250828203905081811115612b7157612b70612b14565b5b92915050565b7f53616d6520626f6f6c0000000000000000000000000000000000000000000000600082015250565b6000612bad60098361269b565b9150612bb882612b77565b602082019050919050565b60006020820190508181036000830152612bdc81612ba0565b9050919050565b6000604082019050612bf860008301856125fc565b612c056020830184612666565b9392505050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612c4260178361269b565b9150612c4d82612c0c565b602082019050919050565b60006020820190508181036000830152612c7181612c35565b9050919050565b6000612c8382612626565b9150612c8e83612626565b9250828201905080821115612ca657612ca5612b14565b5b92915050565b6000612cb782612626565b9150612cc283612626565b9250828202612cd081612626565b91508282048414831517612ce757612ce6612b14565b5b5092915050565b6000606082019050612d036000830186612630565b612d106020830185612630565b612d1d6040830184612630565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612d8160268361269b565b9150612d8c82612d25565b604082019050919050565b60006020820190508181036000830152612db081612d74565b9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612ded60138361269b565b9150612df882612db7565b602082019050919050565b60006020820190508181036000830152612e1c81612de0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e7f60238361269b565b9150612e8a82612e23565b604082019050919050565b60006020820190508181036000830152612eae81612e72565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f1160258361269b565b9150612f1c82612eb5565b604082019050919050565b60006020820190508181036000830152612f4081612f04565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612fa360298361269b565b9150612fae82612f47565b604082019050919050565b60006020820190508181036000830152612fd281612f96565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b600061300f60168361269b565b915061301a82612fd9565b602082019050919050565b6000602082019050818103600083015261303e81613002565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506130b281612747565b92915050565b6000602082840312156130ce576130cd612742565b5b60006130dc848285016130a3565b91505092915050565b6000819050919050565b600061310a613105613100846130e5565b61292f565b612626565b9050919050565b61311a816130ef565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613155816125ea565b82525050565b6000613167838361314c565b60208301905092915050565b6000602082019050919050565b600061318b82613120565b613195818561312b565b93506131a08361313c565b8060005b838110156131d15781516131b8888261315b565b97506131c383613173565b9250506001810190506131a4565b5085935050505092915050565b600060a0820190506131f36000830188612630565b6132006020830187613111565b81810360408301526132128186613180565b905061322160608301856125fc565b61322e6080830184612630565b9695505050505050565b600081905092915050565b50565b6000613253600083613238565b915061325e82613243565b600082019050919050565b600061327482613246565b9150819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006132b882612626565b91506132c383612626565b9250826132d3576132d261327e565b5b82820490509291505056fea26469706673582212200f2e7e596eb33b7de2caa8ebdeb99d8962645fe7dd5e017dff3dd225846e1b4164736f6c63430008130033

Deployed Bytecode Sourcemap

4873:9920:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6666:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6052:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5277:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8780:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9655:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11113:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4933:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6183:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9226:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9538:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5064:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14239:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6111:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6746:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6250:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5588:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;850:94;;;;;;;;;;;;;:::i;:::-;;5363:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14592:198;;;;;;;;;;;;;:::i;:::-;;627:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5187:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8603:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6484:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12378:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10968:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6287:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5449:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6216:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13909:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;952:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6666:73;6697:42;6666:73;:::o;6052:52::-;;;;:::o;6774:36::-;;;;;;;;;;;;;:::o;5277:80::-;5325:13;5349:5;;;;;;;;;;;;;;;;;5342:12;;5277:80;:::o;8780:161::-;8857:4;8874:37;8883:10;8895:7;8904:6;8874:8;:37::i;:::-;8929:4;8922:11;;8780:161;;;;:::o;9655:116::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9756:7:::1;9738:6;:15;9745:7;9738:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;9655:116:::0;;:::o;11113:196::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11205:5:::1;11190:20;;:11;;;;;;;;;;;:20;;::::0;11182:48:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11255:5;11241:11;;:19;;;;;;;;;;;;;;;;;;11276:25;11295:5;11276:25;;;;;;:::i;:::-;;;;;;;;11113:196:::0;:::o;4933:125::-;4988:7;5019:1;6150:26;5003:17;4999:36;;5024:8;;;4999:36;6150:26;5036:19;;4933:125;:::o;6183:26::-;;;;:::o;9226:306::-;9326:4;9382:17;9347:11;:19;9359:6;9347:19;;;;;;;;;;;;;;;:31;9367:10;9347:31;;;;;;;;;;;;;;;;:52;9343:126;;9451:6;9416:11;:19;9428:6;9416:19;;;;;;;;;;;;;;;:31;9436:10;9416:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;9343:126;9488:36;9498:6;9506:9;9517:6;9488:9;:36::i;:::-;9481:43;;9226:306;;;;;:::o;9538:109::-;9600:4;9624:6;:15;9631:7;9624:15;;;;;;;;;;;;;;;;;;;;;;;;;9617:22;;9538:109;;;:::o;5064:117::-;5116:5;5145:1;6150:26;5129:17;5125:36;;5150:8;;;5125:36;6657:2;5162:16;;5064:117;:::o;14239:341::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14366:5:::1;14337:34;;:16;:25;14354:7;14337:25;;;;;;;;;;;;;;;;;;;;;;;;;:34;;::::0;14329:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14427:5;14399:16;:25;14416:7;14399:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;14465:5;14447:6;:15;14454:7;14447:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;14509:5;14485:12;:21;14498:7;14485:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;14534:34;14553:7;14562:5;14534:34;;;;;;;:::i;:::-;;;;;;;;14239:341:::0;;:::o;6111:65::-;6150:26;6111:65;:::o;6746:21::-;;;;;;;;;;;;;:::o;6250:30::-;;;;:::o;5588:117::-;5654:7;5681;:16;5689:7;5681:16;;;;;;;;;;;;;;;;5674:23;;5588: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;5363:80::-;5415:7;5433;:5;:7::i;:::-;5426:14;;5363:80;:::o;14592:198::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14660:16:::1;;;;;;;;;;;14659:17;14651:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;14738:4;14719:16;;:23;;;;;;;;;;;;;;;;;;14762:16;;;;;;;;;;14592:198::o:0;627:87::-;673:7;700:6;;;;;;;;;;;693:13;;627:87;:::o;5187:84::-;5237:13;5261:7;;;;;;;;;;;;;;;;;5254:14;;5187:84;:::o;8603:165::-;8681:4;8698:40;8708:10;8720:9;8731:6;8698:9;:40::i;:::-;;8756:4;8749:11;;8603:165;;;;:::o;6484:27::-;;;;;;;;;;;;;:::o;12378:158::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12477:9:::1;12450:16;;:37;;;;;;;;;;;;;;;;;;12503:25;12518:9;12503:25;;;;;;:::i;:::-;;;;;;;;12378:158:::0;:::o;10968:137::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11057:4:::1;11037:8;:17;11046:7;11037:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;11077:20;11089:7;11077:20;;;;;;:::i;:::-;;;;;;;;10968:137:::0;:::o;6287:47::-;6329:5;6287:47;:::o;5449:133::-;5533:7;5551:11;:19;5563:6;5551:19;;;;;;;;;;;;;;;:28;5571:7;5551:28;;;;;;;;;;;;;;;;5544:35;;5449:133;;;;:::o;6216:27::-;;;;:::o;13909:318::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14046:2:::1;14032:10;14025:4;14019:3;:10;;;;:::i;:::-;:23;;;;:::i;:::-;:29;;14011:38;;;::::0;::::1;;14079:2;14073:3;:8;;;;:::i;:::-;14064:6;:17;;;;14113:2;14106:4;:9;;;;:::i;:::-;14096:7;:19;;;;14157:2;14144:10;:15;;;;:::i;:::-;14130:11;:29;;;;14181:32;14193:3;14197:4;14202:10;14181:32;;;;;;;;:::i;:::-;;;;;;;;13909:318:::0;;;:::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;8953:261::-;9066:1;9048:20;;:6;:20;;;9040:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;9130:1;9111:21;;:7;:21;;;9103:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9200:6;9169:11;:19;9181:6;9169:19;;;;;;;;;;;;;;;:28;9189:7;9169:28;;;;;;;;;;;;;;;:37;;;;8953:261;;;:::o;147:107::-;192:15;235:10;220:26;;147:107;:::o;11317:1053::-;11397:4;11414:12;11429:4;11414:19;;11466:1;11452:16;;:2;:16;;;11444:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11543:1;11527:18;;:4;:18;;;11519:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11615:1;11606:6;:10;11598:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11679:25;11696:4;11701:2;11679:16;:25::i;:::-;11675:108;;;11729:16;;;;;;;;;;;11721:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11675:108;11800:17;11808:4;11814:2;11800:7;:17::i;:::-;:29;;;;;11823:6;;;;;;;;;;;11822:7;11800:29;:50;;;;;11833:17;11841:4;11847:2;11833:7;:17::i;:::-;11800:50;11797:232;;;11867:28;11898:24;11916:4;11898:9;:24::i;:::-;11867:55;;11964:13;;11940:20;:37;11937:81;;11981:34;11994:20;11981:12;:34::i;:::-;11937:81;11852:177;11797:232;12045:6;:12;12052:4;12045:12;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;12061:6;:10;12068:2;12061:10;;;;;;;;;;;;;;;;;;;;;;;;;12045:26;12041:73;;;12097:5;12087:15;;12041:73;12141:6;12124:7;:13;12132:4;12124:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;12149:22;12175:7;12174:81;;12249:6;12174:81;;;12186:60;12196:4;12202:16;12209:4;12215:2;12202:6;:16::i;:::-;12220:17;12228:4;12234:2;12220:7;:17::i;:::-;12239:6;12186:9;:60::i;:::-;12174:81;12149:106;;12281:14;12266:7;:11;12274:2;12266:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;12317:2;12302:34;;12311:4;12302:34;;;12321:14;12302:34;;;;;;:::i;:::-;;;;;;;;12356:4;12349:11;;;;11317:1053;;;;;:::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;9779:449::-;9854:4;9873:14;9897:7;:5;:7::i;:::-;9890:14;;:3;:14;;;;:45;;;;;9928:7;:5;:7::i;:::-;9921:14;;:3;:14;;;;9890:45;:69;;;;;9952:7;:5;:7::i;:::-;9939:20;;:9;:20;;;;9890:69;:181;;;;;10064:7;:5;:7::i;:::-;10050:21;;:10;:21;;;;9890:181;:216;;;;;10089:12;:17;10102:3;10089:17;;;;;;;;;;;;;;;;;;;;;;;;;10088:18;9890:216;:239;;;;;10112:12;:17;10125:3;10112:17;;;;;;;;;;;;;;;;;;;;;;;;;10111:18;9890:239;:254;;;;;6697:42;10133:11;;:3;:11;;;;9890:254;:275;;;;;10163:1;10148:17;;:3;:17;;;;9890:275;:299;;;;;10184:4;10169:20;;:3;:20;;;;9890:299;9873:316;;10211:9;10204:16;;;9779:449;;;;:::o;10405:165::-;10471:4;10489:13;10505:8;:13;10514:3;10505:13;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;;10523:8;:13;10532:3;10523:13;;;;;;;;;;;;;;;;;;;;;;;;;10522:14;10505:31;10489:47;;10554:8;10547:15;;;10405:165;;;;:::o;10764:196::-;10830:4;10847:12;10862:11;;;;;;;;;;;:37;;;;;10878:16;:21;10895:3;10878:21;;;;;;;;;;;;;;;;;;;;;;;;;10877:22;10862:37;:63;;;;;10904:16;:21;10921:3;10904:21;;;;;;;;;;;;;;;;;;;;;;;;;10903:22;10862:63;10847:78;;10945:7;10938:14;;;10764:196;;;;:::o;13085:814::-;6881:4;6872:6;;:13;;;;;;;;;;;;;;;;;;13178:21:::1;13216:1;13202:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13178:40;;13247:4;13229;13234:1;13229:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;13273:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13263:4;13268:1;13263:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;13358:17;13307:11;:26;13327:4;13307:26;;;;;;;;;;;;;;;:47;13342:10;;;;;;;;;;;13307:47;;;;;;;;;;;;;;;;:68;13303:168;;13442:17;13392:11;:26;13412:4;13392:26;;;;;;;;;;;;;;;:47;13427:10;;;;;;;;;;;13392:47;;;;;;;;;;;;;;;:67;;;;13303:168;13487:10;;;;;;;;;;;:61;;;13563:20;13598:1;13614:4;13641;13661:15;13487:200;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13483:247;;13712:7;;;13483:247;13740:12;13792:1:::0;13768:21:::1;:25;13765:113;;;13809:16;;;;;;;;;;;:21;;13838;13866:5;13809:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13796:80;;;;;13765:113;13157:742;;6896:1;6917:5:::0;6908:6;;:14;;;;;;;;;;;;;;;;;;13085:814;:::o;10236:161::-;10301:4;10318:12;10334:8;:13;10343:3;10334:13;;;;;;;;;;;;;;;;;;;;;;;;;10333:14;:31;;;;;10351:8;:13;10360:3;10351:13;;;;;;;;;;;;;;;;;;;;;;;;;10333:31;10318:46;;10382:7;10375:14;;;10236:161;;;;:::o;12546:531::-;12638:7;12658:11;12684:5;12680:84;;;12698:6;;12692:12;;12680:84;;;12716:6;12712:52;;;12731:7;;12725:13;;12712:52;;;12753:11;;12747:17;;12712:52;12680:84;12787:1;12780:3;:8;12776:28;;12798:6;12791:13;;;;;12776:28;12816:17;6329:5;12845:3;12836:6;:12;;;;:::i;:::-;:30;;;;:::i;:::-;12816:50;;12893:1;12881:9;:13;12877:157;;;12939:9;12913:7;:22;12929:4;12913:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;12991:4;12968:40;;12977:4;12968:40;;;12998:9;12968:40;;;;;;:::i;:::-;;;;;;;;12877:157;13060:9;13051:6;:18;;;;:::i;:::-;13044:25;;;;12546:531;;;;;;;:::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:619::-;8089:6;8097;8105;8154:2;8142:9;8133:7;8129:23;8125:32;8122:119;;;8160:79;;:::i;:::-;8122:119;8280:1;8305:53;8350:7;8341:6;8330:9;8326:22;8305:53;:::i;:::-;8295:63;;8251:117;8407:2;8433:53;8478:7;8469:6;8458:9;8454:22;8433:53;:::i;:::-;8423:63;;8378:118;8535:2;8561:53;8606:7;8597:6;8586:9;8582:22;8561:53;:::i;:::-;8551:63;;8506:118;8012:619;;;;;:::o;8637:182::-;8777:34;8773:1;8765:6;8761:14;8754:58;8637:182;:::o;8825:366::-;8967:3;8988:67;9052:2;9047:3;8988:67;:::i;:::-;8981:74;;9064:93;9153:3;9064:93;:::i;:::-;9182:2;9177:3;9173:12;9166:19;;8825:366;;;:::o;9197:419::-;9363:4;9401:2;9390:9;9386:18;9378:26;;9450:9;9444:4;9440:20;9436:1;9425:9;9421:17;9414:47;9478:131;9604:4;9478:131;:::i;:::-;9470:139;;9197:419;;;:::o;9622:166::-;9762:18;9758:1;9750:6;9746:14;9739:42;9622:166;:::o;9794:366::-;9936:3;9957:67;10021:2;10016:3;9957:67;:::i;:::-;9950:74;;10033:93;10122:3;10033:93;:::i;:::-;10151:2;10146:3;10142:12;10135:19;;9794:366;;;:::o;10166:419::-;10332:4;10370:2;10359:9;10355:18;10347:26;;10419:9;10413:4;10409:20;10405:1;10394:9;10390:17;10383:47;10447:131;10573:4;10447:131;:::i;:::-;10439:139;;10166:419;;;:::o;10591:180::-;10639:77;10636:1;10629:88;10736:4;10733:1;10726:15;10760:4;10757:1;10750:15;10777:194;10817:4;10837:20;10855:1;10837:20;:::i;:::-;10832:25;;10871:20;10889:1;10871:20;:::i;:::-;10866:25;;10915:1;10912;10908:9;10900:17;;10939:1;10933:4;10930:11;10927:37;;;10944:18;;:::i;:::-;10927:37;10777:194;;;;:::o;10977:159::-;11117:11;11113:1;11105:6;11101:14;11094:35;10977:159;:::o;11142:365::-;11284:3;11305:66;11369:1;11364:3;11305:66;:::i;:::-;11298:73;;11380:93;11469:3;11380:93;:::i;:::-;11498:2;11493:3;11489:12;11482:19;;11142:365;;;:::o;11513:419::-;11679:4;11717:2;11706:9;11702:18;11694:26;;11766:9;11760:4;11756:20;11752:1;11741:9;11737:17;11730:47;11794:131;11920:4;11794:131;:::i;:::-;11786:139;;11513:419;;;:::o;11938:320::-;12053:4;12091:2;12080:9;12076:18;12068:26;;12104:71;12172:1;12161:9;12157:17;12148:6;12104:71;:::i;:::-;12185:66;12247:2;12236:9;12232:18;12223:6;12185:66;:::i;:::-;11938:320;;;;;:::o;12264:173::-;12404:25;12400:1;12392:6;12388:14;12381:49;12264:173;:::o;12443:366::-;12585:3;12606:67;12670:2;12665:3;12606:67;:::i;:::-;12599:74;;12682:93;12771:3;12682:93;:::i;:::-;12800:2;12795:3;12791:12;12784:19;;12443:366;;;:::o;12815:419::-;12981:4;13019:2;13008:9;13004:18;12996:26;;13068:9;13062:4;13058:20;13054:1;13043:9;13039:17;13032:47;13096:131;13222:4;13096:131;:::i;:::-;13088:139;;12815:419;;;:::o;13240:191::-;13280:3;13299:20;13317:1;13299:20;:::i;:::-;13294:25;;13333:20;13351:1;13333:20;:::i;:::-;13328:25;;13376:1;13373;13369:9;13362:16;;13397:3;13394:1;13391:10;13388:36;;;13404:18;;:::i;:::-;13388:36;13240:191;;;;:::o;13437:410::-;13477:7;13500:20;13518:1;13500:20;:::i;:::-;13495:25;;13534:20;13552:1;13534:20;:::i;:::-;13529:25;;13589:1;13586;13582:9;13611:30;13629:11;13611:30;:::i;:::-;13600:41;;13790:1;13781:7;13777:15;13774:1;13771:22;13751:1;13744:9;13724:83;13701:139;;13820:18;;:::i;:::-;13701:139;13485:362;13437:410;;;;:::o;13853:442::-;14002:4;14040:2;14029:9;14025:18;14017:26;;14053:71;14121:1;14110:9;14106:17;14097:6;14053:71;:::i;:::-;14134:72;14202:2;14191:9;14187:18;14178:6;14134:72;:::i;:::-;14216;14284:2;14273:9;14269:18;14260:6;14216:72;:::i;:::-;13853:442;;;;;;:::o;14301:225::-;14441:34;14437:1;14429:6;14425:14;14418:58;14510:8;14505:2;14497:6;14493:15;14486:33;14301:225;:::o;14532:366::-;14674:3;14695:67;14759:2;14754:3;14695:67;:::i;:::-;14688:74;;14771:93;14860:3;14771:93;:::i;:::-;14889:2;14884:3;14880:12;14873:19;;14532:366;;;:::o;14904:419::-;15070:4;15108:2;15097:9;15093:18;15085:26;;15157:9;15151:4;15147:20;15143:1;15132:9;15128:17;15121:47;15185:131;15311:4;15185:131;:::i;:::-;15177:139;;14904:419;;;:::o;15329:169::-;15469:21;15465:1;15457:6;15453:14;15446:45;15329:169;:::o;15504:366::-;15646:3;15667:67;15731:2;15726:3;15667:67;:::i;:::-;15660:74;;15743:93;15832:3;15743:93;:::i;:::-;15861:2;15856:3;15852:12;15845:19;;15504:366;;;:::o;15876:419::-;16042:4;16080:2;16069:9;16065:18;16057:26;;16129:9;16123:4;16119:20;16115:1;16104:9;16100:17;16093:47;16157:131;16283:4;16157:131;:::i;:::-;16149:139;;15876:419;;;:::o;16301:222::-;16441:34;16437:1;16429:6;16425:14;16418:58;16510:5;16505:2;16497:6;16493:15;16486:30;16301:222;:::o;16529:366::-;16671:3;16692:67;16756:2;16751:3;16692:67;:::i;:::-;16685:74;;16768:93;16857:3;16768:93;:::i;:::-;16886:2;16881:3;16877:12;16870:19;;16529:366;;;:::o;16901:419::-;17067:4;17105:2;17094:9;17090:18;17082:26;;17154:9;17148:4;17144:20;17140:1;17129:9;17125:17;17118:47;17182:131;17308:4;17182:131;:::i;:::-;17174:139;;16901:419;;;:::o;17326:224::-;17466:34;17462:1;17454:6;17450:14;17443:58;17535:7;17530:2;17522:6;17518:15;17511:32;17326:224;:::o;17556:366::-;17698:3;17719:67;17783:2;17778:3;17719:67;:::i;:::-;17712:74;;17795:93;17884:3;17795:93;:::i;:::-;17913:2;17908:3;17904:12;17897:19;;17556:366;;;:::o;17928:419::-;18094:4;18132:2;18121:9;18117:18;18109:26;;18181:9;18175:4;18171:20;18167:1;18156:9;18152:17;18145:47;18209:131;18335:4;18209:131;:::i;:::-;18201:139;;17928:419;;;:::o;18353:228::-;18493:34;18489:1;18481:6;18477:14;18470:58;18562:11;18557:2;18549:6;18545:15;18538:36;18353:228;:::o;18587:366::-;18729:3;18750:67;18814:2;18809:3;18750:67;:::i;:::-;18743:74;;18826:93;18915:3;18826:93;:::i;:::-;18944:2;18939:3;18935:12;18928:19;;18587:366;;;:::o;18959:419::-;19125:4;19163:2;19152:9;19148:18;19140:26;;19212:9;19206:4;19202:20;19198:1;19187:9;19183:17;19176:47;19240:131;19366:4;19240:131;:::i;:::-;19232:139;;18959:419;;;:::o;19384:172::-;19524:24;19520:1;19512:6;19508:14;19501:48;19384:172;:::o;19562:366::-;19704:3;19725:67;19789:2;19784:3;19725:67;:::i;:::-;19718:74;;19801:93;19890:3;19801:93;:::i;:::-;19919:2;19914:3;19910:12;19903:19;;19562:366;;;:::o;19934:419::-;20100:4;20138:2;20127:9;20123:18;20115:26;;20187:9;20181:4;20177:20;20173:1;20162:9;20158:17;20151:47;20215:131;20341:4;20215:131;:::i;:::-;20207:139;;19934:419;;;:::o;20359:180::-;20407:77;20404:1;20397:88;20504:4;20501:1;20494:15;20528:4;20525:1;20518:15;20545:180;20593:77;20590:1;20583:88;20690:4;20687:1;20680:15;20714:4;20711:1;20704:15;20731:143;20788:5;20819:6;20813:13;20804:22;;20835:33;20862:5;20835:33;:::i;:::-;20731:143;;;;:::o;20880:351::-;20950:6;20999:2;20987:9;20978:7;20974:23;20970:32;20967:119;;;21005:79;;:::i;:::-;20967:119;21125:1;21150:64;21206:7;21197:6;21186:9;21182:22;21150:64;:::i;:::-;21140:74;;21096:128;20880:351;;;;:::o;21237:85::-;21282:7;21311:5;21300:16;;21237:85;;;:::o;21328:158::-;21386:9;21419:61;21437:42;21446:32;21472:5;21446:32;:::i;:::-;21437:42;:::i;:::-;21419:61;:::i;:::-;21406:74;;21328:158;;;:::o;21492:147::-;21587:45;21626:5;21587:45;:::i;:::-;21582:3;21575:58;21492:147;;:::o;21645:114::-;21712:6;21746:5;21740:12;21730:22;;21645:114;;;:::o;21765:184::-;21864:11;21898:6;21893:3;21886:19;21938:4;21933:3;21929:14;21914:29;;21765:184;;;;:::o;21955:132::-;22022:4;22045:3;22037:11;;22075:4;22070:3;22066:14;22058:22;;21955:132;;;:::o;22093:108::-;22170:24;22188:5;22170:24;:::i;:::-;22165:3;22158:37;22093:108;;:::o;22207:179::-;22276:10;22297:46;22339:3;22331:6;22297:46;:::i;:::-;22375:4;22370:3;22366:14;22352:28;;22207:179;;;;:::o;22392:113::-;22462:4;22494;22489:3;22485:14;22477:22;;22392:113;;;:::o;22541:732::-;22660:3;22689:54;22737:5;22689:54;:::i;:::-;22759:86;22838:6;22833:3;22759:86;:::i;:::-;22752:93;;22869:56;22919:5;22869:56;:::i;:::-;22948:7;22979:1;22964:284;22989:6;22986:1;22983:13;22964:284;;;23065:6;23059:13;23092:63;23151:3;23136:13;23092:63;:::i;:::-;23085:70;;23178:60;23231:6;23178:60;:::i;:::-;23168:70;;23024:224;23011:1;23008;23004:9;22999:14;;22964:284;;;22968:14;23264:3;23257:10;;22665:608;;;22541:732;;;;:::o;23279:831::-;23542:4;23580:3;23569:9;23565:19;23557:27;;23594:71;23662:1;23651:9;23647:17;23638:6;23594:71;:::i;:::-;23675:80;23751:2;23740:9;23736:18;23727:6;23675:80;:::i;:::-;23802:9;23796:4;23792:20;23787:2;23776:9;23772:18;23765:48;23830:108;23933:4;23924:6;23830:108;:::i;:::-;23822:116;;23948:72;24016:2;24005:9;24001:18;23992:6;23948:72;:::i;:::-;24030:73;24098:3;24087:9;24083:19;24074:6;24030:73;:::i;:::-;23279:831;;;;;;;;:::o;24116:147::-;24217:11;24254:3;24239:18;;24116:147;;;;:::o;24269:114::-;;:::o;24389:398::-;24548:3;24569:83;24650:1;24645:3;24569:83;:::i;:::-;24562:90;;24661:93;24750:3;24661:93;:::i;:::-;24779:1;24774:3;24770:11;24763:18;;24389:398;;;:::o;24793:379::-;24977:3;24999:147;25142:3;24999:147;:::i;:::-;24992:154;;25163:3;25156:10;;24793:379;;;:::o;25178:180::-;25226:77;25223:1;25216:88;25323:4;25320:1;25313:15;25347:4;25344:1;25337:15;25364:185;25404:1;25421:20;25439:1;25421:20;:::i;:::-;25416:25;;25455:20;25473:1;25455:20;:::i;:::-;25450:25;;25494:1;25484:35;;25499:18;;:::i;:::-;25484:35;25541:1;25538;25534:9;25529:14;;25364:185;;;;:::o

Swarm Source

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