ETH Price: $2,621.82 (-2.76%)

Token

God of Many Faces (FACES)
 

Overview

Max Total Supply

1,000,000,000 FACES

Holders

174

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
9,700,000 FACES

Value
$0.00
0x685edeb8f025cff4077b9160944bf92098c567b4
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:
GMF

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-09-05
*/

// https://godofmanyfaces.com

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.7;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract GMF is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "God of Many Faces";
    string private constant _symbol = "FACES";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1000000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 8;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    address payable private _developmentAddress = payable(0xe757A44CF462c5a688dC89Ed4397C2823611a4fF);
    address payable private _marketingAddress = payable(0xe757A44CF462c5a688dC89Ed4397C2823611a4fF);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 10000000 * 10**9;
    uint256 public _maxWalletSize = 10000000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

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

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

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

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052670de0b6b3a76400006000196200001c91906200084f565b6000196200002b9190620007d6565b600655600060085560056009556000600a556008600b55600a54600c55600b54600d55600c54600e55600d54600f5573e757a44cf462c5a688dc89ed4397c2823611a4ff601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e757a44cf462c5a688dc89ed4397c2823611a4ff601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601360146101000a81548160ff0219169083151502179055506000601360156101000a81548160ff0219169083151502179055506001601360166101000a81548160ff021916908315150217905550662386f26fc10000601455662386f26fc100006015556509184e72a0006016553480156200018257600080fd5b50600062000195620006f060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200024a620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032957600080fd5b505afa1580156200033e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000364919062000738565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c757600080fd5b505afa158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000402919062000738565b6040518363ffffffff1660e01b8152600401620004219291906200078c565b602060405180830381600087803b1580156200043c57600080fd5b505af115801562000451573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000477919062000738565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cd620006f860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200067a620006f060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e19190620007b9565b60405180910390a35062000904565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200073281620008ea565b92915050565b600060208284031215620007515762000750620008e5565b5b6000620007618482850162000721565b91505092915050565b620007758162000811565b82525050565b620007868162000845565b82525050565b6000604082019050620007a360008301856200076a565b620007b260208301846200076a565b9392505050565b6000602082019050620007d060008301846200077b565b92915050565b6000620007e38262000845565b9150620007f08362000845565b92508282101562000806576200080562000887565b5b828203905092915050565b60006200081e8262000825565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200085c8262000845565b9150620008698362000845565b9250826200087c576200087b620008b6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600080fd5b620008f58162000811565b81146200090157600080fd5b50565b61377080620009146000396000f3fe6080604052600436106101855760003560e01c80637d1db4a5116100d1578063a2a957bb1161008a578063c492f04611610064578063c492f04614610545578063dd62ed3e1461056e578063ea1644d5146105ab578063f2fde38b146105d45761018c565b8063a2a957bb146104c8578063a9059cbb146104f1578063c3c8cd801461052e5761018c565b80637d1db4a5146103ca5780638da5cb5b146103f55780638f70ccf7146104205780638f9a55c01461044957806395d89b411461047457806398a5c3151461049f5761018c565b8063313ce5671161013e5780636fc3eaec116101185780636fc3eaec1461033657806370a082311461034d578063715018a61461038a57806374010ece146103a15761018c565b8063313ce567146102b757806349bd5a5e146102e25780636d8aa8f81461030d5761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fd565b6040516101b39190612d81565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de91906128f0565b61063a565b6040516101f09190612d4b565b60405180910390f35b34801561020557600080fd5b5061020e610658565b60405161021b9190612d66565b60405180910390f35b34801561023057600080fd5b5061023961067e565b6040516102469190612f43565b60405180910390f35b34801561025b57600080fd5b506102766004803603810190610271919061289d565b61068e565b6040516102839190612d4b565b60405180910390f35b34801561029857600080fd5b506102a1610767565b6040516102ae9190612f43565b60405180910390f35b3480156102c357600080fd5b506102cc61076d565b6040516102d99190612fb8565b60405180910390f35b3480156102ee57600080fd5b506102f7610776565b6040516103049190612d30565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612990565b61079c565b005b34801561034257600080fd5b5061034b61084e565b005b34801561035957600080fd5b50610374600480360381019061036f9190612803565b61091f565b6040516103819190612f43565b60405180910390f35b34801561039657600080fd5b5061039f610970565b005b3480156103ad57600080fd5b506103c860048036038101906103c391906129bd565b610ac3565b005b3480156103d657600080fd5b506103df610b62565b6040516103ec9190612f43565b60405180910390f35b34801561040157600080fd5b5061040a610b68565b6040516104179190612d30565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190612990565b610b91565b005b34801561045557600080fd5b5061045e610c43565b60405161046b9190612f43565b60405180910390f35b34801561048057600080fd5b50610489610c49565b6040516104969190612d81565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c191906129bd565b610c86565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906129ea565b610d25565b005b3480156104fd57600080fd5b50610518600480360381019061051391906128f0565b610ddc565b6040516105259190612d4b565b60405180910390f35b34801561053a57600080fd5b50610543610dfa565b005b34801561055157600080fd5b5061056c60048036038101906105679190612930565b610ed3565b005b34801561057a57600080fd5b506105956004803603810190610590919061285d565b61100d565b6040516105a29190612f43565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd91906129bd565b611094565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190612803565b611133565b005b60606040518060400160405280601181526020017f476f64206f66204d616e79204661636573000000000000000000000000000000815250905090565b600061064e6106476112f5565b84846112fd565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061069b8484846114c8565b61075c846106a76112f5565b6107578560405180606001604052806028815260200161371360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061070d6112f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c6c9092919063ffffffff16565b6112fd565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a46112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082890612ea3565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661088f6112f5565b73ffffffffffffffffffffffffffffffffffffffff1614806109055750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ed6112f5565b73ffffffffffffffffffffffffffffffffffffffff16145b61090e57600080fd5b600047905061091c81611cd0565b50565b6000610969600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3c565b9050919050565b6109786112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90612ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610acb6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f90612ea3565b60405180910390fd5b8060148190555050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b996112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d90612ea3565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600581526020017f4641434553000000000000000000000000000000000000000000000000000000815250905090565b610c8e6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1290612ea3565b60405180910390fd5b8060168190555050565b610d2d6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db190612ea3565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610df0610de96112f5565b84846114c8565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e3b6112f5565b73ffffffffffffffffffffffffffffffffffffffff161480610eb15750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e996112f5565b73ffffffffffffffffffffffffffffffffffffffff16145b610eba57600080fd5b6000610ec53061091f565b9050610ed081611daa565b50565b610edb6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612ea3565b60405180910390fd5b60005b83839050811015611007578160056000868685818110610f8e57610f8d6132b4565b5b9050602002016020810190610fa39190612803565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fff9061320d565b915050610f6b565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61109c6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090612ea3565b60405180910390fd5b8060158190555050565b61113b6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90612ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90612e23565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136490612f23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490612e43565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114bb9190612f43565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90612ee3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f90612da3565b60405180910390fd5b600081116115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e290612ec3565b60405180910390fd5b6115f3610b68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116615750611631610b68565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561196b57601360149054906101000a900460ff166116f057611682610b68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690612dc3565b60405180910390fd5b5b601454811115611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90612e03565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146117e257601554816117978461091f565b6117a19190613028565b106117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890612f03565b60405180910390fd5b5b60006117ed3061091f565b90506000601654821015905060145482106118085760145491505b8080156118225750601360159054906101000a900460ff16155b801561187c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118945750601360169054906101000a900460ff165b80156118ea5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119405750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119685761194e82611daa565b600047905060008111156119665761196547611cd0565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a125750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ac55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ac45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ad35760009050611c5a565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b7e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b9657600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c415750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c5957600a54600c81905550600b54600d819055505b5b611c6684848484612032565b50505050565b6000838311158290611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab9190612d81565b60405180910390fd5b5060008385611cc39190613109565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d38573d6000803e3d6000fd5b5050565b6000600654821115611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90612de3565b60405180910390fd5b6000611d8d61205f565b9050611da2818461208a90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611de257611de16132e3565b5b604051908082528060200260200182016040528015611e105781602001602082028036833780820191505090505b5090503081600081518110611e2857611e276132b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611eca57600080fd5b505afa158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f029190612830565b81600181518110611f1657611f156132b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7d30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112fd565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fe1959493929190612f5e565b600060405180830381600087803b158015611ffb57600080fd5b505af115801561200f573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b806120405761203f6120d4565b5b61204b848484612117565b80612059576120586122e2565b5b50505050565b600080600061206c6122f6565b91509150612083818361208a90919063ffffffff16565b9250505090565b60006120cc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612355565b905092915050565b6000600c541480156120e857506000600d54145b156120f257612115565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612129876123b8565b95509550955095509550955061218786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061221c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612268816124c8565b6122728483612585565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122cf9190612f43565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061232a670de0b6b3a764000060065461208a90919063ffffffff16565b82101561234857600654670de0b6b3a7640000935093505050612351565b81819350935050505b9091565b6000808311829061239c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123939190612d81565b60405180910390fd5b50600083856123ab919061307e565b9050809150509392505050565b60008060008060008060008060006123d58a600c54600d546125bf565b92509250925060006123e561205f565b905060008060006123f88e878787612655565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061246283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c6c565b905092915050565b60008082846124799190613028565b9050838110156124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590612e63565b60405180910390fd5b8091505092915050565b60006124d261205f565b905060006124e982846126de90919063ffffffff16565b905061253d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61259a8260065461242090919063ffffffff16565b6006819055506125b58160075461246a90919063ffffffff16565b6007819055505050565b6000806000806125eb60646125dd888a6126de90919063ffffffff16565b61208a90919063ffffffff16565b905060006126156064612607888b6126de90919063ffffffff16565b61208a90919063ffffffff16565b9050600061263e82612630858c61242090919063ffffffff16565b61242090919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061266e85896126de90919063ffffffff16565b9050600061268586896126de90919063ffffffff16565b9050600061269c87896126de90919063ffffffff16565b905060006126c5826126b7858761242090919063ffffffff16565b61242090919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156126f15760009050612753565b600082846126ff91906130af565b905082848261270e919061307e565b1461274e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274590612e83565b60405180910390fd5b809150505b92915050565b600081359050612768816136cd565b92915050565b60008151905061277d816136cd565b92915050565b60008083601f84011261279957612798613317565b5b8235905067ffffffffffffffff8111156127b6576127b5613312565b5b6020830191508360208202830111156127d2576127d161331c565b5b9250929050565b6000813590506127e8816136e4565b92915050565b6000813590506127fd816136fb565b92915050565b60006020828403121561281957612818613326565b5b600061282784828501612759565b91505092915050565b60006020828403121561284657612845613326565b5b60006128548482850161276e565b91505092915050565b6000806040838503121561287457612873613326565b5b600061288285828601612759565b925050602061289385828601612759565b9150509250929050565b6000806000606084860312156128b6576128b5613326565b5b60006128c486828701612759565b93505060206128d586828701612759565b92505060406128e6868287016127ee565b9150509250925092565b6000806040838503121561290757612906613326565b5b600061291585828601612759565b9250506020612926858286016127ee565b9150509250929050565b60008060006040848603121561294957612948613326565b5b600084013567ffffffffffffffff81111561296757612966613321565b5b61297386828701612783565b93509350506020612986868287016127d9565b9150509250925092565b6000602082840312156129a6576129a5613326565b5b60006129b4848285016127d9565b91505092915050565b6000602082840312156129d3576129d2613326565b5b60006129e1848285016127ee565b91505092915050565b60008060008060808587031215612a0457612a03613326565b5b6000612a12878288016127ee565b9450506020612a23878288016127ee565b9350506040612a34878288016127ee565b9250506060612a45878288016127ee565b91505092959194509250565b6000612a5d8383612a69565b60208301905092915050565b612a728161313d565b82525050565b612a818161313d565b82525050565b6000612a9282612fe3565b612a9c8185613006565b9350612aa783612fd3565b8060005b83811015612ad8578151612abf8882612a51565b9750612aca83612ff9565b925050600181019050612aab565b5085935050505092915050565b612aee8161314f565b82525050565b612afd81613192565b82525050565b612b0c816131a4565b82525050565b6000612b1d82612fee565b612b278185613017565b9350612b378185602086016131da565b612b408161332b565b840191505092915050565b6000612b58602383613017565b9150612b638261333c565b604082019050919050565b6000612b7b603f83613017565b9150612b868261338b565b604082019050919050565b6000612b9e602a83613017565b9150612ba9826133da565b604082019050919050565b6000612bc1601c83613017565b9150612bcc82613429565b602082019050919050565b6000612be4602683613017565b9150612bef82613452565b604082019050919050565b6000612c07602283613017565b9150612c12826134a1565b604082019050919050565b6000612c2a601b83613017565b9150612c35826134f0565b602082019050919050565b6000612c4d602183613017565b9150612c5882613519565b604082019050919050565b6000612c70602083613017565b9150612c7b82613568565b602082019050919050565b6000612c93602983613017565b9150612c9e82613591565b604082019050919050565b6000612cb6602583613017565b9150612cc1826135e0565b604082019050919050565b6000612cd9602383613017565b9150612ce48261362f565b604082019050919050565b6000612cfc602483613017565b9150612d078261367e565b604082019050919050565b612d1b8161317b565b82525050565b612d2a81613185565b82525050565b6000602082019050612d456000830184612a78565b92915050565b6000602082019050612d606000830184612ae5565b92915050565b6000602082019050612d7b6000830184612af4565b92915050565b60006020820190508181036000830152612d9b8184612b12565b905092915050565b60006020820190508181036000830152612dbc81612b4b565b9050919050565b60006020820190508181036000830152612ddc81612b6e565b9050919050565b60006020820190508181036000830152612dfc81612b91565b9050919050565b60006020820190508181036000830152612e1c81612bb4565b9050919050565b60006020820190508181036000830152612e3c81612bd7565b9050919050565b60006020820190508181036000830152612e5c81612bfa565b9050919050565b60006020820190508181036000830152612e7c81612c1d565b9050919050565b60006020820190508181036000830152612e9c81612c40565b9050919050565b60006020820190508181036000830152612ebc81612c63565b9050919050565b60006020820190508181036000830152612edc81612c86565b9050919050565b60006020820190508181036000830152612efc81612ca9565b9050919050565b60006020820190508181036000830152612f1c81612ccc565b9050919050565b60006020820190508181036000830152612f3c81612cef565b9050919050565b6000602082019050612f586000830184612d12565b92915050565b600060a082019050612f736000830188612d12565b612f806020830187612b03565b8181036040830152612f928186612a87565b9050612fa16060830185612a78565b612fae6080830184612d12565b9695505050505050565b6000602082019050612fcd6000830184612d21565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006130338261317b565b915061303e8361317b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561307357613072613256565b5b828201905092915050565b60006130898261317b565b91506130948361317b565b9250826130a4576130a3613285565b5b828204905092915050565b60006130ba8261317b565b91506130c58361317b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130fe576130fd613256565b5b828202905092915050565b60006131148261317b565b915061311f8361317b565b92508282101561313257613131613256565b5b828203905092915050565b60006131488261315b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061319d826131b6565b9050919050565b60006131af8261317b565b9050919050565b60006131c1826131c8565b9050919050565b60006131d38261315b565b9050919050565b60005b838110156131f85780820151818401526020810190506131dd565b83811115613207576000848401525b50505050565b60006132188261317b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561324b5761324a613256565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6136d68161313d565b81146136e157600080fd5b50565b6136ed8161314f565b81146136f857600080fd5b50565b6137048161317b565b811461370f57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204409b559ce564fa441a2a49d313dede5dc08d51958fe698e8f4e9159c513bb8664736f6c63430008070033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80637d1db4a5116100d1578063a2a957bb1161008a578063c492f04611610064578063c492f04614610545578063dd62ed3e1461056e578063ea1644d5146105ab578063f2fde38b146105d45761018c565b8063a2a957bb146104c8578063a9059cbb146104f1578063c3c8cd801461052e5761018c565b80637d1db4a5146103ca5780638da5cb5b146103f55780638f70ccf7146104205780638f9a55c01461044957806395d89b411461047457806398a5c3151461049f5761018c565b8063313ce5671161013e5780636fc3eaec116101185780636fc3eaec1461033657806370a082311461034d578063715018a61461038a57806374010ece146103a15761018c565b8063313ce567146102b757806349bd5a5e146102e25780636d8aa8f81461030d5761018c565b806306fdde0314610191578063095ea7b3146101bc5780631694505e146101f957806318160ddd1461022457806323b872dd1461024f5780632fd689e31461028c5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a66105fd565b6040516101b39190612d81565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de91906128f0565b61063a565b6040516101f09190612d4b565b60405180910390f35b34801561020557600080fd5b5061020e610658565b60405161021b9190612d66565b60405180910390f35b34801561023057600080fd5b5061023961067e565b6040516102469190612f43565b60405180910390f35b34801561025b57600080fd5b506102766004803603810190610271919061289d565b61068e565b6040516102839190612d4b565b60405180910390f35b34801561029857600080fd5b506102a1610767565b6040516102ae9190612f43565b60405180910390f35b3480156102c357600080fd5b506102cc61076d565b6040516102d99190612fb8565b60405180910390f35b3480156102ee57600080fd5b506102f7610776565b6040516103049190612d30565b60405180910390f35b34801561031957600080fd5b50610334600480360381019061032f9190612990565b61079c565b005b34801561034257600080fd5b5061034b61084e565b005b34801561035957600080fd5b50610374600480360381019061036f9190612803565b61091f565b6040516103819190612f43565b60405180910390f35b34801561039657600080fd5b5061039f610970565b005b3480156103ad57600080fd5b506103c860048036038101906103c391906129bd565b610ac3565b005b3480156103d657600080fd5b506103df610b62565b6040516103ec9190612f43565b60405180910390f35b34801561040157600080fd5b5061040a610b68565b6040516104179190612d30565b60405180910390f35b34801561042c57600080fd5b5061044760048036038101906104429190612990565b610b91565b005b34801561045557600080fd5b5061045e610c43565b60405161046b9190612f43565b60405180910390f35b34801561048057600080fd5b50610489610c49565b6040516104969190612d81565b60405180910390f35b3480156104ab57600080fd5b506104c660048036038101906104c191906129bd565b610c86565b005b3480156104d457600080fd5b506104ef60048036038101906104ea91906129ea565b610d25565b005b3480156104fd57600080fd5b50610518600480360381019061051391906128f0565b610ddc565b6040516105259190612d4b565b60405180910390f35b34801561053a57600080fd5b50610543610dfa565b005b34801561055157600080fd5b5061056c60048036038101906105679190612930565b610ed3565b005b34801561057a57600080fd5b506105956004803603810190610590919061285d565b61100d565b6040516105a29190612f43565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd91906129bd565b611094565b005b3480156105e057600080fd5b506105fb60048036038101906105f69190612803565b611133565b005b60606040518060400160405280601181526020017f476f64206f66204d616e79204661636573000000000000000000000000000000815250905090565b600061064e6106476112f5565b84846112fd565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b600061069b8484846114c8565b61075c846106a76112f5565b6107578560405180606001604052806028815260200161371360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061070d6112f5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c6c9092919063ffffffff16565b6112fd565b600190509392505050565b60165481565b60006009905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6107a46112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610831576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082890612ea3565b60405180910390fd5b80601360166101000a81548160ff02191690831515021790555050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661088f6112f5565b73ffffffffffffffffffffffffffffffffffffffff1614806109055750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ed6112f5565b73ffffffffffffffffffffffffffffffffffffffff16145b61090e57600080fd5b600047905061091c81611cd0565b50565b6000610969600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3c565b9050919050565b6109786112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fc90612ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610acb6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4f90612ea3565b60405180910390fd5b8060148190555050565b60145481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b996112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1d90612ea3565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b60155481565b60606040518060400160405280600581526020017f4641434553000000000000000000000000000000000000000000000000000000815250905090565b610c8e6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1290612ea3565b60405180910390fd5b8060168190555050565b610d2d6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db190612ea3565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b6000610df0610de96112f5565b84846114c8565b6001905092915050565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e3b6112f5565b73ffffffffffffffffffffffffffffffffffffffff161480610eb15750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e996112f5565b73ffffffffffffffffffffffffffffffffffffffff16145b610eba57600080fd5b6000610ec53061091f565b9050610ed081611daa565b50565b610edb6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5f90612ea3565b60405180910390fd5b60005b83839050811015611007578160056000868685818110610f8e57610f8d6132b4565b5b9050602002016020810190610fa39190612803565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fff9061320d565b915050610f6b565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61109c6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611129576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112090612ea3565b60405180910390fd5b8060158190555050565b61113b6112f5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bf90612ea3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90612e23565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561136d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136490612f23565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d490612e43565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114bb9190612f43565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f90612ee3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f90612da3565b60405180910390fd5b600081116115eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e290612ec3565b60405180910390fd5b6115f3610b68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116615750611631610b68565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561196b57601360149054906101000a900460ff166116f057611682610b68565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690612dc3565b60405180910390fd5b5b601454811115611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90612e03565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146117e257601554816117978461091f565b6117a19190613028565b106117e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d890612f03565b60405180910390fd5b5b60006117ed3061091f565b90506000601654821015905060145482106118085760145491505b8080156118225750601360159054906101000a900460ff16155b801561187c5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156118945750601360169054906101000a900460ff165b80156118ea5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156119405750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119685761194e82611daa565b600047905060008111156119665761196547611cd0565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611a125750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ac55750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ac45750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ad35760009050611c5a565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b7e5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b9657600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611c415750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c5957600a54600c81905550600b54600d819055505b5b611c6684848484612032565b50505050565b6000838311158290611cb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cab9190612d81565b60405180910390fd5b5060008385611cc39190613109565b9050809150509392505050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d38573d6000803e3d6000fd5b5050565b6000600654821115611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a90612de3565b60405180910390fd5b6000611d8d61205f565b9050611da2818461208a90919063ffffffff16565b915050919050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611de257611de16132e3565b5b604051908082528060200260200182016040528015611e105781602001602082028036833780820191505090505b5090503081600081518110611e2857611e276132b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611eca57600080fd5b505afa158015611ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f029190612830565b81600181518110611f1657611f156132b4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611f7d30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846112fd565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611fe1959493929190612f5e565b600060405180830381600087803b158015611ffb57600080fd5b505af115801561200f573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b806120405761203f6120d4565b5b61204b848484612117565b80612059576120586122e2565b5b50505050565b600080600061206c6122f6565b91509150612083818361208a90919063ffffffff16565b9250505090565b60006120cc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612355565b905092915050565b6000600c541480156120e857506000600d54145b156120f257612115565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612129876123b8565b95509550955095509550955061218786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461242090919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061221c85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612268816124c8565b6122728483612585565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516122cf9190612f43565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061232a670de0b6b3a764000060065461208a90919063ffffffff16565b82101561234857600654670de0b6b3a7640000935093505050612351565b81819350935050505b9091565b6000808311829061239c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123939190612d81565b60405180910390fd5b50600083856123ab919061307e565b9050809150509392505050565b60008060008060008060008060006123d58a600c54600d546125bf565b92509250925060006123e561205f565b905060008060006123f88e878787612655565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061246283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c6c565b905092915050565b60008082846124799190613028565b9050838110156124be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b590612e63565b60405180910390fd5b8091505092915050565b60006124d261205f565b905060006124e982846126de90919063ffffffff16565b905061253d81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61259a8260065461242090919063ffffffff16565b6006819055506125b58160075461246a90919063ffffffff16565b6007819055505050565b6000806000806125eb60646125dd888a6126de90919063ffffffff16565b61208a90919063ffffffff16565b905060006126156064612607888b6126de90919063ffffffff16565b61208a90919063ffffffff16565b9050600061263e82612630858c61242090919063ffffffff16565b61242090919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061266e85896126de90919063ffffffff16565b9050600061268586896126de90919063ffffffff16565b9050600061269c87896126de90919063ffffffff16565b905060006126c5826126b7858761242090919063ffffffff16565b61242090919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808314156126f15760009050612753565b600082846126ff91906130af565b905082848261270e919061307e565b1461274e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274590612e83565b60405180910390fd5b809150505b92915050565b600081359050612768816136cd565b92915050565b60008151905061277d816136cd565b92915050565b60008083601f84011261279957612798613317565b5b8235905067ffffffffffffffff8111156127b6576127b5613312565b5b6020830191508360208202830111156127d2576127d161331c565b5b9250929050565b6000813590506127e8816136e4565b92915050565b6000813590506127fd816136fb565b92915050565b60006020828403121561281957612818613326565b5b600061282784828501612759565b91505092915050565b60006020828403121561284657612845613326565b5b60006128548482850161276e565b91505092915050565b6000806040838503121561287457612873613326565b5b600061288285828601612759565b925050602061289385828601612759565b9150509250929050565b6000806000606084860312156128b6576128b5613326565b5b60006128c486828701612759565b93505060206128d586828701612759565b92505060406128e6868287016127ee565b9150509250925092565b6000806040838503121561290757612906613326565b5b600061291585828601612759565b9250506020612926858286016127ee565b9150509250929050565b60008060006040848603121561294957612948613326565b5b600084013567ffffffffffffffff81111561296757612966613321565b5b61297386828701612783565b93509350506020612986868287016127d9565b9150509250925092565b6000602082840312156129a6576129a5613326565b5b60006129b4848285016127d9565b91505092915050565b6000602082840312156129d3576129d2613326565b5b60006129e1848285016127ee565b91505092915050565b60008060008060808587031215612a0457612a03613326565b5b6000612a12878288016127ee565b9450506020612a23878288016127ee565b9350506040612a34878288016127ee565b9250506060612a45878288016127ee565b91505092959194509250565b6000612a5d8383612a69565b60208301905092915050565b612a728161313d565b82525050565b612a818161313d565b82525050565b6000612a9282612fe3565b612a9c8185613006565b9350612aa783612fd3565b8060005b83811015612ad8578151612abf8882612a51565b9750612aca83612ff9565b925050600181019050612aab565b5085935050505092915050565b612aee8161314f565b82525050565b612afd81613192565b82525050565b612b0c816131a4565b82525050565b6000612b1d82612fee565b612b278185613017565b9350612b378185602086016131da565b612b408161332b565b840191505092915050565b6000612b58602383613017565b9150612b638261333c565b604082019050919050565b6000612b7b603f83613017565b9150612b868261338b565b604082019050919050565b6000612b9e602a83613017565b9150612ba9826133da565b604082019050919050565b6000612bc1601c83613017565b9150612bcc82613429565b602082019050919050565b6000612be4602683613017565b9150612bef82613452565b604082019050919050565b6000612c07602283613017565b9150612c12826134a1565b604082019050919050565b6000612c2a601b83613017565b9150612c35826134f0565b602082019050919050565b6000612c4d602183613017565b9150612c5882613519565b604082019050919050565b6000612c70602083613017565b9150612c7b82613568565b602082019050919050565b6000612c93602983613017565b9150612c9e82613591565b604082019050919050565b6000612cb6602583613017565b9150612cc1826135e0565b604082019050919050565b6000612cd9602383613017565b9150612ce48261362f565b604082019050919050565b6000612cfc602483613017565b9150612d078261367e565b604082019050919050565b612d1b8161317b565b82525050565b612d2a81613185565b82525050565b6000602082019050612d456000830184612a78565b92915050565b6000602082019050612d606000830184612ae5565b92915050565b6000602082019050612d7b6000830184612af4565b92915050565b60006020820190508181036000830152612d9b8184612b12565b905092915050565b60006020820190508181036000830152612dbc81612b4b565b9050919050565b60006020820190508181036000830152612ddc81612b6e565b9050919050565b60006020820190508181036000830152612dfc81612b91565b9050919050565b60006020820190508181036000830152612e1c81612bb4565b9050919050565b60006020820190508181036000830152612e3c81612bd7565b9050919050565b60006020820190508181036000830152612e5c81612bfa565b9050919050565b60006020820190508181036000830152612e7c81612c1d565b9050919050565b60006020820190508181036000830152612e9c81612c40565b9050919050565b60006020820190508181036000830152612ebc81612c63565b9050919050565b60006020820190508181036000830152612edc81612c86565b9050919050565b60006020820190508181036000830152612efc81612ca9565b9050919050565b60006020820190508181036000830152612f1c81612ccc565b9050919050565b60006020820190508181036000830152612f3c81612cef565b9050919050565b6000602082019050612f586000830184612d12565b92915050565b600060a082019050612f736000830188612d12565b612f806020830187612b03565b8181036040830152612f928186612a87565b9050612fa16060830185612a78565b612fae6080830184612d12565b9695505050505050565b6000602082019050612fcd6000830184612d21565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b60006130338261317b565b915061303e8361317b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561307357613072613256565b5b828201905092915050565b60006130898261317b565b91506130948361317b565b9250826130a4576130a3613285565b5b828204905092915050565b60006130ba8261317b565b91506130c58361317b565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156130fe576130fd613256565b5b828202905092915050565b60006131148261317b565b915061311f8361317b565b92508282101561313257613131613256565b5b828203905092915050565b60006131488261315b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061319d826131b6565b9050919050565b60006131af8261317b565b9050919050565b60006131c1826131c8565b9050919050565b60006131d38261315b565b9050919050565b60005b838110156131f85780820151818401526020810190506131dd565b83811115613207576000848401525b50505050565b60006132188261317b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561324b5761324a613256565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6136d68161313d565b81146136e157600080fd5b50565b6136ed8161314f565b81146136f857600080fd5b50565b6137048161317b565b811461370f57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204409b559ce564fa441a2a49d313dede5dc08d51958fe698e8f4e9159c513bb8664736f6c63430008070033

