ETH Price: $3,257.46 (+3.27%)
Gas: 3 Gwei

Token

Hello Bitcoin (HIBTC)
 

Overview

Max Total Supply

21,000,000 HIBTC

Holders

4

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
*✋️👁️👄️👁️🤚️.eth
Balance
201,800.995358964 HIBTC

Value
$0.00
0x829a43ec6f297b67d86385b983dae104e500f20e
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:
HelloBitcoin

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-01
*/

/**
Hello Bitcoin
TG:https://t.me/HelloBitcoinETH
**/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.14;
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 HelloBitcoin is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Hello Bitcoin";
    string private constant _symbol = "HIBTC";
    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 = 21000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 20;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 35;
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;
    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    mapping (address => bool) public preTrader;
    address payable private _developmentAddress = payable(0x893b29A0aDbAe584F67b4E5e84eCB72Dc35602c9);
    address payable private _marketingAddress = payable(0x893b29A0aDbAe584F67b4E5e84eCB72Dc35602c9);
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 420000 * 10**9;
    uint256 public _maxWalletSize = 420000 * 10**9;
    uint256 public _swapTokensAtAmount = 50 * 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() && !preTrader[from] && !preTrader[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "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 _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 changeFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }


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

    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    function enablePreTrader(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 preTrader[accounts[i]] = true;
        }
    }

    function setMaxTxn(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

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

    function deletePreTrader(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 delete preTrader[accounts[i]];
        }
    }
}

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":[{"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":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"deletePreTrader","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"enablePreTrader","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","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":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWallet","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":[],"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"}]

6080604052664a9b63844880006000196200001b91906200070c565b6000196200002a919062000773565b600655600060085560146009556000600a556023600b55600a54600c55600b54600d55600c54600e55600d54600f5573893b29a0adbae584f67b4e5e84ecb72dc35602c9601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073893b29a0adbae584f67b4e5e84ecb72dc35602c9601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555066017dfcdece400060155566017dfcdece4000601655640ba43b74006017553480156200016557600080fd5b50600062000178620006a260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022d620006a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000311573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000337919062000818565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200039f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003c5919062000818565b6040518363ffffffff1660e01b8152600401620003e49291906200085b565b6020604051808303816000875af115801562000404573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042a919062000818565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016005600062000480620006aa60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200062d620006a260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef664a9b638448800060405162000693919062000899565b60405180910390a350620008b6565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200071982620006d3565b91506200072683620006d3565b925082620007395762000738620006dd565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200078082620006d3565b91506200078d83620006d3565b925082821015620007a357620007a262000744565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007e082620007b3565b9050919050565b620007f281620007d3565b8114620007fe57600080fd5b50565b6000815190506200081281620007e7565b92915050565b600060208284031215620008315762000830620007ae565b5b6000620008418482850162000801565b91505092915050565b6200085581620007d3565b82525050565b60006040820190506200087260008301856200084a565b6200088160208301846200084a565b9392505050565b6200089381620006d3565b82525050565b6000602082019050620008b0600083018462000888565b92915050565b613a0380620008c66000396000f3fe6080604052600436106101a05760003560e01c80638da5cb5b116100ec578063bdd795ef1161008a578063dd62ed3e11610064578063dd62ed3e146105af578063f2fde38b146105ec578063f9f3493814610615578063fc588c041461063e576101a7565b8063bdd795ef14610532578063c3c8cd801461056f578063c492f04614610586576101a7565b806395d89b41116100c657806395d89b411461047857806398a5c315146104a3578063a9059cbb146104cc578063b1192e1814610509576101a7565b80638da5cb5b146103f95780638f70ccf7146104245780638f9a55c01461044d576101a7565b8063313ce5671161015957806370a082311161013357806370a0823114610351578063715018a61461038e5780637ae899c8146103a55780637d1db4a5146103ce576101a7565b8063313ce567146102d257806349bd5a5e146102fd5780635d0044ca14610328576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632fd689e3146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610667565b6040516101ce9190612a05565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612ac5565b6106a4565b60405161020b9190612b20565b60405180910390f35b34801561022057600080fd5b506102296106c2565b6040516102369190612b9a565b60405180910390f35b34801561024b57600080fd5b506102546106e8565b6040516102619190612bc4565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612bdf565b6106f7565b60405161029e9190612b20565b60405180910390f35b3480156102b357600080fd5b506102bc6107d0565b6040516102c99190612bc4565b60405180910390f35b3480156102de57600080fd5b506102e76107d6565b6040516102f49190612c4e565b60405180910390f35b34801561030957600080fd5b506103126107df565b60405161031f9190612c78565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612c93565b610805565b005b34801561035d57600080fd5b5061037860048036038101906103739190612cc0565b6108a4565b6040516103859190612bc4565b60405180910390f35b34801561039a57600080fd5b506103a36108f5565b005b3480156103b157600080fd5b506103cc60048036038101906103c79190612d52565b610a48565b005b3480156103da57600080fd5b506103e3610b79565b6040516103f09190612bc4565b60405180910390f35b34801561040557600080fd5b5061040e610b7f565b60405161041b9190612c78565b60405180910390f35b34801561043057600080fd5b5061044b60048036038101906104469190612dcb565b610ba8565b005b34801561045957600080fd5b50610462610c59565b60405161046f9190612bc4565b60405180910390f35b34801561048457600080fd5b5061048d610c5f565b60405161049a9190612a05565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190612c93565b610c9c565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190612ac5565b610d3b565b6040516105009190612b20565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612df8565b610d59565b005b34801561053e57600080fd5b5061055960048036038101906105549190612cc0565b610e10565b6040516105669190612b20565b60405180910390f35b34801561057b57600080fd5b50610584610e30565b005b34801561059257600080fd5b506105ad60048036038101906105a89190612e5f565b610f09565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190612ebf565b611043565b6040516105e39190612bc4565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612cc0565b6110ca565b005b34801561062157600080fd5b5061063c60048036038101906106379190612d52565b61128b565b005b34801561064a57600080fd5b5061066560048036038101906106609190612c93565b6113c5565b005b60606040518060400160405280600d81526020017f48656c6c6f20426974636f696e00000000000000000000000000000000000000815250905090565b60006106b86106b1611464565b848461146c565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000664a9b6384488000905090565b6000610704848484611635565b6107c584610710611464565b6107c0856040518060600160405280602881526020016139a660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610776611464565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e989092919063ffffffff16565b61146c565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61080d611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089190612f4b565b60405180910390fd5b8060168190555050565b60006108ee600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611efc565b9050919050565b6108fd611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190612f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a50611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad490612f4b565b60405180910390fd5b60005b82829050811015610b745760106000848484818110610b0257610b01612f6b565b5b9050602002016020810190610b179190612cc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080610b6c90612fc9565b915050610ae0565b505050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bb0611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612f4b565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600581526020017f4849425443000000000000000000000000000000000000000000000000000000815250905090565b610ca4611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890612f4b565b60405180910390fd5b8060178190555050565b6000610d4f610d48611464565b8484611635565b6001905092915050565b610d61611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590612f4b565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60106020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e71611464565b73ffffffffffffffffffffffffffffffffffffffff161480610ee75750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ecf611464565b73ffffffffffffffffffffffffffffffffffffffff16145b610ef057600080fd5b6000610efb306108a4565b9050610f0681611f6a565b50565b610f11611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9590612f4b565b60405180910390fd5b60005b8383905081101561103d578160056000868685818110610fc457610fc3612f6b565b5b9050602002016020810190610fd99190612cc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061103590612fc9565b915050610fa1565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110d2611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690612f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590613083565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611293611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790612f4b565b60405180910390fd5b60005b828290508110156113c05760016010600085858581811061134757611346612f6b565b5b905060200201602081019061135c9190612cc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113b890612fc9565b915050611323565b505050565b6113cd611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190612f4b565b60405180910390fd5b8060158190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613115565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611541906131a7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116289190612bc4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90613239565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a906132cb565b60405180910390fd5b60008111611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174d9061335d565b60405180910390fd5b61175e610b7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117cc575061179c610b7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118225750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118785750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b975760148054906101000a900460ff1661191c57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661191b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611912906133ef565b60405180910390fd5b5b601554811115611961576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119589061345b565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a0e57601654816119c3846108a4565b6119cd919061347b565b10611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490613543565b60405180910390fd5b5b6000611a19306108a4565b9050600060175482101590506015548210611a345760155491505b808015611a4e5750601460159054906101000a900460ff16155b8015611aa85750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac05750601460169054906101000a900460ff165b8015611b165750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b6c5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b9457611b7a82611f6a565b60004790506000811115611b9257611b91476121e3565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c3e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611cf15750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cf05750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611cff5760009050611e86565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611daa5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611dc257600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e6d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e8557600a54600c81905550600b54600d819055505b5b611e928484848461224f565b50505050565b6000838311158290611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed79190612a05565b60405180910390fd5b5060008385611eef9190613563565b9050809150509392505050565b6000600654821115611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90613609565b60405180910390fd5b6000611f4d61227c565b9050611f6281846122a790919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fa257611fa1613629565b5b604051908082528060200260200182016040528015611fd05781602001602082028036833780820191505090505b5090503081600081518110611fe857611fe7612f6b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561208f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b3919061366d565b816001815181106120c7576120c6612f6b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061212e30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461146c565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612192959493929190613793565b600060405180830381600087803b1580156121ac57600080fd5b505af11580156121c0573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561224b573d6000803e3d6000fd5b5050565b8061225d5761225c6122f1565b5b61226884848461232e565b80612276576122756124f9565b5b50505050565b600080600061228961250d565b915091506122a081836122a790919063ffffffff16565b9250505090565b60006122e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612569565b905092915050565b6000600c5414801561230557506000600d54145b61232c57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612340876125cc565b95509550955095509550955061239e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061243385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061247f816126dc565b6124898483612799565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124e69190612bc4565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000664a9b6384488000905061253f664a9b63844880006006546122a790919063ffffffff16565b82101561255c57600654664a9b6384488000935093505050612565565b81819350935050505b9091565b600080831182906125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a79190612a05565b60405180910390fd5b50600083856125bf919061381c565b9050809150509392505050565b60008060008060008060008060006125e98a600c54600d546127d3565b92509250925060006125f961227c565b9050600080600061260c8e878787612869565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061267683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e98565b905092915050565b600080828461268d919061347b565b9050838110156126d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c990613899565b60405180910390fd5b8091505092915050565b60006126e661227c565b905060006126fd82846128f290919063ffffffff16565b905061275181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6127ae8260065461263490919063ffffffff16565b6006819055506127c98160075461267e90919063ffffffff16565b6007819055505050565b6000806000806127ff60646127f1888a6128f290919063ffffffff16565b6122a790919063ffffffff16565b90506000612829606461281b888b6128f290919063ffffffff16565b6122a790919063ffffffff16565b9050600061285282612844858c61263490919063ffffffff16565b61263490919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061288285896128f290919063ffffffff16565b9050600061289986896128f290919063ffffffff16565b905060006128b087896128f290919063ffffffff16565b905060006128d9826128cb858761263490919063ffffffff16565b61263490919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036129045760009050612966565b6000828461291291906138b9565b9050828482612921919061381c565b14612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295890613985565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129a657808201518184015260208101905061298b565b838111156129b5576000848401525b50505050565b6000601f19601f8301169050919050565b60006129d78261296c565b6129e18185612977565b93506129f1818560208601612988565b6129fa816129bb565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a5c82612a31565b9050919050565b612a6c81612a51565b8114612a7757600080fd5b50565b600081359050612a8981612a63565b92915050565b6000819050919050565b612aa281612a8f565b8114612aad57600080fd5b50565b600081359050612abf81612a99565b92915050565b60008060408385031215612adc57612adb612a27565b5b6000612aea85828601612a7a565b9250506020612afb85828601612ab0565b9150509250929050565b60008115159050919050565b612b1a81612b05565b82525050565b6000602082019050612b356000830184612b11565b92915050565b6000819050919050565b6000612b60612b5b612b5684612a31565b612b3b565b612a31565b9050919050565b6000612b7282612b45565b9050919050565b6000612b8482612b67565b9050919050565b612b9481612b79565b82525050565b6000602082019050612baf6000830184612b8b565b92915050565b612bbe81612a8f565b82525050565b6000602082019050612bd96000830184612bb5565b92915050565b600080600060608486031215612bf857612bf7612a27565b5b6000612c0686828701612a7a565b9350506020612c1786828701612a7a565b9250506040612c2886828701612ab0565b9150509250925092565b600060ff82169050919050565b612c4881612c32565b82525050565b6000602082019050612c636000830184612c3f565b92915050565b612c7281612a51565b82525050565b6000602082019050612c8d6000830184612c69565b92915050565b600060208284031215612ca957612ca8612a27565b5b6000612cb784828501612ab0565b91505092915050565b600060208284031215612cd657612cd5612a27565b5b6000612ce484828501612a7a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612d1257612d11612ced565b5b8235905067ffffffffffffffff811115612d2f57612d2e612cf2565b5b602083019150836020820283011115612d4b57612d4a612cf7565b5b9250929050565b60008060208385031215612d6957612d68612a27565b5b600083013567ffffffffffffffff811115612d8757612d86612a2c565b5b612d9385828601612cfc565b92509250509250929050565b612da881612b05565b8114612db357600080fd5b50565b600081359050612dc581612d9f565b92915050565b600060208284031215612de157612de0612a27565b5b6000612def84828501612db6565b91505092915050565b60008060008060808587031215612e1257612e11612a27565b5b6000612e2087828801612ab0565b9450506020612e3187828801612ab0565b9350506040612e4287828801612ab0565b9250506060612e5387828801612ab0565b91505092959194509250565b600080600060408486031215612e7857612e77612a27565b5b600084013567ffffffffffffffff811115612e9657612e95612a2c565b5b612ea286828701612cfc565b93509350506020612eb586828701612db6565b9150509250925092565b60008060408385031215612ed657612ed5612a27565b5b6000612ee485828601612a7a565b9250506020612ef585828601612a7a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f35602083612977565b9150612f4082612eff565b602082019050919050565b60006020820190508181036000830152612f6481612f28565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fd482612a8f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300657613005612f9a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061306d602683612977565b915061307882613011565b604082019050919050565b6000602082019050818103600083015261309c81613060565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130ff602483612977565b915061310a826130a3565b604082019050919050565b6000602082019050818103600083015261312e816130f2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613191602283612977565b915061319c82613135565b604082019050919050565b600060208201905081810360008301526131c081613184565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613223602583612977565b915061322e826131c7565b604082019050919050565b6000602082019050818103600083015261325281613216565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132b5602383612977565b91506132c082613259565b604082019050919050565b600060208201905081810360008301526132e4816132a8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613347602983612977565b9150613352826132eb565b604082019050919050565b600060208201905081810360008301526133768161333a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006133d9603f83612977565b91506133e48261337d565b604082019050919050565b60006020820190508181036000830152613408816133cc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613445601c83612977565b91506134508261340f565b602082019050919050565b6000602082019050818103600083015261347481613438565b9050919050565b600061348682612a8f565b915061349183612a8f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134c6576134c5612f9a565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061352d602383612977565b9150613538826134d1565b604082019050919050565b6000602082019050818103600083015261355c81613520565b9050919050565b600061356e82612a8f565b915061357983612a8f565b92508282101561358c5761358b612f9a565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135f3602a83612977565b91506135fe82613597565b604082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061366781612a63565b92915050565b60006020828403121561368357613682612a27565b5b600061369184828501613658565b91505092915050565b6000819050919050565b60006136bf6136ba6136b58461369a565b612b3b565b612a8f565b9050919050565b6136cf816136a4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61370a81612a51565b82525050565b600061371c8383613701565b60208301905092915050565b6000602082019050919050565b6000613740826136d5565b61374a81856136e0565b9350613755836136f1565b8060005b8381101561378657815161376d8882613710565b975061377883613728565b925050600181019050613759565b5085935050505092915050565b600060a0820190506137a86000830188612bb5565b6137b560208301876136c6565b81810360408301526137c78186613735565b90506137d66060830185612c69565b6137e36080830184612bb5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061382782612a8f565b915061383283612a8f565b925082613842576138416137ed565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613883601b83612977565b915061388e8261384d565b602082019050919050565b600060208201905081810360008301526138b281613876565b9050919050565b60006138c482612a8f565b91506138cf83612a8f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561390857613907612f9a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061396f602183612977565b915061397a82613913565b604082019050919050565b6000602082019050818103600083015261399e81613962565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200711cf196e20615700e569bbed4b10e89a8d34506a3e651d30dc302e96b6359d64736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106101a05760003560e01c80638da5cb5b116100ec578063bdd795ef1161008a578063dd62ed3e11610064578063dd62ed3e146105af578063f2fde38b146105ec578063f9f3493814610615578063fc588c041461063e576101a7565b8063bdd795ef14610532578063c3c8cd801461056f578063c492f04614610586576101a7565b806395d89b41116100c657806395d89b411461047857806398a5c315146104a3578063a9059cbb146104cc578063b1192e1814610509576101a7565b80638da5cb5b146103f95780638f70ccf7146104245780638f9a55c01461044d576101a7565b8063313ce5671161015957806370a082311161013357806370a0823114610351578063715018a61461038e5780637ae899c8146103a55780637d1db4a5146103ce576101a7565b8063313ce567146102d257806349bd5a5e146102fd5780635d0044ca14610328576101a7565b806306fdde03146101ac578063095ea7b3146101d75780631694505e1461021457806318160ddd1461023f57806323b872dd1461026a5780632fd689e3146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610667565b6040516101ce9190612a05565b60405180910390f35b3480156101e357600080fd5b506101fe60048036038101906101f99190612ac5565b6106a4565b60405161020b9190612b20565b60405180910390f35b34801561022057600080fd5b506102296106c2565b6040516102369190612b9a565b60405180910390f35b34801561024b57600080fd5b506102546106e8565b6040516102619190612bc4565b60405180910390f35b34801561027657600080fd5b50610291600480360381019061028c9190612bdf565b6106f7565b60405161029e9190612b20565b60405180910390f35b3480156102b357600080fd5b506102bc6107d0565b6040516102c99190612bc4565b60405180910390f35b3480156102de57600080fd5b506102e76107d6565b6040516102f49190612c4e565b60405180910390f35b34801561030957600080fd5b506103126107df565b60405161031f9190612c78565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a9190612c93565b610805565b005b34801561035d57600080fd5b5061037860048036038101906103739190612cc0565b6108a4565b6040516103859190612bc4565b60405180910390f35b34801561039a57600080fd5b506103a36108f5565b005b3480156103b157600080fd5b506103cc60048036038101906103c79190612d52565b610a48565b005b3480156103da57600080fd5b506103e3610b79565b6040516103f09190612bc4565b60405180910390f35b34801561040557600080fd5b5061040e610b7f565b60405161041b9190612c78565b60405180910390f35b34801561043057600080fd5b5061044b60048036038101906104469190612dcb565b610ba8565b005b34801561045957600080fd5b50610462610c59565b60405161046f9190612bc4565b60405180910390f35b34801561048457600080fd5b5061048d610c5f565b60405161049a9190612a05565b60405180910390f35b3480156104af57600080fd5b506104ca60048036038101906104c59190612c93565b610c9c565b005b3480156104d857600080fd5b506104f360048036038101906104ee9190612ac5565b610d3b565b6040516105009190612b20565b60405180910390f35b34801561051557600080fd5b50610530600480360381019061052b9190612df8565b610d59565b005b34801561053e57600080fd5b5061055960048036038101906105549190612cc0565b610e10565b6040516105669190612b20565b60405180910390f35b34801561057b57600080fd5b50610584610e30565b005b34801561059257600080fd5b506105ad60048036038101906105a89190612e5f565b610f09565b005b3480156105bb57600080fd5b506105d660048036038101906105d19190612ebf565b611043565b6040516105e39190612bc4565b60405180910390f35b3480156105f857600080fd5b50610613600480360381019061060e9190612cc0565b6110ca565b005b34801561062157600080fd5b5061063c60048036038101906106379190612d52565b61128b565b005b34801561064a57600080fd5b5061066560048036038101906106609190612c93565b6113c5565b005b60606040518060400160405280600d81526020017f48656c6c6f20426974636f696e00000000000000000000000000000000000000815250905090565b60006106b86106b1611464565b848461146c565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000664a9b6384488000905090565b6000610704848484611635565b6107c584610710611464565b6107c0856040518060600160405280602881526020016139a660289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610776611464565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e989092919063ffffffff16565b61146c565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61080d611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089190612f4b565b60405180910390fd5b8060168190555050565b60006108ee600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611efc565b9050919050565b6108fd611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461098a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098190612f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610a50611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad490612f4b565b60405180910390fd5b60005b82829050811015610b745760106000848484818110610b0257610b01612f6b565b5b9050602002016020810190610b179190612cc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080610b6c90612fc9565b915050610ae0565b505050565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610bb0611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3490612f4b565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600581526020017f4849425443000000000000000000000000000000000000000000000000000000815250905090565b610ca4611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2890612f4b565b60405180910390fd5b8060178190555050565b6000610d4f610d48611464565b8484611635565b6001905092915050565b610d61611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de590612f4b565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60106020528060005260406000206000915054906101000a900460ff1681565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e71611464565b73ffffffffffffffffffffffffffffffffffffffff161480610ee75750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ecf611464565b73ffffffffffffffffffffffffffffffffffffffff16145b610ef057600080fd5b6000610efb306108a4565b9050610f0681611f6a565b50565b610f11611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9590612f4b565b60405180910390fd5b60005b8383905081101561103d578160056000868685818110610fc457610fc3612f6b565b5b9050602002016020810190610fd99190612cc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061103590612fc9565b915050610fa1565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6110d2611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115690612f4b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c590613083565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611293611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790612f4b565b60405180910390fd5b60005b828290508110156113c05760016010600085858581811061134757611346612f6b565b5b905060200201602081019061135c9190612cc0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806113b890612fc9565b915050611323565b505050565b6113cd611464565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190612f4b565b60405180910390fd5b8060158190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d290613115565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361154a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611541906131a7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116289190612bc4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90613239565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a906132cb565b60405180910390fd5b60008111611756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174d9061335d565b60405180910390fd5b61175e610b7f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117cc575061179c610b7f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156118225750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156118785750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b975760148054906101000a900460ff1661191c57601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661191b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611912906133ef565b60405180910390fd5b5b601554811115611961576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119589061345b565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a0e57601654816119c3846108a4565b6119cd919061347b565b10611a0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0490613543565b60405180910390fd5b5b6000611a19306108a4565b9050600060175482101590506015548210611a345760155491505b808015611a4e5750601460159054906101000a900460ff16155b8015611aa85750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac05750601460169054906101000a900460ff165b8015611b165750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b6c5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611b9457611b7a82611f6a565b60004790506000811115611b9257611b91476121e3565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611c3e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611cf15750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611cf05750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611cff5760009050611e86565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611daa5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611dc257600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e6d5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e8557600a54600c81905550600b54600d819055505b5b611e928484848461224f565b50505050565b6000838311158290611ee0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed79190612a05565b60405180910390fd5b5060008385611eef9190613563565b9050809150509392505050565b6000600654821115611f43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3a90613609565b60405180910390fd5b6000611f4d61227c565b9050611f6281846122a790919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611fa257611fa1613629565b5b604051908082528060200260200182016040528015611fd05781602001602082028036833780820191505090505b5090503081600081518110611fe857611fe7612f6b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561208f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120b3919061366d565b816001815181106120c7576120c6612f6b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061212e30601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461146c565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612192959493929190613793565b600060405180830381600087803b1580156121ac57600080fd5b505af11580156121c0573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561224b573d6000803e3d6000fd5b5050565b8061225d5761225c6122f1565b5b61226884848461232e565b80612276576122756124f9565b5b50505050565b600080600061228961250d565b915091506122a081836122a790919063ffffffff16565b9250505090565b60006122e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612569565b905092915050565b6000600c5414801561230557506000600d54145b61232c57600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612340876125cc565b95509550955095509550955061239e86600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461263490919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061243385600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267e90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061247f816126dc565b6124898483612799565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124e69190612bc4565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000664a9b6384488000905061253f664a9b63844880006006546122a790919063ffffffff16565b82101561255c57600654664a9b6384488000935093505050612565565b81819350935050505b9091565b600080831182906125b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a79190612a05565b60405180910390fd5b50600083856125bf919061381c565b9050809150509392505050565b60008060008060008060008060006125e98a600c54600d546127d3565b92509250925060006125f961227c565b9050600080600061260c8e878787612869565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061267683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e98565b905092915050565b600080828461268d919061347b565b9050838110156126d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c990613899565b60405180910390fd5b8091505092915050565b60006126e661227c565b905060006126fd82846128f290919063ffffffff16565b905061275181600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461267e90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6127ae8260065461263490919063ffffffff16565b6006819055506127c98160075461267e90919063ffffffff16565b6007819055505050565b6000806000806127ff60646127f1888a6128f290919063ffffffff16565b6122a790919063ffffffff16565b90506000612829606461281b888b6128f290919063ffffffff16565b6122a790919063ffffffff16565b9050600061285282612844858c61263490919063ffffffff16565b61263490919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061288285896128f290919063ffffffff16565b9050600061289986896128f290919063ffffffff16565b905060006128b087896128f290919063ffffffff16565b905060006128d9826128cb858761263490919063ffffffff16565b61263490919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036129045760009050612966565b6000828461291291906138b9565b9050828482612921919061381c565b14612961576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161295890613985565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129a657808201518184015260208101905061298b565b838111156129b5576000848401525b50505050565b6000601f19601f8301169050919050565b60006129d78261296c565b6129e18185612977565b93506129f1818560208601612988565b6129fa816129bb565b840191505092915050565b60006020820190508181036000830152612a1f81846129cc565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a5c82612a31565b9050919050565b612a6c81612a51565b8114612a7757600080fd5b50565b600081359050612a8981612a63565b92915050565b6000819050919050565b612aa281612a8f565b8114612aad57600080fd5b50565b600081359050612abf81612a99565b92915050565b60008060408385031215612adc57612adb612a27565b5b6000612aea85828601612a7a565b9250506020612afb85828601612ab0565b9150509250929050565b60008115159050919050565b612b1a81612b05565b82525050565b6000602082019050612b356000830184612b11565b92915050565b6000819050919050565b6000612b60612b5b612b5684612a31565b612b3b565b612a31565b9050919050565b6000612b7282612b45565b9050919050565b6000612b8482612b67565b9050919050565b612b9481612b79565b82525050565b6000602082019050612baf6000830184612b8b565b92915050565b612bbe81612a8f565b82525050565b6000602082019050612bd96000830184612bb5565b92915050565b600080600060608486031215612bf857612bf7612a27565b5b6000612c0686828701612a7a565b9350506020612c1786828701612a7a565b9250506040612c2886828701612ab0565b9150509250925092565b600060ff82169050919050565b612c4881612c32565b82525050565b6000602082019050612c636000830184612c3f565b92915050565b612c7281612a51565b82525050565b6000602082019050612c8d6000830184612c69565b92915050565b600060208284031215612ca957612ca8612a27565b5b6000612cb784828501612ab0565b91505092915050565b600060208284031215612cd657612cd5612a27565b5b6000612ce484828501612a7a565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612d1257612d11612ced565b5b8235905067ffffffffffffffff811115612d2f57612d2e612cf2565b5b602083019150836020820283011115612d4b57612d4a612cf7565b5b9250929050565b60008060208385031215612d6957612d68612a27565b5b600083013567ffffffffffffffff811115612d8757612d86612a2c565b5b612d9385828601612cfc565b92509250509250929050565b612da881612b05565b8114612db357600080fd5b50565b600081359050612dc581612d9f565b92915050565b600060208284031215612de157612de0612a27565b5b6000612def84828501612db6565b91505092915050565b60008060008060808587031215612e1257612e11612a27565b5b6000612e2087828801612ab0565b9450506020612e3187828801612ab0565b9350506040612e4287828801612ab0565b9250506060612e5387828801612ab0565b91505092959194509250565b600080600060408486031215612e7857612e77612a27565b5b600084013567ffffffffffffffff811115612e9657612e95612a2c565b5b612ea286828701612cfc565b93509350506020612eb586828701612db6565b9150509250925092565b60008060408385031215612ed657612ed5612a27565b5b6000612ee485828601612a7a565b9250506020612ef585828601612a7a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f35602083612977565b9150612f4082612eff565b602082019050919050565b60006020820190508181036000830152612f6481612f28565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612fd482612a8f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361300657613005612f9a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061306d602683612977565b915061307882613011565b604082019050919050565b6000602082019050818103600083015261309c81613060565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006130ff602483612977565b915061310a826130a3565b604082019050919050565b6000602082019050818103600083015261312e816130f2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613191602283612977565b915061319c82613135565b604082019050919050565b600060208201905081810360008301526131c081613184565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613223602583612977565b915061322e826131c7565b604082019050919050565b6000602082019050818103600083015261325281613216565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006132b5602383612977565b91506132c082613259565b604082019050919050565b600060208201905081810360008301526132e4816132a8565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613347602983612977565b9150613352826132eb565b604082019050919050565b600060208201905081810360008301526133768161333a565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006133d9603f83612977565b91506133e48261337d565b604082019050919050565b60006020820190508181036000830152613408816133cc565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613445601c83612977565b91506134508261340f565b602082019050919050565b6000602082019050818103600083015261347481613438565b9050919050565b600061348682612a8f565b915061349183612a8f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134c6576134c5612f9a565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061352d602383612977565b9150613538826134d1565b604082019050919050565b6000602082019050818103600083015261355c81613520565b9050919050565b600061356e82612a8f565b915061357983612a8f565b92508282101561358c5761358b612f9a565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006135f3602a83612977565b91506135fe82613597565b604082019050919050565b60006020820190508181036000830152613622816135e6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061366781612a63565b92915050565b60006020828403121561368357613682612a27565b5b600061369184828501613658565b91505092915050565b6000819050919050565b60006136bf6136ba6136b58461369a565b612b3b565b612a8f565b9050919050565b6136cf816136a4565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61370a81612a51565b82525050565b600061371c8383613701565b60208301905092915050565b6000602082019050919050565b6000613740826136d5565b61374a81856136e0565b9350613755836136f1565b8060005b8381101561378657815161376d8882613710565b975061377883613728565b925050600181019050613759565b5085935050505092915050565b600060a0820190506137a86000830188612bb5565b6137b560208301876136c6565b81810360408301526137c78186613735565b90506137d66060830185612c69565b6137e36080830184612bb5565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061382782612a8f565b915061383283612a8f565b925082613842576138416137ed565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613883601b83612977565b915061388e8261384d565b602082019050919050565b600060208201905081810360008301526138b281613876565b9050919050565b60006138c482612a8f565b91506138cf83612a8f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561390857613907612f9a565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061396f602183612977565b915061397a82613913565b604082019050919050565b6000602082019050818103600083015261399e81613962565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212200711cf196e20615700e569bbed4b10e89a8d34506a3e651d30dc302e96b6359d64736f6c634300080e0033