Deployed Bytecode Sourcemap

4103:13051:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7444:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5361:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6796:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7645:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5667:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6705:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5409:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16536:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12361:235;;;;;;;;;;;;;:::i;:::-;;6899:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1590:148;;;;;;;;;;;;;:::i;:::-;;16676:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5559:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1376:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12008:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5612:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6610:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16345:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16002:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7045:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12117:236;;;;;;;;;;;;;:::i;:::-;;16915:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7252:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16792:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1746:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6519:83;6556:13;6589:5;;;;;;;;;;;;;;;;;6582:12;;6519:83;:::o;7444:193::-;7546:4;7568:39;7577:12;:10;:12::i;:::-;7591:7;7600:6;7568:8;:39::i;:::-;7625:4;7618:11;;7444:193;;;;:::o;5361:41::-;;;;;;;;;;;;;:::o;6796:95::-;6849:7;4655:18;6869:14;;6796:95;:::o;7645:446::-;7777:4;7794:36;7804:6;7812:9;7823:6;7794:9;:36::i;:::-;7841:220;7864:6;7885:12;:10;:12::i;:::-;7912:138;7968:6;7912:138;;;;;;;;;;;;;;;;;:11;:19;7924:6;7912:19;;;;;;;;;;;;;;;:33;7932:12;:10;:12::i;:::-;7912:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7841:8;:220::i;:::-;8079:4;8072:11;;7645:446;;;;;:::o;5667:50::-;;;;:::o;6705:83::-;6746:5;4329:1;6764:16;;6705:83;:::o;5409:28::-;;;;;;;;;;;;;:::o;16536:101::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16617:12:::1;16603:11;;:26;;;;;;;;;;;;;;;;;;16536:101:::0;:::o;12361:235::-;12427:19;;;;;;;;;;;12411:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12466:17;;;;;;;;;;;12450:33;;:12;:10;:12::i;:::-;:33;;;12411:72;12403:81;;;;;;12495:26;12524:21;12495:50;;12556:32;12569:18;12556:12;:32::i;:::-;12392:204;12361:235::o;6899:138::-;6965:7;6992:37;7012:7;:16;7020:7;7012:16;;;;;;;;;;;;;;;;6992:19;:37::i;:::-;6985:44;;6899:138;;;:::o;1590:148::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1697:1:::1;1660:40;;1681:6;::::0;::::1;;;;;;;;1660:40;;;;;;;;;;;;1728:1;1711:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1590:148::o:0;16676:108::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16765:11:::1;16750:12;:26;;;;16676:108:::0;:::o;5559:46::-;;;;:::o;1376:79::-;1414:7;1441:6;;;;;;;;;;;1434:13;;1376:79;:::o;12008:101::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12089:12:::1;12075:11;;:26;;;;;;;;;;;;;;;;;;12008:101:::0;:::o;5612:48::-;;;;:::o;6610:87::-;6649:13;6682:7;;;;;;;;;;;;;;;;;6675:14;;6610:87;:::o;16345:139::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16458:18:::1;16436:19;:40;;;;16345:139:::0;:::o;16002:291::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16153:13:::1;16136:14;:30;;;;16195:14;16177:15;:32;;;;16235:11;16220:12;:26;;;;16273:12;16257:13;:28;;;;16002:291:::0;;;;:::o;7045:199::-;7150:4;7172:42;7182:12;:10;:12::i;:::-;7196:9;7207:6;7172:9;:42::i;:::-;7232:4;7225:11;;7045:199;;;;:::o;12117:236::-;12183:19;;;;;;;;;;;12167:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12222:17;;;;;;;;;;;12206:33;;:12;:10;:12::i;:::-;:33;;;12167:72;12159:81;;;;;;12251:23;12277:24;12295:4;12277:9;:24::i;:::-;12251:50;;12312:33;12329:15;12312:16;:33::i;:::-;12148:205;12117:236::o;16915:234::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17032:9:::1;17028:114;17051:8;;:15;;17047:1;:19;17028:114;;;17122:8;17088:18;:31;17107:8;;17116:1;17107:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17088:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17068:3;;;;;:::i;:::-;;;;17028:114;;;;16915:234:::0;;;:::o;7252:184::-;7369:7;7401:11;:18;7413:5;7401:18;;;;;;;;;;;;;;;:27;7420:7;7401:27;;;;;;;;;;;;;;;;7394:34;;7252:184;;;;:::o;16792:115::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16886:13:::1;16869:14;:30;;;;16792:115:::0;:::o;1746:244::-;1513:12;:10;:12::i;:::-;1503:22;;:6;;;;;;;;;;:22;;;1495:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1855:1:::1;1835:22;;:8;:22;;;;1827:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1945:8;1916:38;;1937:6;::::0;::::1;;;;;;;;1916:38;;;;;;;;;;;;1974:8;1965:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1746:244:::0;:::o;135:98::-;188:7;215:10;208:17;;135:98;:::o;8782:369::-;8926:1;8909:19;;:5;:19;;;;8901:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9007:1;8988:21;;:7;:21;;;;8980:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9089:6;9059:11;:18;9071:5;9059:18;;;;;;;;;;;;;;;:27;9078:7;9059:27;;;;;;;;;;;;;;;:36;;;;9127:7;9111:32;;9120:5;9111:32;;;9136:6;9111:32;;;;;;:::i;:::-;;;;;;;;8782:369;;;:::o;9159:2243::-;9297:1;9281:18;;:4;:18;;;;9273:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9374:1;9360:16;;:2;:16;;;;9352:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9444:1;9435:6;:10;9427:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9516:7;:5;:7::i;:::-;9508:15;;:4;:15;;;;:32;;;;;9533:7;:5;:7::i;:::-;9527:13;;:2;:13;;;;9508:32;9504:1172;;;9597:11;;;;;;;;;;;9592:144;;9645:7;:5;:7::i;:::-;9637:15;;:4;:15;;;9629:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9592:144;9770:12;;9760:6;:22;;9752:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9841:13;;;;;;;;;;;9835:19;;:2;:19;;;9832:146;;9908:14;;9899:6;9883:13;9893:2;9883:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9875:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9832:146;9994:28;10025:24;10043:4;10025:9;:24::i;:::-;9994:55;;10064:12;10103:19;;10079:20;:43;;10064:58;;10166:12;;10142:20;:36;10139:124;;10235:12;;10212:35;;10139:124;10283:7;:18;;;;;10295:6;;;;;;;;;;;10294:7;10283:18;:43;;;;;10313:13;;;;;;;;;;;10305:21;;:4;:21;;;;10283:43;:58;;;;;10330:11;;;;;;;;;;;10283:58;:87;;;;;10346:18;:24;10365:4;10346:24;;;;;;;;;;;;;;;;;;;;;;;;;10345:25;10283:87;:114;;;;;10375:18;:22;10394:2;10375:22;;;;;;;;;;;;;;;;;;;;;;;;;10374:23;10283:114;10279:386;;;10418:38;10435:20;10418:16;:38::i;:::-;10475:26;10504:21;10475:50;;10569:1;10548:18;:22;10544:106;;;10595:35;10608:21;10595:12;:35::i;:::-;10544:106;10399:266;10279:386;9542:1134;;9504:1172;10688:12;10703:4;10688:19;;10752:18;:24;10771:4;10752:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10780:18;:22;10799:2;10780:22;;;;;;;;;;;;;;;;;;;;;;;;;10752:50;10751:102;;;;10816:13;;;;;;;;;;;10808:21;;:4;:21;;;;:44;;;;;10839:13;;;;;;;;;;;10833:19;;:2;:19;;;;10808:44;10751:102;10747:594;;;10880:5;10870:15;;10747:594;;;10963:13;;;;;;;;;;;10955:21;;:4;:21;;;:55;;;;;10994:15;;;;;;;;;;;10980:30;;:2;:30;;;;10955:55;10952:162;;;11043:14;;11031:9;:26;;;;11086:12;;11076:7;:22;;;;10952:162;11173:13;;;;;;;;;;;11167:19;;:2;:19;;;:55;;;;;11206:15;;;;;;;;;;;11190:32;;:4;:32;;;;11167:55;11163:165;;;11255:15;;11243:9;:27;;;;11299:13;;11289:7;:23;;;;11163:165;10747:594;11353:41;11368:4;11374:2;11378:6;11386:7;11353:14;:41::i;:::-;9262:2140;9159:2243;;;:::o;2354:224::-;2474:7;2507:1;2502;:6;;2510:12;2494:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2534:9;2550:1;2546;:5;;;;:::i;:::-;2534:17;;2569:1;2562:8;;;2354:224;;;;;:::o;11901:99::-;11958:17;;;;;;;;;;;:26;;:34;11985:6;11958:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11901:99;:::o;8099:323::-;8194:7;8252;;8241;:18;;8219:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8340:19;8362:10;:8;:10::i;:::-;8340:32;;8390:24;8402:11;8390:7;:11;;:24;;;;:::i;:::-;8383:31;;;8099:323;;;:::o;11410:483::-;5820:4;5811:6;;:13;;;;;;;;;;;;;;;;;;11488:21:::1;11526:1;11512:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11488:40;;11557:4;11539;11544:1;11539:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11583:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11573:4;11578:1;11573:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11616:62;11633:4;11648:15;;;;;;;;;;;11666:11;11616:8;:62::i;:::-;11689:15;;;;;;;;;;;:66;;;11770:11;11796:1;11812:4;11839;11859:15;11689:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11477:416;5856:5:::0;5847:6;;:14;;;;;;;;;;;;;;;;;;11410:483;:::o;12604:282::-;12760:7;12755:28;;12769:14;:12;:14::i;:::-;12755:28;12794:44;12812:6;12820:9;12831:6;12794:17;:44::i;:::-;12854:7;12849:29;;12863:15;:13;:15::i;:::-;12849:29;12604:282;;;;:::o;15565:164::-;15607:7;15628:15;15645;15664:19;:17;:19::i;:::-;15627:56;;;;15701:20;15713:7;15701;:11;;:20;;;;:::i;:::-;15694:27;;;;15565:164;:::o;2840:132::-;2898:7;2925:39;2929:1;2932;2925:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2918:46;;2840:132;;;;:::o;8430:219::-;8490:1;8477:9;;:14;:30;;;;;8506:1;8495:7;;:12;8477:30;8473:43;;;8509:7;;8473:43;8548:9;;8528:17;:29;;;;8586:7;;8568:15;:25;;;;8618:1;8606:9;:13;;;;8640:1;8630:7;:11;;;;8430:219;:::o;12894:610::-;13041:15;13071:23;13109:12;13136:23;13174:12;13201:13;13228:19;13239:7;13228:10;:19::i;:::-;13026:221;;;;;;;;;;;;13276:28;13296:7;13276;:15;13284:6;13276:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13258:7;:15;13266:6;13258:15;;;;;;;;;;;;;;;:46;;;;13336:39;13359:15;13336:7;:18;13344:9;13336:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13315:7;:18;13323:9;13315:18;;;;;;;;;;;;;;;:60;;;;13386:16;13396:5;13386:9;:16::i;:::-;13413:23;13425:4;13431;13413:11;:23::i;:::-;13469:9;13452:44;;13461:6;13452:44;;;13480:15;13452:44;;;;;;:::i;:::-;;;;;;;;13015:489;;;;;;12894:610;;;:::o;8657:117::-;8713:17;;8701:9;:29;;;;8751:15;;8741:7;:25;;;;8657:117::o;15737:257::-;15788:7;15797;15817:15;15835:7;;15817:25;;15853:15;4655:18;15853:25;;15903:20;4655:18;15903:7;;:11;;:20;;;;:::i;:::-;15893:7;:30;15889:61;;;15933:7;;4655:18;15925:25;;;;;;;;15889:61;15969:7;15978;15961:25;;;;;;15737:257;;;:::o;2980:223::-;3100:7;3132:1;3128;:5;3135:12;3120:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3159:9;3175:1;3171;:5;;;;:::i;:::-;3159:17;;3194:1;3187:8;;;2980:223;;;;;:::o;13923:615::-;14023:7;14045;14067;14089;14111;14133;14169:23;14194:12;14208:13;14238:40;14250:7;14259:9;;14270:7;;14238:11;:40::i;:::-;14168:110;;;;;;14289:19;14311:10;:8;:10::i;:::-;14289:32;;14333:15;14350:23;14375:12;14404:46;14416:7;14425:4;14431:5;14438:11;14404;:46::i;:::-;14332:118;;;;;;14469:7;14478:15;14495:4;14501:15;14518:4;14524:5;14461:69;;;;;;;;;;;;;;;;;;;13923:615;;;;;;;:::o;2210:136::-;2268:7;2295:43;2299:1;2302;2295:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2288:50;;2210:136;;;;:::o;2023:179::-;2081:7;2101:9;2117:1;2113;:5;;;;:::i;:::-;2101:17;;2142:1;2137;:6;;2129:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2193:1;2186:8;;;2023:179;;;;:::o;13512:211::-;13565:19;13587:10;:8;:10::i;:::-;13565:32;;13608:13;13624:22;13634:11;13624:5;:9;;:22;;;;:::i;:::-;13608:38;;13682:33;13709:5;13682:7;:22;13698:4;13682:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13657:7;:22;13673:4;13657:22;;;;;;;;;;;;;;;:58;;;;13554:169;;13512:211;:::o;13731:147::-;13809:17;13821:4;13809:7;;:11;;:17;;;;:::i;:::-;13799:7;:27;;;;13850:20;13865:4;13850:10;;:14;;:20;;;;:::i;:::-;13837:10;:33;;;;13731:147;;:::o;14546:469::-;14715:7;14737;14759;14794:12;14809:30;14835:3;14809:21;14821:8;14809:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14794:45;;14850:13;14866:28;14890:3;14866:19;14878:6;14866:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14850:44;;14905:23;14931:28;14953:5;14931:17;14943:4;14931:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14905:54;;14978:15;14995:4;15001:5;14970:37;;;;;;;;;14546:469;;;;;;;:::o;15023:534::-;15217:7;15239;15261;15296:15;15314:24;15326:11;15314:7;:11;;:24;;;;:::i;:::-;15296:42;;15349:12;15364:21;15373:11;15364:4;:8;;:21;;;;:::i;:::-;15349:36;;15396:13;15412:22;15422:11;15412:5;:9;;:22;;;;:::i;:::-;15396:38;;15445:23;15471:28;15493:5;15471:17;15483:4;15471:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15445:54;;15518:7;15527:15;15544:4;15510:39;;;;;;;;;;15023:534;;;;;;;;:::o;2586:246::-;2644:7;2673:1;2668;:6;2664:47;;;2698:1;2691:8;;;;2664:47;2721:9;2737:1;2733;:5;;;;:::i;:::-;2721:17;;2766:1;2761;2757;:5;;;;:::i;:::-;:10;2749:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2823:1;2816:8;;;2586:246;;;;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;7:139;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;152:143;;;;:::o;318:568::-;391:8;401:6;451:3;444:4;436:6;432:17;428:27;418:122;;459:79;;:::i;:::-;418:122;572:6;559:20;549:30;;602:18;594:6;591:30;588:117;;;624:79;;:::i;:::-;588:117;738:4;730:6;726:17;714:29;;792:3;784:4;776:6;772:17;762:8;758:32;755:41;752:128;;;799:79;;:::i;:::-;752:128;318:568;;;;;:::o;892:133::-;935:5;973:6;960:20;951:29;;989:30;1013:5;989:30;:::i;:::-;892:133;;;;:::o;1031:139::-;1077:5;1115:6;1102:20;1093:29;;1131:33;1158:5;1131:33;:::i;:::-;1031:139;;;;:::o;1176:329::-;1235:6;1284:2;1272:9;1263:7;1259:23;1255:32;1252:119;;;1290:79;;:::i;:::-;1252:119;1410:1;1435:53;1480:7;1471:6;1460:9;1456:22;1435:53;:::i;:::-;1425:63;;1381:117;1176:329;;;;:::o;1511:351::-;1581:6;1630:2;1618:9;1609:7;1605:23;1601:32;1598:119;;;1636:79;;:::i;:::-;1598:119;1756:1;1781:64;1837:7;1828:6;1817:9;1813:22;1781:64;:::i;:::-;1771:74;;1727:128;1511:351;;;;:::o;1868:474::-;1936:6;1944;1993:2;1981:9;1972:7;1968:23;1964:32;1961:119;;;1999:79;;:::i;:::-;1961:119;2119:1;2144:53;2189:7;2180:6;2169:9;2165:22;2144:53;:::i;:::-;2134:63;;2090:117;2246:2;2272:53;2317:7;2308:6;2297:9;2293:22;2272:53;:::i;:::-;2262:63;;2217:118;1868:474;;;;;:::o;2348:619::-;2425:6;2433;2441;2490:2;2478:9;2469:7;2465:23;2461:32;2458:119;;;2496:79;;:::i;:::-;2458:119;2616:1;2641:53;2686:7;2677:6;2666:9;2662:22;2641:53;:::i;:::-;2631:63;;2587:117;2743:2;2769:53;2814:7;2805:6;2794:9;2790:22;2769:53;:::i;:::-;2759:63;;2714:118;2871:2;2897:53;2942:7;2933:6;2922:9;2918:22;2897:53;:::i;:::-;2887:63;;2842:118;2348:619;;;;;:::o;2973:474::-;3041:6;3049;3098:2;3086:9;3077:7;3073:23;3069:32;3066:119;;;3104:79;;:::i;:::-;3066:119;3224:1;3249:53;3294:7;3285:6;3274:9;3270:22;3249:53;:::i;:::-;3239:63;;3195:117;3351:2;3377:53;3422:7;3413:6;3402:9;3398:22;3377:53;:::i;:::-;3367:63;;3322:118;2973:474;;;;;:::o;3453:698::-;3545:6;3553;3561;3610:2;3598:9;3589:7;3585:23;3581:32;3578:119;;;3616:79;;:::i;:::-;3578:119;3764:1;3753:9;3749:17;3736:31;3794:18;3786:6;3783:30;3780:117;;;3816:79;;:::i;:::-;3780:117;3929:80;4001:7;3992:6;3981:9;3977:22;3929:80;:::i;:::-;3911:98;;;;3707:312;4058:2;4084:50;4126:7;4117:6;4106:9;4102:22;4084:50;:::i;:::-;4074:60;;4029:115;3453:698;;;;;:::o;4157:323::-;4213:6;4262:2;4250:9;4241:7;4237:23;4233:32;4230:119;;;4268:79;;:::i;:::-;4230:119;4388:1;4413:50;4455:7;4446:6;4435:9;4431:22;4413:50;:::i;:::-;4403:60;;4359:114;4157:323;;;;:::o;4486:329::-;4545:6;4594:2;4582:9;4573:7;4569:23;4565:32;4562:119;;;4600:79;;:::i;:::-;4562:119;4720:1;4745:53;4790:7;4781:6;4770:9;4766:22;4745:53;:::i;:::-;4735:63;;4691:117;4486:329;;;;:::o;4821:765::-;4907:6;4915;4923;4931;4980:3;4968:9;4959:7;4955:23;4951:33;4948:120;;;4987:79;;:::i;:::-;4948:120;5107:1;5132:53;5177:7;5168:6;5157:9;5153:22;5132:53;:::i;:::-;5122:63;;5078:117;5234:2;5260:53;5305:7;5296:6;5285:9;5281:22;5260:53;:::i;:::-;5250:63;;5205:118;5362:2;5388:53;5433:7;5424:6;5413:9;5409:22;5388:53;:::i;:::-;5378:63;;5333:118;5490:2;5516:53;5561:7;5552:6;5541:9;5537:22;5516:53;:::i;:::-;5506:63;;5461:118;4821:765;;;;;;;:::o;5592:179::-;5661:10;5682:46;5724:3;5716:6;5682:46;:::i;:::-;5760:4;5755:3;5751:14;5737:28;;5592:179;;;;:::o;5777:108::-;5854:24;5872:5;5854:24;:::i;:::-;5849:3;5842:37;5777:108;;:::o;5891:118::-;5978:24;5996:5;5978:24;:::i;:::-;5973:3;5966:37;5891:118;;:::o;6045:732::-;6164:3;6193:54;6241:5;6193:54;:::i;:::-;6263:86;6342:6;6337:3;6263:86;:::i;:::-;6256:93;;6373:56;6423:5;6373:56;:::i;:::-;6452:7;6483:1;6468:284;6493:6;6490:1;6487:13;6468:284;;;6569:6;6563:13;6596:63;6655:3;6640:13;6596:63;:::i;:::-;6589:70;;6682:60;6735:6;6682:60;:::i;:::-;6672:70;;6528:224;6515:1;6512;6508:9;6503:14;;6468:284;;;6472:14;6768:3;6761:10;;6169:608;;;6045:732;;;;:::o;6783:109::-;6864:21;6879:5;6864:21;:::i;:::-;6859:3;6852:34;6783:109;;:::o;6898:183::-;7011:63;7068:5;7011:63;:::i;:::-;7006:3;6999:76;6898:183;;:::o;7087:147::-;7182:45;7221:5;7182:45;:::i;:::-;7177:3;7170:58;7087:147;;:::o;7240:364::-;7328:3;7356:39;7389:5;7356:39;:::i;:::-;7411:71;7475:6;7470:3;7411:71;:::i;:::-;7404:78;;7491:52;7536:6;7531:3;7524:4;7517:5;7513:16;7491:52;:::i;:::-;7568:29;7590:6;7568:29;:::i;:::-;7563:3;7559:39;7552:46;;7332:272;7240:364;;;;:::o;7610:366::-;7752:3;7773:67;7837:2;7832:3;7773:67;:::i;:::-;7766:74;;7849:93;7938:3;7849:93;:::i;:::-;7967:2;7962:3;7958:12;7951:19;;7610:366;;;:::o;7982:::-;8124:3;8145:67;8209:2;8204:3;8145:67;:::i;:::-;8138:74;;8221:93;8310:3;8221:93;:::i;:::-;8339:2;8334:3;8330:12;8323:19;;7982:366;;;:::o;8354:::-;8496:3;8517:67;8581:2;8576:3;8517:67;:::i;:::-;8510:74;;8593:93;8682:3;8593:93;:::i;:::-;8711:2;8706:3;8702:12;8695:19;;8354:366;;;:::o;8726:::-;8868:3;8889:67;8953:2;8948:3;8889:67;:::i;:::-;8882:74;;8965:93;9054:3;8965:93;:::i;:::-;9083:2;9078:3;9074:12;9067:19;;8726:366;;;:::o;9098:::-;9240:3;9261:67;9325:2;9320:3;9261:67;:::i;:::-;9254:74;;9337:93;9426:3;9337:93;:::i;:::-;9455:2;9450:3;9446:12;9439:19;;9098:366;;;:::o;9470:::-;9612:3;9633:67;9697:2;9692:3;9633:67;:::i;:::-;9626:74;;9709:93;9798:3;9709:93;:::i;:::-;9827:2;9822:3;9818:12;9811:19;;9470:366;;;:::o;9842:::-;9984:3;10005:67;10069:2;10064:3;10005:67;:::i;:::-;9998:74;;10081:93;10170:3;10081:93;:::i;:::-;10199:2;10194:3;10190:12;10183:19;;9842:366;;;:::o;10214:::-;10356:3;10377:67;10441:2;10436:3;10377:67;:::i;:::-;10370:74;;10453:93;10542:3;10453:93;:::i;:::-;10571:2;10566:3;10562:12;10555:19;;10214:366;;;:::o;10586:::-;10728:3;10749:67;10813:2;10808:3;10749:67;:::i;:::-;10742:74;;10825:93;10914:3;10825:93;:::i;:::-;10943:2;10938:3;10934:12;10927:19;;10586:366;;;:::o;10958:::-;11100:3;11121:67;11185:2;11180:3;11121:67;:::i;:::-;11114:74;;11197:93;11286:3;11197:93;:::i;:::-;11315:2;11310:3;11306:12;11299:19;;10958:366;;;:::o;11330:::-;11472:3;11493:67;11557:2;11552:3;11493:67;:::i;:::-;11486:74;;11569:93;11658:3;11569:93;:::i;:::-;11687:2;11682:3;11678:12;11671:19;;11330:366;;;:::o;11702:::-;11844:3;11865:67;11929:2;11924:3;11865:67;:::i;:::-;11858:74;;11941:93;12030:3;11941:93;:::i;:::-;12059:2;12054:3;12050:12;12043:19;;11702:366;;;:::o;12074:::-;12216:3;12237:67;12301:2;12296:3;12237:67;:::i;:::-;12230:74;;12313:93;12402:3;12313:93;:::i;:::-;12431:2;12426:3;12422:12;12415:19;;12074:366;;;:::o;12446:118::-;12533:24;12551:5;12533:24;:::i;:::-;12528:3;12521:37;12446:118;;:::o;12570:112::-;12653:22;12669:5;12653:22;:::i;:::-;12648:3;12641:35;12570:112;;:::o;12688:222::-;12781:4;12819:2;12808:9;12804:18;12796:26;;12832:71;12900:1;12889:9;12885:17;12876:6;12832:71;:::i;:::-;12688:222;;;;:::o;12916:210::-;13003:4;13041:2;13030:9;13026:18;13018:26;;13054:65;13116:1;13105:9;13101:17;13092:6;13054:65;:::i;:::-;12916:210;;;;:::o;13132:274::-;13251:4;13289:2;13278:9;13274:18;13266:26;;13302:97;13396:1;13385:9;13381:17;13372:6;13302:97;:::i;:::-;13132:274;;;;:::o;13412:313::-;13525:4;13563:2;13552:9;13548:18;13540:26;;13612:9;13606:4;13602:20;13598:1;13587:9;13583:17;13576:47;13640:78;13713:4;13704:6;13640:78;:::i;:::-;13632:86;;13412:313;;;;:::o;13731:419::-;13897:4;13935:2;13924:9;13920:18;13912:26;;13984:9;13978:4;13974:20;13970:1;13959:9;13955:17;13948:47;14012:131;14138:4;14012:131;:::i;:::-;14004:139;;13731:419;;;:::o;14156:::-;14322:4;14360:2;14349:9;14345:18;14337:26;;14409:9;14403:4;14399:20;14395:1;14384:9;14380:17;14373:47;14437:131;14563:4;14437:131;:::i;:::-;14429:139;;14156:419;;;:::o;14581:::-;14747:4;14785:2;14774:9;14770:18;14762:26;;14834:9;14828:4;14824:20;14820:1;14809:9;14805:17;14798:47;14862:131;14988:4;14862:131;:::i;:::-;14854:139;;14581:419;;;:::o;15006:::-;15172:4;15210:2;15199:9;15195:18;15187:26;;15259:9;15253:4;15249:20;15245:1;15234:9;15230:17;15223:47;15287:131;15413:4;15287:131;:::i;:::-;15279:139;;15006:419;;;:::o;15431:::-;15597:4;15635:2;15624:9;15620:18;15612:26;;15684:9;15678:4;15674:20;15670:1;15659:9;15655:17;15648:47;15712:131;15838:4;15712:131;:::i;:::-;15704:139;;15431:419;;;:::o;15856:::-;16022:4;16060:2;16049:9;16045:18;16037:26;;16109:9;16103:4;16099:20;16095:1;16084:9;16080:17;16073:47;16137:131;16263:4;16137:131;:::i;:::-;16129:139;;15856:419;;;:::o;16281:::-;16447:4;16485:2;16474:9;16470:18;16462:26;;16534:9;16528:4;16524:20;16520:1;16509:9;16505:17;16498:47;16562:131;16688:4;16562:131;:::i;:::-;16554:139;;16281:419;;;:::o;16706:::-;16872:4;16910:2;16899:9;16895:18;16887:26;;16959:9;16953:4;16949:20;16945:1;16934:9;16930:17;16923:47;16987:131;17113:4;16987:131;:::i;:::-;16979:139;;16706:419;;;:::o;17131:::-;17297:4;17335:2;17324:9;17320:18;17312:26;;17384:9;17378:4;17374:20;17370:1;17359:9;17355:17;17348:47;17412:131;17538:4;17412:131;:::i;:::-;17404:139;;17131:419;;;:::o;17556:::-;17722:4;17760:2;17749:9;17745:18;17737:26;;17809:9;17803:4;17799:20;17795:1;17784:9;17780:17;17773:47;17837:131;17963:4;17837:131;:::i;:::-;17829:139;;17556:419;;;:::o;17981:::-;18147:4;18185:2;18174:9;18170:18;18162:26;;18234:9;18228:4;18224:20;18220:1;18209:9;18205:17;18198:47;18262:131;18388:4;18262:131;:::i;:::-;18254:139;;17981:419;;;:::o;18406:::-;18572:4;18610:2;18599:9;18595:18;18587:26;;18659:9;18653:4;18649:20;18645:1;18634:9;18630:17;18623:47;18687:131;18813:4;18687:131;:::i;:::-;18679:139;;18406:419;;;:::o;18831:::-;18997:4;19035:2;19024:9;19020:18;19012:26;;19084:9;19078:4;19074:20;19070:1;19059:9;19055:17;19048:47;19112:131;19238:4;19112:131;:::i;:::-;19104:139;;18831:419;;;:::o;19256:222::-;19349:4;19387:2;19376:9;19372:18;19364:26;;19400:71;19468:1;19457:9;19453:17;19444:6;19400:71;:::i;:::-;19256:222;;;;:::o;19484:831::-;19747:4;19785:3;19774:9;19770:19;19762:27;;19799:71;19867:1;19856:9;19852:17;19843:6;19799:71;:::i;:::-;19880:80;19956:2;19945:9;19941:18;19932:6;19880:80;:::i;:::-;20007:9;20001:4;19997:20;19992:2;19981:9;19977:18;19970:48;20035:108;20138:4;20129:6;20035:108;:::i;:::-;20027:116;;20153:72;20221:2;20210:9;20206:18;20197:6;20153:72;:::i;:::-;20235:73;20303:3;20292:9;20288:19;20279:6;20235:73;:::i;:::-;19484:831;;;;;;;;:::o;20321:214::-;20410:4;20448:2;20437:9;20433:18;20425:26;;20461:67;20525:1;20514:9;20510:17;20501:6;20461:67;:::i;:::-;20321:214;;;;:::o;20622:132::-;20689:4;20712:3;20704:11;;20742:4;20737:3;20733:14;20725:22;;20622:132;;;:::o;20760:114::-;20827:6;20861:5;20855:12;20845:22;;20760:114;;;:::o;20880:99::-;20932:6;20966:5;20960:12;20950:22;;20880:99;;;:::o;20985:113::-;21055:4;21087;21082:3;21078:14;21070:22;;20985:113;;;:::o;21104:184::-;21203:11;21237:6;21232:3;21225:19;21277:4;21272:3;21268:14;21253:29;;21104:184;;;;:::o;21294:169::-;21378:11;21412:6;21407:3;21400:19;21452:4;21447:3;21443:14;21428:29;;21294:169;;;;:::o;21469:305::-;21509:3;21528:20;21546:1;21528:20;:::i;:::-;21523:25;;21562:20;21580:1;21562:20;:::i;:::-;21557:25;;21716:1;21648:66;21644:74;21641:1;21638:81;21635:107;;;21722:18;;:::i;:::-;21635:107;21766:1;21763;21759:9;21752:16;;21469:305;;;;:::o;21780:185::-;21820:1;21837:20;21855:1;21837:20;:::i;:::-;21832:25;;21871:20;21889:1;21871:20;:::i;:::-;21866:25;;21910:1;21900:35;;21915:18;;:::i;:::-;21900:35;21957:1;21954;21950:9;21945:14;;21780:185;;;;:::o;21971:348::-;22011:7;22034:20;22052:1;22034:20;:::i;:::-;22029:25;;22068:20;22086:1;22068:20;:::i;:::-;22063:25;;22256:1;22188:66;22184:74;22181:1;22178:81;22173:1;22166:9;22159:17;22155:105;22152:131;;;22263:18;;:::i;:::-;22152:131;22311:1;22308;22304:9;22293:20;;21971:348;;;;:::o;22325:191::-;22365:4;22385:20;22403:1;22385:20;:::i;:::-;22380:25;;22419:20;22437:1;22419:20;:::i;:::-;22414:25;;22458:1;22455;22452:8;22449:34;;;22463:18;;:::i;:::-;22449:34;22508:1;22505;22501:9;22493:17;;22325:191;;;;:::o;22522:96::-;22559:7;22588:24;22606:5;22588:24;:::i;:::-;22577:35;;22522:96;;;:::o;22624:90::-;22658:7;22701:5;22694:13;22687:21;22676:32;;22624:90;;;:::o;22720:126::-;22757:7;22797:42;22790:5;22786:54;22775:65;;22720:126;;;:::o;22852:77::-;22889:7;22918:5;22907:16;;22852:77;;;:::o;22935:86::-;22970:7;23010:4;23003:5;22999:16;22988:27;;22935:86;;;:::o;23027:152::-;23103:9;23136:37;23167:5;23136:37;:::i;:::-;23123:50;;23027:152;;;:::o;23185:121::-;23243:9;23276:24;23294:5;23276:24;:::i;:::-;23263:37;;23185:121;;;:::o;23312:126::-;23362:9;23395:37;23426:5;23395:37;:::i;:::-;23382:50;;23312:126;;;:::o;23444:113::-;23494:9;23527:24;23545:5;23527:24;:::i;:::-;23514:37;;23444:113;;;:::o;23563:307::-;23631:1;23641:113;23655:6;23652:1;23649:13;23641:113;;;23740:1;23735:3;23731:11;23725:18;23721:1;23716:3;23712:11;23705:39;23677:2;23674:1;23670:10;23665:15;;23641:113;;;23772:6;23769:1;23766:13;23763:101;;;23852:1;23843:6;23838:3;23834:16;23827:27;23763:101;23612:258;23563:307;;;:::o;23876:233::-;23915:3;23938:24;23956:5;23938:24;:::i;:::-;23929:33;;23984:66;23977:5;23974:77;23971:103;;;24054:18;;:::i;:::-;23971:103;24101:1;24094:5;24090:13;24083:20;;23876:233;;;:::o;24115:180::-;24163:77;24160:1;24153:88;24260:4;24257:1;24250:15;24284:4;24281:1;24274:15;24301:180;24349:77;24346:1;24339:88;24446:4;24443:1;24436:15;24470:4;24467:1;24460:15;24487:180;24535:77;24532:1;24525:88;24632:4;24629:1;24622:15;24656:4;24653:1;24646:15;24673:180;24721:77;24718:1;24711:88;24818:4;24815:1;24808:15;24842:4;24839:1;24832:15;24859:117;24968:1;24965;24958:12;24982:117;25091:1;25088;25081:12;25105:117;25214:1;25211;25204:12;25228:117;25337:1;25334;25327:12;25351:117;25460:1;25457;25450:12;25474:102;25515:6;25566:2;25562:7;25557:2;25550:5;25546:14;25542:28;25532:38;;25474:102;;;:::o;25582:222::-;25722:34;25718:1;25710:6;25706:14;25699:58;25791:5;25786:2;25778:6;25774:15;25767:30;25582:222;:::o;25810:250::-;25950:34;25946:1;25938:6;25934:14;25927:58;26019:33;26014:2;26006:6;26002:15;25995:58;25810:250;:::o;26066:229::-;26206:34;26202:1;26194:6;26190:14;26183:58;26275:12;26270:2;26262:6;26258:15;26251:37;26066:229;:::o;26301:178::-;26441:30;26437:1;26429:6;26425:14;26418:54;26301:178;:::o;26485:225::-;26625:34;26621:1;26613:6;26609:14;26602:58;26694:8;26689:2;26681:6;26677:15;26670:33;26485:225;:::o;26716:221::-;26856:34;26852:1;26844:6;26840:14;26833:58;26925:4;26920:2;26912:6;26908:15;26901:29;26716:221;:::o;26943:177::-;27083:29;27079:1;27071:6;27067:14;27060:53;26943:177;:::o;27126:220::-;27266:34;27262:1;27254:6;27250:14;27243:58;27335:3;27330:2;27322:6;27318:15;27311:28;27126:220;:::o;27352:182::-;27492:34;27488:1;27480:6;27476:14;27469:58;27352:182;:::o;27540:228::-;27680:34;27676:1;27668:6;27664:14;27657:58;27749:11;27744:2;27736:6;27732:15;27725:36;27540:228;:::o;27774:224::-;27914:34;27910:1;27902:6;27898:14;27891:58;27983:7;27978:2;27970:6;27966:15;27959:32;27774:224;:::o;28004:222::-;28144:34;28140:1;28132:6;28128:14;28121:58;28213:5;28208:2;28200:6;28196:15;28189:30;28004:222;:::o;28232:223::-;28372:34;28368:1;28360:6;28356:14;28349:58;28441:6;28436:2;28428:6;28424:15;28417:31;28232:223;:::o;28461:122::-;28534:24;28552:5;28534:24;:::i;:::-;28527:5;28524:35;28514:63;;28573:1;28570;28563:12;28514:63;28461:122;:::o;28589:116::-;28659:21;28674:5;28659:21;:::i;:::-;28652:5;28649:32;28639:60;;28695:1;28692;28685:12;28639:60;28589:116;:::o;28711:122::-;28784:24;28802:5;28784:24;:::i;:::-;28777:5;28774:35;28764:63;;28823:1;28820;28813:12;28764:63;28711:122;:::o

Swarm Source

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