Deployed Bytecode Sourcemap

4129:13027:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6554:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7479:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5413:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6831:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7680:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5705:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6740:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5461:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16137:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6934:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1616:148;;;;;;;;;;;;;:::i;:::-;;16958:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5601:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1402:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12082:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5652:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6645:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16256:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7080:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15833:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5158:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12191:236;;;;;;;;;;;;;:::i;:::-;;16716:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7287:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1772:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16403:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16606:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6554:83;6591:13;6624:5;;;;;;;;;;;;;;;;;6617:12;;6554:83;:::o;7479:193::-;7581:4;7603:39;7612:12;:10;:12::i;:::-;7626:7;7635:6;7603:8;:39::i;:::-;7660:4;7653:11;;7479:193;;;;:::o;5413:41::-;;;;;;;;;;;;;:::o;6831:95::-;6884:7;4686:16;6904:14;;6831:95;:::o;7680:446::-;7812:4;7829:36;7839:6;7847:9;7858:6;7829:9;:36::i;:::-;7876:220;7899:6;7920:12;:10;:12::i;:::-;7947:138;8003:6;7947:138;;;;;;;;;;;;;;;;;:11;:19;7959:6;7947:19;;;;;;;;;;;;;;;:33;7967:12;:10;:12::i;:::-;7947:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7876:8;:220::i;:::-;8114:4;8107:11;;7680:446;;;;;:::o;5705:47::-;;;;:::o;6740:83::-;6781:5;4360:1;6799:16;;6740:83;:::o;5461:28::-;;;;;;;;;;;;;:::o;16137:111::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16227:13:::1;16210:14;:30;;;;16137:111:::0;:::o;6934:138::-;7000:7;7027:37;7047:7;:16;7055:7;7047:16;;;;;;;;;;;;;;;;7027:19;:37::i;:::-;7020:44;;6934:138;;;:::o;1616:148::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1723:1:::1;1686:40;;1707:6;::::0;::::1;;;;;;;;1686:40;;;;;;;;;;;;1754:1;1737:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1616:148::o:0;16958:195::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17044:9:::1;17040:106;17063:8;;:15;;17059:1;:19;17040:106;;;17112:9;:22;17122:8;;17131:1;17122:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17112:22;;;;;;;;;;;;;;;;17105:29;;;;;;;;;;;17080:3;;;;;:::i;:::-;;;;17040:106;;;;16958:195:::0;;:::o;5601:44::-;;;;:::o;1402:79::-;1440:7;1467:6;;;;;;;;;;;1460:13;;1402:79;:::o;12082:101::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12163:12:::1;12149:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;12082:101:::0;:::o;5652:46::-;;;;:::o;6645:87::-;6684:13;6717:7;;;;;;;;;;;;;;;;;6710:14;;6645:87;:::o;16256:139::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16369:18:::1;16347:19;:40;;;;16256:139:::0;:::o;7080:199::-;7185:4;7207:42;7217:12;:10;:12::i;:::-;7231:9;7242:6;7207:9;:42::i;:::-;7267:4;7260:11;;7080:199;;;;:::o;15833:294::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15987:13:::1;15970:14;:30;;;;16029:14;16011:15;:32;;;;16069:11;16054:12;:26;;;;16107:12;16091:13;:28;;;;15833:294:::0;;;;:::o;5158:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;12191:236::-;12257:19;;;;;;;;;;;12241:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12296:17;;;;;;;;;;;12280:33;;:12;:10;:12::i;:::-;:33;;;12241:72;12233:81;;;;;;12325:23;12351:24;12369:4;12351:9;:24::i;:::-;12325:50;;12386:33;12403:15;12386:16;:33::i;:::-;12222:205;12191:236::o;16716:234::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16833:9:::1;16829:114;16852:8;;:15;;16848:1;:19;16829:114;;;16923:8;16889:18;:31;16908:8;;16917:1;16908:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16889:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16869:3;;;;;:::i;:::-;;;;16829:114;;;;16716:234:::0;;;:::o;7287:184::-;7404:7;7436:11;:18;7448:5;7436:18;;;;;;;;;;;;;;;:27;7455:7;7436:27;;;;;;;;;;;;;;;;7429:34;;7287:184;;;;:::o;1772:244::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1881:1:::1;1861:22;;:8;:22;;::::0;1853:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1971:8;1942:38;;1963:6;::::0;::::1;;;;;;;;1942:38;;;;;;;;;;;;2000:8;1991:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1772:244:::0;:::o;16403:195::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16489:9:::1;16485:106;16508:8;;:15;;16504:1;:19;16485:106;;;16575:4;16550:9;:22;16560:8;;16569:1;16560:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16550:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;16525:3;;;;;:::i;:::-;;;;16485:106;;;;16403:195:::0;;:::o;16606:102::-;1539:12;:10;:12::i;:::-;1529:22;;:6;;;;;;;;;;:22;;;1521:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16689:11:::1;16674:12;:26;;;;16606:102:::0;:::o;161:98::-;214:7;241:10;234:17;;161:98;:::o;8817:369::-;8961:1;8944:19;;:5;:19;;;8936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9042:1;9023:21;;:7;:21;;;9015:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9124:6;9094:11;:18;9106:5;9094:18;;;;;;;;;;;;;;;:27;9113:7;9094:27;;;;;;;;;;;;;;;:36;;;;9162:7;9146:32;;9155:5;9146:32;;;9171:6;9146:32;;;;;;:::i;:::-;;;;;;;;8817:369;;;:::o;9194:2282::-;9332:1;9316:18;;:4;:18;;;9308:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9409:1;9395:16;;:2;:16;;;9387:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9479:1;9470:6;:10;9462:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9552:7;:5;:7::i;:::-;9544:15;;:4;:15;;;;:32;;;;;9569:7;:5;:7::i;:::-;9563:13;;:2;:13;;;;9544:32;:52;;;;;9581:9;:15;9591:4;9581:15;;;;;;;;;;;;;;;;;;;;;;;;;9580:16;9544:52;:70;;;;;9601:9;:13;9611:2;9601:13;;;;;;;;;;;;;;;;;;;;;;;;;9600:14;9544:70;9540:1210;;;9671:11;;;;;;;;;;9666:144;;9711:9;:15;9721:4;9711:15;;;;;;;;;;;;;;;;;;;;;;;;;9703:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9666:144;9844:12;;9834:6;:22;;9826:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9915:13;;;;;;;;;;;9909:19;;:2;:19;;;9906:146;;9982:14;;9973:6;9957:13;9967:2;9957:9;:13::i;:::-;:22;;;;:::i;:::-;:39;9949:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;9906:146;10068:28;10099:24;10117:4;10099:9;:24::i;:::-;10068:55;;10138:12;10177:19;;10153:20;:43;;10138:58;;10240:12;;10216:20;:36;10213:124;;10309:12;;10286:35;;10213:124;10357:7;:18;;;;;10369:6;;;;;;;;;;;10368:7;10357:18;:43;;;;;10387:13;;;;;;;;;;;10379:21;;:4;:21;;;;10357:43;:58;;;;;10404:11;;;;;;;;;;;10357:58;:87;;;;;10420:18;:24;10439:4;10420:24;;;;;;;;;;;;;;;;;;;;;;;;;10419:25;10357:87;:114;;;;;10449:18;:22;10468:2;10449:22;;;;;;;;;;;;;;;;;;;;;;;;;10448:23;10357:114;10353:386;;;10492:38;10509:20;10492:16;:38::i;:::-;10549:26;10578:21;10549:50;;10643:1;10622:18;:22;10618:106;;;10669:35;10682:21;10669:12;:35::i;:::-;10618:106;10473:266;10353:386;9616:1134;;9540:1210;10762:12;10777:4;10762:19;;10826:18;:24;10845:4;10826:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10854:18;:22;10873:2;10854:22;;;;;;;;;;;;;;;;;;;;;;;;;10826:50;10825:102;;;;10890:13;;;;;;;;;;;10882:21;;:4;:21;;;;:44;;;;;10913:13;;;;;;;;;;;10907:19;;:2;:19;;;;10882:44;10825:102;10821:594;;;10954:5;10944:15;;10821:594;;;11037:13;;;;;;;;;;;11029:21;;:4;:21;;;:55;;;;;11068:15;;;;;;;;;;;11054:30;;:2;:30;;;;11029:55;11026:162;;;11117:14;;11105:9;:26;;;;11160:12;;11150:7;:22;;;;11026:162;11247:13;;;;;;;;;;;11241:19;;:2;:19;;;:55;;;;;11280:15;;;;;;;;;;;11264:32;;:4;:32;;;;11241:55;11237:165;;;11329:15;;11317:9;:27;;;;11373:13;;11363:7;:23;;;;11237:165;10821:594;11427:41;11442:4;11448:2;11452:6;11460:7;11427:14;:41::i;:::-;9297:2179;9194:2282;;;:::o;2380:224::-;2500:7;2533:1;2528;:6;;2536:12;2520:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2560:9;2576:1;2572;:5;;;;:::i;:::-;2560:17;;2595:1;2588:8;;;2380:224;;;;;:::o;8134:323::-;8229:7;8287;;8276;:18;;8254:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8375:19;8397:10;:8;:10::i;:::-;8375:32;;8425:24;8437:11;8425:7;:11;;:24;;;;:::i;:::-;8418:31;;;8134:323;;;:::o;11484:483::-;5855:4;5846:6;;:13;;;;;;;;;;;;;;;;;;11562:21:::1;11600:1;11586:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11562:40;;11631:4;11613;11618:1;11613:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11657:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11647:4;11652:1;11647:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11690:62;11707:4;11722:15;;;;;;;;;;;11740:11;11690:8;:62::i;:::-;11763:15;;;;;;;;;;;:66;;;11844:11;11870:1;11886:4;11913;11933:15;11763:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11551:416;5891:5:::0;5882:6;;:14;;;;;;;;;;;;;;;;;;11484:483;:::o;11975:99::-;12032:17;;;;;;;;;;;:26;;:34;12059:6;12032:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11975:99;:::o;12435:282::-;12591:7;12586:28;;12600:14;:12;:14::i;:::-;12586:28;12625:44;12643:6;12651:9;12662:6;12625:17;:44::i;:::-;12685:7;12680:29;;12694:15;:13;:15::i;:::-;12680:29;12435:282;;;;:::o;15396:164::-;15438:7;15459:15;15476;15495:19;:17;:19::i;:::-;15458:56;;;;15532:20;15544:7;15532;:11;;:20;;;;:::i;:::-;15525:27;;;;15396:164;:::o;2866:132::-;2924:7;2951:39;2955:1;2958;2951:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2944:46;;2866:132;;;;:::o;8465:219::-;8525:1;8512:9;;:14;:30;;;;;8541:1;8530:7;;:12;8512:30;8544:7;8508:43;8583:9;;8563:17;:29;;;;8621:7;;8603:15;:25;;;;8653:1;8641:9;:13;;;;8675:1;8665:7;:11;;;;8465:219;:::o;12725:610::-;12872:15;12902:23;12940:12;12967:23;13005:12;13032:13;13059:19;13070:7;13059:10;:19::i;:::-;12857:221;;;;;;;;;;;;13107:28;13127:7;13107;:15;13115:6;13107:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13089:7;:15;13097:6;13089:15;;;;;;;;;;;;;;;:46;;;;13167:39;13190:15;13167:7;:18;13175:9;13167:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13146:7;:18;13154:9;13146:18;;;;;;;;;;;;;;;:60;;;;13217:16;13227:5;13217:9;:16::i;:::-;13244:23;13256:4;13262;13244:11;:23::i;:::-;13300:9;13283:44;;13292:6;13283:44;;;13311:15;13283:44;;;;;;:::i;:::-;;;;;;;;12846:489;;;;;;12725:610;;;:::o;8692:117::-;8748:17;;8736:9;:29;;;;8786:15;;8776:7;:25;;;;8692:117::o;15568:257::-;15619:7;15628;15648:15;15666:7;;15648:25;;15684:15;4686:16;15684:25;;15734:20;4686:16;15734:7;;:11;;:20;;;;:::i;:::-;15724:7;:30;15720:61;;;15764:7;;4686:16;15756:25;;;;;;;;15720:61;15800:7;15809;15792:25;;;;;;15568:257;;;:::o;3006:223::-;3126:7;3158:1;3154;:5;3161:12;3146:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3185:9;3201:1;3197;:5;;;;:::i;:::-;3185:17;;3220:1;3213:8;;;3006:223;;;;;:::o;13754:615::-;13854:7;13876;13898;13920;13942;13964;14000:23;14025:12;14039:13;14069:40;14081:7;14090:9;;14101:7;;14069:11;:40::i;:::-;13999:110;;;;;;14120:19;14142:10;:8;:10::i;:::-;14120:32;;14164:15;14181:23;14206:12;14235:46;14247:7;14256:4;14262:5;14269:11;14235;:46::i;:::-;14163:118;;;;;;14300:7;14309:15;14326:4;14332:15;14349:4;14355:5;14292:69;;;;;;;;;;;;;;;;;;;13754:615;;;;;;;:::o;2236:136::-;2294:7;2321:43;2325:1;2328;2321:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2314:50;;2236:136;;;;:::o;2049:179::-;2107:7;2127:9;2143:1;2139;:5;;;;:::i;:::-;2127:17;;2168:1;2163;:6;;2155:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2219:1;2212:8;;;2049:179;;;;:::o;13343:211::-;13396:19;13418:10;:8;:10::i;:::-;13396:32;;13439:13;13455:22;13465:11;13455:5;:9;;:22;;;;:::i;:::-;13439:38;;13513:33;13540:5;13513:7;:22;13529:4;13513:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13488:7;:22;13504:4;13488:22;;;;;;;;;;;;;;;:58;;;;13385:169;;13343:211;:::o;13562:147::-;13640:17;13652:4;13640:7;;:11;;:17;;;;:::i;:::-;13630:7;:27;;;;13681:20;13696:4;13681:10;;:14;;:20;;;;:::i;:::-;13668:10;:33;;;;13562:147;;:::o;14377:469::-;14546:7;14568;14590;14625:12;14640:30;14666:3;14640:21;14652:8;14640:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14625:45;;14681:13;14697:28;14721:3;14697:19;14709:6;14697:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14681:44;;14736:23;14762:28;14784:5;14762:17;14774:4;14762:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14736:54;;14809:15;14826:4;14832:5;14801:37;;;;;;;;;14377:469;;;;;;;:::o;14854:534::-;15048:7;15070;15092;15127:15;15145:24;15157:11;15145:7;:11;;:24;;;;:::i;:::-;15127:42;;15180:12;15195:21;15204:11;15195:4;:8;;:21;;;;:::i;:::-;15180:36;;15227:13;15243:22;15253:11;15243:5;:9;;:22;;;;:::i;:::-;15227:38;;15276:23;15302:28;15324:5;15302:17;15314:4;15302:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15276:54;;15349:7;15358:15;15375:4;15341:39;;;;;;;;;;14854:534;;;;;;;;:::o;2612:246::-;2670:7;2699:1;2694;:6;2690:47;;2724:1;2717:8;;;;2690:47;2747:9;2763:1;2759;:5;;;;:::i;:::-;2747:17;;2792:1;2787;2783;:5;;;;:::i;:::-;:10;2775:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2849:1;2842:8;;;2612:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:329::-;6285:6;6334:2;6322:9;6313:7;6309:23;6305:32;6302:119;;;6340:79;;:::i;:::-;6302:119;6460:1;6485:53;6530:7;6521:6;6510:9;6506:22;6485:53;:::i;:::-;6475:63;;6431:117;6226:329;;;;:::o;6561:::-;6620:6;6669:2;6657:9;6648:7;6644:23;6640:32;6637:119;;;6675:79;;:::i;:::-;6637:119;6795:1;6820:53;6865:7;6856:6;6845:9;6841:22;6820:53;:::i;:::-;6810:63;;6766:117;6561:329;;;;:::o;6896:117::-;7005:1;7002;6995:12;7019:117;7128:1;7125;7118:12;7142:117;7251:1;7248;7241:12;7282:568;7355:8;7365:6;7415:3;7408:4;7400:6;7396:17;7392:27;7382:122;;7423:79;;:::i;:::-;7382:122;7536:6;7523:20;7513:30;;7566:18;7558:6;7555:30;7552:117;;;7588:79;;:::i;:::-;7552:117;7702:4;7694:6;7690:17;7678:29;;7756:3;7748:4;7740:6;7736:17;7726:8;7722:32;7719:41;7716:128;;;7763:79;;:::i;:::-;7716:128;7282:568;;;;;:::o;7856:559::-;7942:6;7950;7999:2;7987:9;7978:7;7974:23;7970:32;7967:119;;;8005:79;;:::i;:::-;7967:119;8153:1;8142:9;8138:17;8125:31;8183:18;8175:6;8172:30;8169:117;;;8205:79;;:::i;:::-;8169:117;8318:80;8390:7;8381:6;8370:9;8366:22;8318:80;:::i;:::-;8300:98;;;;8096:312;7856:559;;;;;:::o;8421:116::-;8491:21;8506:5;8491:21;:::i;:::-;8484:5;8481:32;8471:60;;8527:1;8524;8517:12;8471:60;8421:116;:::o;8543:133::-;8586:5;8624:6;8611:20;8602:29;;8640:30;8664:5;8640:30;:::i;:::-;8543:133;;;;:::o;8682:323::-;8738:6;8787:2;8775:9;8766:7;8762:23;8758:32;8755:119;;;8793:79;;:::i;:::-;8755:119;8913:1;8938:50;8980:7;8971:6;8960:9;8956:22;8938:50;:::i;:::-;8928:60;;8884:114;8682:323;;;;:::o;9011:765::-;9097:6;9105;9113;9121;9170:3;9158:9;9149:7;9145:23;9141:33;9138:120;;;9177:79;;:::i;:::-;9138:120;9297:1;9322:53;9367:7;9358:6;9347:9;9343:22;9322:53;:::i;:::-;9312:63;;9268:117;9424:2;9450:53;9495:7;9486:6;9475:9;9471:22;9450:53;:::i;:::-;9440:63;;9395:118;9552:2;9578:53;9623:7;9614:6;9603:9;9599:22;9578:53;:::i;:::-;9568:63;;9523:118;9680:2;9706:53;9751:7;9742:6;9731:9;9727:22;9706:53;:::i;:::-;9696:63;;9651:118;9011:765;;;;;;;:::o;9782:698::-;9874:6;9882;9890;9939:2;9927:9;9918:7;9914:23;9910:32;9907:119;;;9945:79;;:::i;:::-;9907:119;10093:1;10082:9;10078:17;10065:31;10123:18;10115:6;10112:30;10109:117;;;10145:79;;:::i;:::-;10109:117;10258:80;10330:7;10321:6;10310:9;10306:22;10258:80;:::i;:::-;10240:98;;;;10036:312;10387:2;10413:50;10455:7;10446:6;10435:9;10431:22;10413:50;:::i;:::-;10403:60;;10358:115;9782:698;;;;;:::o;10486:474::-;10554:6;10562;10611:2;10599:9;10590:7;10586:23;10582:32;10579:119;;;10617:79;;:::i;:::-;10579:119;10737:1;10762:53;10807:7;10798:6;10787:9;10783:22;10762:53;:::i;:::-;10752:63;;10708:117;10864:2;10890:53;10935:7;10926:6;10915:9;10911:22;10890:53;:::i;:::-;10880:63;;10835:118;10486:474;;;;;:::o;10966:182::-;11106:34;11102:1;11094:6;11090:14;11083:58;10966:182;:::o;11154:366::-;11296:3;11317:67;11381:2;11376:3;11317:67;:::i;:::-;11310:74;;11393:93;11482:3;11393:93;:::i;:::-;11511:2;11506:3;11502:12;11495:19;;11154:366;;;:::o;11526:419::-;11692:4;11730:2;11719:9;11715:18;11707:26;;11779:9;11773:4;11769:20;11765:1;11754:9;11750:17;11743:47;11807:131;11933:4;11807:131;:::i;:::-;11799:139;;11526:419;;;:::o;11951:180::-;11999:77;11996:1;11989:88;12096:4;12093:1;12086:15;12120:4;12117:1;12110:15;12137:180;12185:77;12182:1;12175:88;12282:4;12279:1;12272:15;12306:4;12303:1;12296:15;12323:233;12362:3;12385:24;12403:5;12385:24;:::i;:::-;12376:33;;12431:66;12424:5;12421:77;12418:103;;12501:18;;:::i;:::-;12418:103;12548:1;12541:5;12537:13;12530:20;;12323:233;;;:::o;12562:225::-;12702:34;12698:1;12690:6;12686:14;12679:58;12771:8;12766:2;12758:6;12754:15;12747:33;12562:225;:::o;12793:366::-;12935:3;12956:67;13020:2;13015:3;12956:67;:::i;:::-;12949:74;;13032:93;13121:3;13032:93;:::i;:::-;13150:2;13145:3;13141:12;13134:19;;12793:366;;;:::o;13165:419::-;13331:4;13369:2;13358:9;13354:18;13346:26;;13418:9;13412:4;13408:20;13404:1;13393:9;13389:17;13382:47;13446:131;13572:4;13446:131;:::i;:::-;13438:139;;13165:419;;;:::o;13590:223::-;13730:34;13726:1;13718:6;13714:14;13707:58;13799:6;13794:2;13786:6;13782:15;13775:31;13590:223;:::o;13819:366::-;13961:3;13982:67;14046:2;14041:3;13982:67;:::i;:::-;13975:74;;14058:93;14147:3;14058:93;:::i;:::-;14176:2;14171:3;14167:12;14160:19;;13819:366;;;:::o;14191:419::-;14357:4;14395:2;14384:9;14380:18;14372:26;;14444:9;14438:4;14434:20;14430:1;14419:9;14415:17;14408:47;14472:131;14598:4;14472:131;:::i;:::-;14464:139;;14191:419;;;:::o;14616:221::-;14756:34;14752:1;14744:6;14740:14;14733:58;14825:4;14820:2;14812:6;14808:15;14801:29;14616:221;:::o;14843:366::-;14985:3;15006:67;15070:2;15065:3;15006:67;:::i;:::-;14999:74;;15082:93;15171:3;15082:93;:::i;:::-;15200:2;15195:3;15191:12;15184:19;;14843:366;;;:::o;15215:419::-;15381:4;15419:2;15408:9;15404:18;15396:26;;15468:9;15462:4;15458:20;15454:1;15443:9;15439:17;15432:47;15496:131;15622:4;15496:131;:::i;:::-;15488:139;;15215:419;;;:::o;15640:224::-;15780:34;15776:1;15768:6;15764:14;15757:58;15849:7;15844:2;15836:6;15832:15;15825:32;15640:224;:::o;15870:366::-;16012:3;16033:67;16097:2;16092:3;16033:67;:::i;:::-;16026:74;;16109:93;16198:3;16109:93;:::i;:::-;16227:2;16222:3;16218:12;16211:19;;15870:366;;;:::o;16242:419::-;16408:4;16446:2;16435:9;16431:18;16423:26;;16495:9;16489:4;16485:20;16481:1;16470:9;16466:17;16459:47;16523:131;16649:4;16523:131;:::i;:::-;16515:139;;16242:419;;;:::o;16667:222::-;16807:34;16803:1;16795:6;16791:14;16784:58;16876:5;16871:2;16863:6;16859:15;16852:30;16667:222;:::o;16895:366::-;17037:3;17058:67;17122:2;17117:3;17058:67;:::i;:::-;17051:74;;17134:93;17223:3;17134:93;:::i;:::-;17252:2;17247:3;17243:12;17236:19;;16895:366;;;:::o;17267:419::-;17433:4;17471:2;17460:9;17456:18;17448:26;;17520:9;17514:4;17510:20;17506:1;17495:9;17491:17;17484:47;17548:131;17674:4;17548:131;:::i;:::-;17540:139;;17267:419;;;:::o;17692:228::-;17832:34;17828:1;17820:6;17816:14;17809:58;17901:11;17896:2;17888:6;17884:15;17877:36;17692:228;:::o;17926:366::-;18068:3;18089:67;18153:2;18148:3;18089:67;:::i;:::-;18082:74;;18165:93;18254:3;18165:93;:::i;:::-;18283:2;18278:3;18274:12;18267:19;;17926:366;;;:::o;18298:419::-;18464:4;18502:2;18491:9;18487:18;18479:26;;18551:9;18545:4;18541:20;18537:1;18526:9;18522:17;18515:47;18579:131;18705:4;18579:131;:::i;:::-;18571:139;;18298:419;;;:::o;18723:250::-;18863:34;18859:1;18851:6;18847:14;18840:58;18932:33;18927:2;18919:6;18915:15;18908:58;18723:250;:::o;18979:366::-;19121:3;19142:67;19206:2;19201:3;19142:67;:::i;:::-;19135:74;;19218:93;19307:3;19218:93;:::i;:::-;19336:2;19331:3;19327:12;19320:19;;18979:366;;;:::o;19351:419::-;19517:4;19555:2;19544:9;19540:18;19532:26;;19604:9;19598:4;19594:20;19590:1;19579:9;19575:17;19568:47;19632:131;19758:4;19632:131;:::i;:::-;19624:139;;19351:419;;;:::o;19776:178::-;19916:30;19912:1;19904:6;19900:14;19893:54;19776:178;:::o;19960:366::-;20102:3;20123:67;20187:2;20182:3;20123:67;:::i;:::-;20116:74;;20199:93;20288:3;20199:93;:::i;:::-;20317:2;20312:3;20308:12;20301:19;;19960:366;;;:::o;20332:419::-;20498:4;20536:2;20525:9;20521:18;20513:26;;20585:9;20579:4;20575:20;20571:1;20560:9;20556:17;20549:47;20613:131;20739:4;20613:131;:::i;:::-;20605:139;;20332:419;;;:::o;20757:305::-;20797:3;20816:20;20834:1;20816:20;:::i;:::-;20811:25;;20850:20;20868:1;20850:20;:::i;:::-;20845:25;;21004:1;20936:66;20932:74;20929:1;20926:81;20923:107;;;21010:18;;:::i;:::-;20923:107;21054:1;21051;21047:9;21040:16;;20757:305;;;;:::o;21068:222::-;21208:34;21204:1;21196:6;21192:14;21185:58;21277:5;21272:2;21264:6;21260:15;21253:30;21068:222;:::o;21296:366::-;21438:3;21459:67;21523:2;21518:3;21459:67;:::i;:::-;21452:74;;21535:93;21624:3;21535:93;:::i;:::-;21653:2;21648:3;21644:12;21637:19;;21296:366;;;:::o;21668:419::-;21834:4;21872:2;21861:9;21857:18;21849:26;;21921:9;21915:4;21911:20;21907:1;21896:9;21892:17;21885:47;21949:131;22075:4;21949:131;:::i;:::-;21941:139;;21668:419;;;:::o;22093:191::-;22133:4;22153:20;22171:1;22153:20;:::i;:::-;22148:25;;22187:20;22205:1;22187:20;:::i;:::-;22182:25;;22226:1;22223;22220:8;22217:34;;;22231:18;;:::i;:::-;22217:34;22276:1;22273;22269:9;22261:17;;22093:191;;;;:::o;22290:229::-;22430:34;22426:1;22418:6;22414:14;22407:58;22499:12;22494:2;22486:6;22482:15;22475:37;22290:229;:::o;22525:366::-;22667:3;22688:67;22752:2;22747:3;22688:67;:::i;:::-;22681:74;;22764:93;22853:3;22764:93;:::i;:::-;22882:2;22877:3;22873:12;22866:19;;22525:366;;;:::o;22897:419::-;23063:4;23101:2;23090:9;23086:18;23078:26;;23150:9;23144:4;23140:20;23136:1;23125:9;23121:17;23114:47;23178:131;23304:4;23178:131;:::i;:::-;23170:139;;22897:419;;;:::o;23322:180::-;23370:77;23367:1;23360:88;23467:4;23464:1;23457:15;23491:4;23488:1;23481:15;23508:143;23565:5;23596:6;23590:13;23581:22;;23612:33;23639:5;23612:33;:::i;:::-;23508:143;;;;:::o;23657:351::-;23727:6;23776:2;23764:9;23755:7;23751:23;23747:32;23744:119;;;23782:79;;:::i;:::-;23744:119;23902:1;23927:64;23983:7;23974:6;23963:9;23959:22;23927:64;:::i;:::-;23917:74;;23873:128;23657:351;;;;:::o;24014:85::-;24059:7;24088:5;24077:16;;24014:85;;;:::o;24105:158::-;24163:9;24196:61;24214:42;24223:32;24249:5;24223:32;:::i;:::-;24214:42;:::i;:::-;24196:61;:::i;:::-;24183:74;;24105:158;;;:::o;24269:147::-;24364:45;24403:5;24364:45;:::i;:::-;24359:3;24352:58;24269:147;;:::o;24422:114::-;24489:6;24523:5;24517:12;24507:22;;24422:114;;;:::o;24542:184::-;24641:11;24675:6;24670:3;24663:19;24715:4;24710:3;24706:14;24691:29;;24542:184;;;;:::o;24732:132::-;24799:4;24822:3;24814:11;;24852:4;24847:3;24843:14;24835:22;;24732:132;;;:::o;24870:108::-;24947:24;24965:5;24947:24;:::i;:::-;24942:3;24935:37;24870:108;;:::o;24984:179::-;25053:10;25074:46;25116:3;25108:6;25074:46;:::i;:::-;25152:4;25147:3;25143:14;25129:28;;24984:179;;;;:::o;25169:113::-;25239:4;25271;25266:3;25262:14;25254:22;;25169:113;;;:::o;25318:732::-;25437:3;25466:54;25514:5;25466:54;:::i;:::-;25536:86;25615:6;25610:3;25536:86;:::i;:::-;25529:93;;25646:56;25696:5;25646:56;:::i;:::-;25725:7;25756:1;25741:284;25766:6;25763:1;25760:13;25741:284;;;25842:6;25836:13;25869:63;25928:3;25913:13;25869:63;:::i;:::-;25862:70;;25955:60;26008:6;25955:60;:::i;:::-;25945:70;;25801:224;25788:1;25785;25781:9;25776:14;;25741:284;;;25745:14;26041:3;26034:10;;25442:608;;;25318:732;;;;:::o;26056:831::-;26319:4;26357:3;26346:9;26342:19;26334:27;;26371:71;26439:1;26428:9;26424:17;26415:6;26371:71;:::i;:::-;26452:80;26528:2;26517:9;26513:18;26504:6;26452:80;:::i;:::-;26579:9;26573:4;26569:20;26564:2;26553:9;26549:18;26542:48;26607:108;26710:4;26701:6;26607:108;:::i;:::-;26599:116;;26725:72;26793:2;26782:9;26778:18;26769:6;26725:72;:::i;:::-;26807:73;26875:3;26864:9;26860:19;26851:6;26807:73;:::i;:::-;26056:831;;;;;;;;:::o;26893:180::-;26941:77;26938:1;26931:88;27038:4;27035:1;27028:15;27062:4;27059:1;27052:15;27079:185;27119:1;27136:20;27154:1;27136:20;:::i;:::-;27131:25;;27170:20;27188:1;27170:20;:::i;:::-;27165:25;;27209:1;27199:35;;27214:18;;:::i;:::-;27199:35;27256:1;27253;27249:9;27244:14;;27079:185;;;;:::o;27270:177::-;27410:29;27406:1;27398:6;27394:14;27387:53;27270:177;:::o;27453:366::-;27595:3;27616:67;27680:2;27675:3;27616:67;:::i;:::-;27609:74;;27692:93;27781:3;27692:93;:::i;:::-;27810:2;27805:3;27801:12;27794:19;;27453:366;;;:::o;27825:419::-;27991:4;28029:2;28018:9;28014:18;28006:26;;28078:9;28072:4;28068:20;28064:1;28053:9;28049:17;28042:47;28106:131;28232:4;28106:131;:::i;:::-;28098:139;;27825:419;;;:::o;28250:348::-;28290:7;28313:20;28331:1;28313:20;:::i;:::-;28308:25;;28347:20;28365:1;28347:20;:::i;:::-;28342:25;;28535:1;28467:66;28463:74;28460:1;28457:81;28452:1;28445:9;28438:17;28434:105;28431:131;;;28542:18;;:::i;:::-;28431:131;28590:1;28587;28583:9;28572:20;;28250:348;;;;:::o;28604:220::-;28744:34;28740:1;28732:6;28728:14;28721:58;28813:3;28808:2;28800:6;28796:15;28789:28;28604:220;:::o;28830:366::-;28972:3;28993:67;29057:2;29052:3;28993:67;:::i;:::-;28986:74;;29069:93;29158:3;29069:93;:::i;:::-;29187:2;29182:3;29178:12;29171:19;;28830:366;;;:::o;29202:419::-;29368:4;29406:2;29395:9;29391:18;29383:26;;29455:9;29449:4;29445:20;29441:1;29430:9;29426:17;29419:47;29483:131;29609:4;29483:131;:::i;:::-;29475:139;;29202:419;;;:::o

Swarm Source

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