ETH Price: $2,578.56 (-2.62%)

Token

Bitcoin White (BTCW)
 

Overview

Max Total Supply

21,000,000 BTCW

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
110,080.17553747 BTCW

Value
$0.00
0xa7066f84f050bc6ec3f8c4f0152658dd93940497
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:
BITCOINWHITE

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-12-03
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

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 BITCOINWHITE is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Bitcoin White";
    string private constant _symbol = "BTCW";
    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;

    // Taxes
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

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

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

    mapping(address => bool) public bots; 
    address payable private _developmentAddress = payable(0xBFADEE3f53eBD605baD45496ee33c12e1A65528b);
    address payable private _marketingAddress = payable(0xBFADEE3f53eBD605baD45496ee33c12e1A65528b);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 420000 * 10**9; 
    uint256 public _maxWalletSize = 420000 * 10**9; 
    uint256 public _swapTokensAtAmount = 210000 * 10**9; 

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

    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//swap
        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 removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
    }
    
    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

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

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

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

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            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 blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    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);
        if(_isExcludedFromFee[address(this)])
         _tOwned[address(this)] = _tOwned[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, 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(taxFee).div(100);
        uint256 tTeam = tAmount.mul(redisFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

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

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

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

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

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

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

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

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

}

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":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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"}]

6080604052664a9b63844880006000196200001b919062000757565b6000196200002a9190620007be565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573bfadee3f53ebd605bad45496ee33c12e1a65528b601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bfadee3f53ebd605bad45496ee33c12e1a65528b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016014806101000a81548160ff0219169083151502179055506000601460156101000a81548160ff0219169083151502179055506001601460166101000a81548160ff02191690831515021790555066017dfcdece400060155566017dfcdece400060165565befe6f6720006017553480156200018057600080fd5b50600062000193620006ed60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000248620006ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032757600080fd5b505afa1580156200033c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000362919062000863565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c557600080fd5b505afa158015620003da573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000400919062000863565b6040518363ffffffff1660e01b81526004016200041f929190620008a6565b602060405180830381600087803b1580156200043a57600080fd5b505af11580156200044f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000475919062000863565b601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cb620006f560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000678620006ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef664a9b6384488000604051620006de9190620008e4565b60405180910390a35062000901565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000764826200071e565b915062000771836200071e565b92508262000784576200078362000728565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cb826200071e565b9150620007d8836200071e565b925082821015620007ee57620007ed6200078f565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082b82620007fe565b9050919050565b6200083d816200081e565b81146200084957600080fd5b50565b6000815190506200085d8162000832565b92915050565b6000602082840312156200087c576200087b620007f9565b5b60006200088c848285016200084c565b91505092915050565b620008a0816200081e565b82525050565b6000604082019050620008bd600083018562000895565b620008cc602083018462000895565b9392505050565b620008de816200071e565b82525050565b6000602082019050620008fb6000830184620008d3565b92915050565b613ac080620009116000396000f3fe60806040526004361061019f5760003560e01c8063715018a6116100ec57806395d89b411161008a578063bfd7928411610064578063bfd792841461059a578063dd62ed3e146105d7578063ea1644d514610614578063f2fde38b1461063d576101a6565b806395d89b411461050957806398a5c31514610534578063a9059cbb1461055d576101a6565b80637d1db4a5116100c65780637d1db4a51461045f5780638da5cb5b1461048a5780638f70ccf7146104b55780638f9a55c0146104de576101a6565b8063715018a61461040857806374010ece1461041f578063751039fc14610448576101a6565b80632fd689e31161015957806352f7c9881161013357806352f7c988146103505780636b999053146103795780636d8aa8f8146103a257806370a08231146103cb576101a6565b80632fd689e3146102cf578063313ce567146102fa57806349bd5a5e14610325576101a6565b8062b8cf2a146101ab57806306fdde03146101d4578063095ea7b3146101ff5780631694505e1461023c57806318160ddd1461026757806323b872dd14610292576101a6565b366101a657005b600080fd5b3480156101b757600080fd5b506101d260048036038101906101cd9190612b2e565b610666565b005b3480156101e057600080fd5b506101e9610790565b6040516101f69190612bff565b60405180910390f35b34801561020b57600080fd5b5061022660048036038101906102219190612c57565b6107cd565b6040516102339190612cb2565b60405180910390f35b34801561024857600080fd5b506102516107eb565b60405161025e9190612d2c565b60405180910390f35b34801561027357600080fd5b5061027c610811565b6040516102899190612d56565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612d71565b610820565b6040516102c69190612cb2565b60405180910390f35b3480156102db57600080fd5b506102e46108f9565b6040516102f19190612d56565b60405180910390f35b34801561030657600080fd5b5061030f6108ff565b60405161031c9190612de0565b60405180910390f35b34801561033157600080fd5b5061033a610908565b6040516103479190612e0a565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612e25565b61092e565b005b34801561038557600080fd5b506103a0600480360381019061039b9190612e65565b6109e5565b005b3480156103ae57600080fd5b506103c960048036038101906103c49190612ebe565b610ad5565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e65565b610b87565b6040516103ff9190612d56565b60405180910390f35b34801561041457600080fd5b5061041d610bd8565b005b34801561042b57600080fd5b5061044660048036038101906104419190612eeb565b610d2b565b005b34801561045457600080fd5b5061045d610dca565b005b34801561046b57600080fd5b50610474610e7d565b6040516104819190612d56565b60405180910390f35b34801561049657600080fd5b5061049f610e83565b6040516104ac9190612e0a565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190612ebe565b610eac565b005b3480156104ea57600080fd5b506104f3610f5d565b6040516105009190612d56565b60405180910390f35b34801561051557600080fd5b5061051e610f63565b60405161052b9190612bff565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190612eeb565b610fa0565b005b34801561056957600080fd5b50610584600480360381019061057f9190612c57565b61103f565b6040516105919190612cb2565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190612e65565b61105d565b6040516105ce9190612cb2565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190612f18565b61107d565b60405161060b9190612d56565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190612eeb565b611104565b005b34801561064957600080fd5b50610664600480360381019061065f9190612e65565b6111a3565b005b61066e611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f290612fa4565b60405180910390fd5b60005b815181101561078c576001601060008484815181106107205761071f612fc4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061078490613022565b9150506106fe565b5050565b60606040518060400160405280600d81526020017f426974636f696e20576869746500000000000000000000000000000000000000815250905090565b60006107e16107da611365565b848461136d565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000664a9b6384488000905090565b600061082d848484611538565b6108ee84610839611365565b6108e985604051806060016040528060288152602001613a6360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061089f611365565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dbd9092919063ffffffff16565b61136d565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610936611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90612fa4565b60405180910390fd5b60006008819055506000600a819055508160098190555080600b819055505050565b6109ed611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7190612fa4565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610add611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612fa4565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b6000610bd1600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e21565b9050919050565b610be0611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490612fa4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d33611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db790612fa4565b60405180910390fd5b8060158190555050565b610dd2611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5690612fa4565b60405180910390fd5b664a9b6384488000601581905550664a9b6384488000601681905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610eb4611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890612fa4565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600481526020017f4254435700000000000000000000000000000000000000000000000000000000815250905090565b610fa8611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90612fa4565b60405180910390fd5b8060178190555050565b600061105361104c611365565b8484611538565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110c611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612fa4565b60405180910390fd5b8060168190555050565b6111ab611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90612fa4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f906130dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d49061316f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144490613201565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152b9190612d56565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f90613293565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90613325565b60405180910390fd5b6000811161165b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611652906133b7565b60405180910390fd5b611663610e83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116d157506116a1610e83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611abc5760148054906101000a900460ff1661175e576116f0610e83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175490613449565b60405180910390fd5b5b6015548111156117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906134b5565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118475750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90613547565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461193357601654816118e884610b87565b6118f29190613567565b10611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119299061362f565b60405180910390fd5b5b600061193e30610b87565b90506000601754821015905060155482106119595760155491505b8080156119735750601460159054906101000a900460ff16155b80156119cd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119e55750601460169054906101000a900460ff165b8015611a3b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a915750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ab957611a9f82611e8f565b60004790506000811115611ab757611ab647612117565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b635750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c165750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c155750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c245760009050611dab565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ce757600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d925750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611daa57600a54600c81905550600b54600d819055505b5b611db784848484612183565b50505050565b6000838311158290611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9190612bff565b60405180910390fd5b5060008385611e14919061364f565b9050809150509392505050565b6000600654821115611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f906136f5565b60405180910390fd5b6000611e726121b0565b9050611e8781846121db90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ec757611ec661298d565b5b604051908082528060200260200182016040528015611ef55781602001602082028036833780820191505090505b5090503081600081518110611f0d57611f0c612fc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe7919061372a565b81600181518110611ffb57611ffa612fc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061206230601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461136d565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120c6959493929190613850565b600060405180830381600087803b1580156120e057600080fd5b505af11580156120f4573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561217f573d6000803e3d6000fd5b5050565b8061219157612190612225565b5b61219c848484612268565b806121aa576121a9612433565b5b50505050565b60008060006121bd612447565b915091506121d481836121db90919063ffffffff16565b9250505090565b600061221d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124a3565b905092915050565b6000600c5414801561223957506000600d54145b1561224357612266565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061227a87612506565b9550955095509550955095506122d886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123b981612615565b6123c384836127ba565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124209190612d56565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000664a9b63844880009050612479664a9b63844880006006546121db90919063ffffffff16565b82101561249657600654664a9b638448800093509350505061249f565b81819350935050505b9091565b600080831182906124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e19190612bff565b60405180910390fd5b50600083856124f991906138d9565b9050809150509392505050565b60008060008060008060008060006125238a600c54600d546127f4565b92509250925060006125336121b0565b905060008060006125458e878661288a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dbd565b905092915050565b60008082846125c69190613567565b90508381101561260b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260290613956565b60405180910390fd5b8091505092915050565b600061261f6121b0565b9050600061263682846128e890919063ffffffff16565b905061268a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127b55761277181600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b790919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6127cf8260065461256d90919063ffffffff16565b6006819055506127ea816007546125b790919063ffffffff16565b6007819055505050565b6000806000806128206064612812878a6128e890919063ffffffff16565b6121db90919063ffffffff16565b9050600061284a606461283c898b6128e890919063ffffffff16565b6121db90919063ffffffff16565b9050600061287382612865858c61256d90919063ffffffff16565b61256d90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128a385886128e890919063ffffffff16565b905060006128ba86886128e890919063ffffffff16565b905060006128d1828461256d90919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156128fb576000905061295d565b600082846129099190613976565b905082848261291891906138d9565b14612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f90613a42565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129c58261297c565b810181811067ffffffffffffffff821117156129e4576129e361298d565b5b80604052505050565b60006129f7612963565b9050612a0382826129bc565b919050565b600067ffffffffffffffff821115612a2357612a2261298d565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6482612a39565b9050919050565b612a7481612a59565b8114612a7f57600080fd5b50565b600081359050612a9181612a6b565b92915050565b6000612aaa612aa584612a08565b6129ed565b90508083825260208201905060208402830185811115612acd57612acc612a34565b5b835b81811015612af65780612ae28882612a82565b845260208401935050602081019050612acf565b5050509392505050565b600082601f830112612b1557612b14612977565b5b8135612b25848260208601612a97565b91505092915050565b600060208284031215612b4457612b4361296d565b5b600082013567ffffffffffffffff811115612b6257612b61612972565b5b612b6e84828501612b00565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bb1578082015181840152602081019050612b96565b83811115612bc0576000848401525b50505050565b6000612bd182612b77565b612bdb8185612b82565b9350612beb818560208601612b93565b612bf48161297c565b840191505092915050565b60006020820190508181036000830152612c198184612bc6565b905092915050565b6000819050919050565b612c3481612c21565b8114612c3f57600080fd5b50565b600081359050612c5181612c2b565b92915050565b60008060408385031215612c6e57612c6d61296d565b5b6000612c7c85828601612a82565b9250506020612c8d85828601612c42565b9150509250929050565b60008115159050919050565b612cac81612c97565b82525050565b6000602082019050612cc76000830184612ca3565b92915050565b6000819050919050565b6000612cf2612ced612ce884612a39565b612ccd565b612a39565b9050919050565b6000612d0482612cd7565b9050919050565b6000612d1682612cf9565b9050919050565b612d2681612d0b565b82525050565b6000602082019050612d416000830184612d1d565b92915050565b612d5081612c21565b82525050565b6000602082019050612d6b6000830184612d47565b92915050565b600080600060608486031215612d8a57612d8961296d565b5b6000612d9886828701612a82565b9350506020612da986828701612a82565b9250506040612dba86828701612c42565b9150509250925092565b600060ff82169050919050565b612dda81612dc4565b82525050565b6000602082019050612df56000830184612dd1565b92915050565b612e0481612a59565b82525050565b6000602082019050612e1f6000830184612dfb565b92915050565b60008060408385031215612e3c57612e3b61296d565b5b6000612e4a85828601612c42565b9250506020612e5b85828601612c42565b9150509250929050565b600060208284031215612e7b57612e7a61296d565b5b6000612e8984828501612a82565b91505092915050565b612e9b81612c97565b8114612ea657600080fd5b50565b600081359050612eb881612e92565b92915050565b600060208284031215612ed457612ed361296d565b5b6000612ee284828501612ea9565b91505092915050565b600060208284031215612f0157612f0061296d565b5b6000612f0f84828501612c42565b91505092915050565b60008060408385031215612f2f57612f2e61296d565b5b6000612f3d85828601612a82565b9250506020612f4e85828601612a82565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f8e602083612b82565b9150612f9982612f58565b602082019050919050565b60006020820190508181036000830152612fbd81612f81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061302d82612c21565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130605761305f612ff3565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130c7602683612b82565b91506130d28261306b565b604082019050919050565b600060208201905081810360008301526130f6816130ba565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613159602483612b82565b9150613164826130fd565b604082019050919050565b600060208201905081810360008301526131888161314c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131eb602283612b82565b91506131f68261318f565b604082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061327d602583612b82565b915061328882613221565b604082019050919050565b600060208201905081810360008301526132ac81613270565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061330f602383612b82565b915061331a826132b3565b604082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133a1602983612b82565b91506133ac82613345565b604082019050919050565b600060208201905081810360008301526133d081613394565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613433603f83612b82565b915061343e826133d7565b604082019050919050565b6000602082019050818103600083015261346281613426565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061349f601c83612b82565b91506134aa82613469565b602082019050919050565b600060208201905081810360008301526134ce81613492565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613531602383612b82565b915061353c826134d5565b604082019050919050565b6000602082019050818103600083015261356081613524565b9050919050565b600061357282612c21565b915061357d83612c21565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135b2576135b1612ff3565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613619602383612b82565b9150613624826135bd565b604082019050919050565b600060208201905081810360008301526136488161360c565b9050919050565b600061365a82612c21565b915061366583612c21565b92508282101561367857613677612ff3565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136df602a83612b82565b91506136ea82613683565b604082019050919050565b6000602082019050818103600083015261370e816136d2565b9050919050565b60008151905061372481612a6b565b92915050565b6000602082840312156137405761373f61296d565b5b600061374e84828501613715565b91505092915050565b6000819050919050565b600061377c61377761377284613757565b612ccd565b612c21565b9050919050565b61378c81613761565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137c781612a59565b82525050565b60006137d983836137be565b60208301905092915050565b6000602082019050919050565b60006137fd82613792565b613807818561379d565b9350613812836137ae565b8060005b8381101561384357815161382a88826137cd565b9750613835836137e5565b925050600181019050613816565b5085935050505092915050565b600060a0820190506138656000830188612d47565b6138726020830187613783565b818103604083015261388481866137f2565b90506138936060830185612dfb565b6138a06080830184612d47565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138e482612c21565b91506138ef83612c21565b9250826138ff576138fe6138aa565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613940601b83612b82565b915061394b8261390a565b602082019050919050565b6000602082019050818103600083015261396f81613933565b9050919050565b600061398182612c21565b915061398c83612c21565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139c5576139c4612ff3565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a2c602183612b82565b9150613a37826139d0565b604082019050919050565b60006020820190508181036000830152613a5b81613a1f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208501c8fea36fe13abcba10f0eb2d547035748483d9a9146551fc4fe35209fac364736f6c63430008090033

Deployed Bytecode

0x60806040526004361061019f5760003560e01c8063715018a6116100ec57806395d89b411161008a578063bfd7928411610064578063bfd792841461059a578063dd62ed3e146105d7578063ea1644d514610614578063f2fde38b1461063d576101a6565b806395d89b411461050957806398a5c31514610534578063a9059cbb1461055d576101a6565b80637d1db4a5116100c65780637d1db4a51461045f5780638da5cb5b1461048a5780638f70ccf7146104b55780638f9a55c0146104de576101a6565b8063715018a61461040857806374010ece1461041f578063751039fc14610448576101a6565b80632fd689e31161015957806352f7c9881161013357806352f7c988146103505780636b999053146103795780636d8aa8f8146103a257806370a08231146103cb576101a6565b80632fd689e3146102cf578063313ce567146102fa57806349bd5a5e14610325576101a6565b8062b8cf2a146101ab57806306fdde03146101d4578063095ea7b3146101ff5780631694505e1461023c57806318160ddd1461026757806323b872dd14610292576101a6565b366101a657005b600080fd5b3480156101b757600080fd5b506101d260048036038101906101cd9190612b2e565b610666565b005b3480156101e057600080fd5b506101e9610790565b6040516101f69190612bff565b60405180910390f35b34801561020b57600080fd5b5061022660048036038101906102219190612c57565b6107cd565b6040516102339190612cb2565b60405180910390f35b34801561024857600080fd5b506102516107eb565b60405161025e9190612d2c565b60405180910390f35b34801561027357600080fd5b5061027c610811565b6040516102899190612d56565b60405180910390f35b34801561029e57600080fd5b506102b960048036038101906102b49190612d71565b610820565b6040516102c69190612cb2565b60405180910390f35b3480156102db57600080fd5b506102e46108f9565b6040516102f19190612d56565b60405180910390f35b34801561030657600080fd5b5061030f6108ff565b60405161031c9190612de0565b60405180910390f35b34801561033157600080fd5b5061033a610908565b6040516103479190612e0a565b60405180910390f35b34801561035c57600080fd5b5061037760048036038101906103729190612e25565b61092e565b005b34801561038557600080fd5b506103a0600480360381019061039b9190612e65565b6109e5565b005b3480156103ae57600080fd5b506103c960048036038101906103c49190612ebe565b610ad5565b005b3480156103d757600080fd5b506103f260048036038101906103ed9190612e65565b610b87565b6040516103ff9190612d56565b60405180910390f35b34801561041457600080fd5b5061041d610bd8565b005b34801561042b57600080fd5b5061044660048036038101906104419190612eeb565b610d2b565b005b34801561045457600080fd5b5061045d610dca565b005b34801561046b57600080fd5b50610474610e7d565b6040516104819190612d56565b60405180910390f35b34801561049657600080fd5b5061049f610e83565b6040516104ac9190612e0a565b60405180910390f35b3480156104c157600080fd5b506104dc60048036038101906104d79190612ebe565b610eac565b005b3480156104ea57600080fd5b506104f3610f5d565b6040516105009190612d56565b60405180910390f35b34801561051557600080fd5b5061051e610f63565b60405161052b9190612bff565b60405180910390f35b34801561054057600080fd5b5061055b60048036038101906105569190612eeb565b610fa0565b005b34801561056957600080fd5b50610584600480360381019061057f9190612c57565b61103f565b6040516105919190612cb2565b60405180910390f35b3480156105a657600080fd5b506105c160048036038101906105bc9190612e65565b61105d565b6040516105ce9190612cb2565b60405180910390f35b3480156105e357600080fd5b506105fe60048036038101906105f99190612f18565b61107d565b60405161060b9190612d56565b60405180910390f35b34801561062057600080fd5b5061063b60048036038101906106369190612eeb565b611104565b005b34801561064957600080fd5b50610664600480360381019061065f9190612e65565b6111a3565b005b61066e611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f290612fa4565b60405180910390fd5b60005b815181101561078c576001601060008484815181106107205761071f612fc4565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061078490613022565b9150506106fe565b5050565b60606040518060400160405280600d81526020017f426974636f696e20576869746500000000000000000000000000000000000000815250905090565b60006107e16107da611365565b848461136d565b6001905092915050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000664a9b6384488000905090565b600061082d848484611538565b6108ee84610839611365565b6108e985604051806060016040528060288152602001613a6360289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061089f611365565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dbd9092919063ffffffff16565b61136d565b600190509392505050565b60175481565b60006009905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610936611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ba90612fa4565b60405180910390fd5b60006008819055506000600a819055508160098190555080600b819055505050565b6109ed611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7190612fa4565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610add611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612fa4565b60405180910390fd5b80601460166101000a81548160ff02191690831515021790555050565b6000610bd1600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e21565b9050919050565b610be0611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490612fa4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d33611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db790612fa4565b60405180910390fd5b8060158190555050565b610dd2611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5690612fa4565b60405180910390fd5b664a9b6384488000601581905550664a9b6384488000601681905550565b60155481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610eb4611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3890612fa4565b60405180910390fd5b806014806101000a81548160ff02191690831515021790555050565b60165481565b60606040518060400160405280600481526020017f4254435700000000000000000000000000000000000000000000000000000000815250905090565b610fa8611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90612fa4565b60405180910390fd5b8060178190555050565b600061105361104c611365565b8484611538565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61110c611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119090612fa4565b60405180910390fd5b8060168190555050565b6111ab611365565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122f90612fa4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156112a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129f906130dd565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156113dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d49061316f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144490613201565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152b9190612d56565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156115a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159f90613293565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611618576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160f90613325565b60405180910390fd5b6000811161165b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611652906133b7565b60405180910390fd5b611663610e83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156116d157506116a1610e83565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611abc5760148054906101000a900460ff1661175e576116f0610e83565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461175d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175490613449565b60405180910390fd5b5b6015548111156117a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179a906134b5565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118475750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187d90613547565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461193357601654816118e884610b87565b6118f29190613567565b10611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119299061362f565b60405180910390fd5b5b600061193e30610b87565b90506000601754821015905060155482106119595760155491505b8080156119735750601460159054906101000a900460ff16155b80156119cd5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156119e55750601460169054906101000a900460ff165b8015611a3b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611a915750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ab957611a9f82611e8f565b60004790506000811115611ab757611ab647612117565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611b635750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611c165750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611c155750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611c245760009050611dab565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ccf5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ce757600854600c81905550600954600d819055505b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d925750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611daa57600a54600c81905550600b54600d819055505b5b611db784848484612183565b50505050565b6000838311158290611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc9190612bff565b60405180910390fd5b5060008385611e14919061364f565b9050809150509392505050565b6000600654821115611e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5f906136f5565b60405180910390fd5b6000611e726121b0565b9050611e8781846121db90919063ffffffff16565b915050919050565b6001601460156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611ec757611ec661298d565b5b604051908082528060200260200182016040528015611ef55781602001602082028036833780820191505090505b5090503081600081518110611f0d57611f0c612fc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015611faf57600080fd5b505afa158015611fc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe7919061372a565b81600181518110611ffb57611ffa612fc4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061206230601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461136d565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016120c6959493929190613850565b600060405180830381600087803b1580156120e057600080fd5b505af11580156120f4573d6000803e3d6000fd5b50505050506000601460156101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561217f573d6000803e3d6000fd5b5050565b8061219157612190612225565b5b61219c848484612268565b806121aa576121a9612433565b5b50505050565b60008060006121bd612447565b915091506121d481836121db90919063ffffffff16565b9250505090565b600061221d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124a3565b905092915050565b6000600c5414801561223957506000600d54145b1561224357612266565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061227a87612506565b9550955095509550955095506122d886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461256d90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061236d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123b981612615565b6123c384836127ba565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516124209190612d56565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000664a9b63844880009050612479664a9b63844880006006546121db90919063ffffffff16565b82101561249657600654664a9b638448800093509350505061249f565b81819350935050505b9091565b600080831182906124ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124e19190612bff565b60405180910390fd5b50600083856124f991906138d9565b9050809150509392505050565b60008060008060008060008060006125238a600c54600d546127f4565b92509250925060006125336121b0565b905060008060006125458e878661288a565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006125af83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dbd565b905092915050565b60008082846125c69190613567565b90508381101561260b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260290613956565b60405180910390fd5b8091505092915050565b600061261f6121b0565b9050600061263682846128e890919063ffffffff16565b905061268a81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156127b55761277181600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b790919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b6127cf8260065461256d90919063ffffffff16565b6006819055506127ea816007546125b790919063ffffffff16565b6007819055505050565b6000806000806128206064612812878a6128e890919063ffffffff16565b6121db90919063ffffffff16565b9050600061284a606461283c898b6128e890919063ffffffff16565b6121db90919063ffffffff16565b9050600061287382612865858c61256d90919063ffffffff16565b61256d90919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806128a385886128e890919063ffffffff16565b905060006128ba86886128e890919063ffffffff16565b905060006128d1828461256d90919063ffffffff16565b905082818395509550955050505093509350939050565b6000808314156128fb576000905061295d565b600082846129099190613976565b905082848261291891906138d9565b14612958576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294f90613a42565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6129c58261297c565b810181811067ffffffffffffffff821117156129e4576129e361298d565b5b80604052505050565b60006129f7612963565b9050612a0382826129bc565b919050565b600067ffffffffffffffff821115612a2357612a2261298d565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a6482612a39565b9050919050565b612a7481612a59565b8114612a7f57600080fd5b50565b600081359050612a9181612a6b565b92915050565b6000612aaa612aa584612a08565b6129ed565b90508083825260208201905060208402830185811115612acd57612acc612a34565b5b835b81811015612af65780612ae28882612a82565b845260208401935050602081019050612acf565b5050509392505050565b600082601f830112612b1557612b14612977565b5b8135612b25848260208601612a97565b91505092915050565b600060208284031215612b4457612b4361296d565b5b600082013567ffffffffffffffff811115612b6257612b61612972565b5b612b6e84828501612b00565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612bb1578082015181840152602081019050612b96565b83811115612bc0576000848401525b50505050565b6000612bd182612b77565b612bdb8185612b82565b9350612beb818560208601612b93565b612bf48161297c565b840191505092915050565b60006020820190508181036000830152612c198184612bc6565b905092915050565b6000819050919050565b612c3481612c21565b8114612c3f57600080fd5b50565b600081359050612c5181612c2b565b92915050565b60008060408385031215612c6e57612c6d61296d565b5b6000612c7c85828601612a82565b9250506020612c8d85828601612c42565b9150509250929050565b60008115159050919050565b612cac81612c97565b82525050565b6000602082019050612cc76000830184612ca3565b92915050565b6000819050919050565b6000612cf2612ced612ce884612a39565b612ccd565b612a39565b9050919050565b6000612d0482612cd7565b9050919050565b6000612d1682612cf9565b9050919050565b612d2681612d0b565b82525050565b6000602082019050612d416000830184612d1d565b92915050565b612d5081612c21565b82525050565b6000602082019050612d6b6000830184612d47565b92915050565b600080600060608486031215612d8a57612d8961296d565b5b6000612d9886828701612a82565b9350506020612da986828701612a82565b9250506040612dba86828701612c42565b9150509250925092565b600060ff82169050919050565b612dda81612dc4565b82525050565b6000602082019050612df56000830184612dd1565b92915050565b612e0481612a59565b82525050565b6000602082019050612e1f6000830184612dfb565b92915050565b60008060408385031215612e3c57612e3b61296d565b5b6000612e4a85828601612c42565b9250506020612e5b85828601612c42565b9150509250929050565b600060208284031215612e7b57612e7a61296d565b5b6000612e8984828501612a82565b91505092915050565b612e9b81612c97565b8114612ea657600080fd5b50565b600081359050612eb881612e92565b92915050565b600060208284031215612ed457612ed361296d565b5b6000612ee284828501612ea9565b91505092915050565b600060208284031215612f0157612f0061296d565b5b6000612f0f84828501612c42565b91505092915050565b60008060408385031215612f2f57612f2e61296d565b5b6000612f3d85828601612a82565b9250506020612f4e85828601612a82565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f8e602083612b82565b9150612f9982612f58565b602082019050919050565b60006020820190508181036000830152612fbd81612f81565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061302d82612c21565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156130605761305f612ff3565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130c7602683612b82565b91506130d28261306b565b604082019050919050565b600060208201905081810360008301526130f6816130ba565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613159602483612b82565b9150613164826130fd565b604082019050919050565b600060208201905081810360008301526131888161314c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006131eb602283612b82565b91506131f68261318f565b604082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061327d602583612b82565b915061328882613221565b604082019050919050565b600060208201905081810360008301526132ac81613270565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061330f602383612b82565b915061331a826132b3565b604082019050919050565b6000602082019050818103600083015261333e81613302565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133a1602983612b82565b91506133ac82613345565b604082019050919050565b600060208201905081810360008301526133d081613394565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613433603f83612b82565b915061343e826133d7565b604082019050919050565b6000602082019050818103600083015261346281613426565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061349f601c83612b82565b91506134aa82613469565b602082019050919050565b600060208201905081810360008301526134ce81613492565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613531602383612b82565b915061353c826134d5565b604082019050919050565b6000602082019050818103600083015261356081613524565b9050919050565b600061357282612c21565b915061357d83612c21565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156135b2576135b1612ff3565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613619602383612b82565b9150613624826135bd565b604082019050919050565b600060208201905081810360008301526136488161360c565b9050919050565b600061365a82612c21565b915061366583612c21565b92508282101561367857613677612ff3565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006136df602a83612b82565b91506136ea82613683565b604082019050919050565b6000602082019050818103600083015261370e816136d2565b9050919050565b60008151905061372481612a6b565b92915050565b6000602082840312156137405761373f61296d565b5b600061374e84828501613715565b91505092915050565b6000819050919050565b600061377c61377761377284613757565b612ccd565b612c21565b9050919050565b61378c81613761565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6137c781612a59565b82525050565b60006137d983836137be565b60208301905092915050565b6000602082019050919050565b60006137fd82613792565b613807818561379d565b9350613812836137ae565b8060005b8381101561384357815161382a88826137cd565b9750613835836137e5565b925050600181019050613816565b5085935050505092915050565b600060a0820190506138656000830188612d47565b6138726020830187613783565b818103604083015261388481866137f2565b90506138936060830185612dfb565b6138a06080830184612d47565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138e482612c21565b91506138ef83612c21565b9250826138ff576138fe6138aa565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613940601b83612b82565b915061394b8261390a565b602082019050919050565b6000602082019050818103600083015261396f81613933565b9050919050565b600061398182612c21565b915061398c83612c21565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156139c5576139c4612ff3565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a2c602183612b82565b9150613a37826139d0565b604082019050919050565b60006020820190508181036000830152613a5b81613a1f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212208501c8fea36fe13abcba10f0eb2d547035748483d9a9146551fc4fe35209fac364736f6c63430008090033

Deployed Bytecode Sourcemap

4068:12839:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12368:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6553:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7478:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5386:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6830:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7679:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5689:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6739:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5434:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16069:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12545:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16531:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6933:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1555:148;;;;;;;;;;;;;:::i;:::-;;16671:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8691:118;;;;;;;;;;;;;:::i;:::-;;5583:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12259:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5635:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6644:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16340:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7079:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5134:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7286:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16787:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1711:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12368:169;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12444:9:::1;12439:91;12463:5;:12;12459:1;:16;12439:91;;;12514:4;12497;:14;12502:5;12508:1;12502:8;;;;;;;;:::i;:::-;;;;;;;;12497:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12477:3;;;;;:::i;:::-;;;;12439:91;;;;12368:169:::0;:::o;6553:83::-;6590:13;6623:5;;;;;;;;;;;;;;;;;6616:12;;6553:83;:::o;7478:193::-;7580:4;7602:39;7611:12;:10;:12::i;:::-;7625:7;7634:6;7602:8;:39::i;:::-;7659:4;7652:11;;7478:193;;;;:::o;5386:41::-;;;;;;;;;;;;;:::o;6830:95::-;6883:7;4622:16;6903:14;;6830:95;:::o;7679:446::-;7811:4;7828:36;7838:6;7846:9;7857:6;7828:9;:36::i;:::-;7875:220;7898:6;7919:12;:10;:12::i;:::-;7946:138;8002:6;7946:138;;;;;;;;;;;;;;;;;:11;:19;7958:6;7946:19;;;;;;;;;;;;;;;:33;7966:12;:10;:12::i;:::-;7946:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7875:8;:220::i;:::-;8113:4;8106:11;;7679:446;;;;;:::o;5689:51::-;;;;:::o;6739:83::-;6780:5;4298:1;6798:16;;6739:83;:::o;5434:28::-;;;;;;;;;;;;;:::o;16069:219::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16173:1:::1;16156:14;:18;;;;16203:1;16185:15;:19;;;;16230:11;16215:12;:26;;;;16268:12;16252:13;:28;;;;16069:219:::0;;:::o;12545:92::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12624:5:::1;12609:4;:12;12614:6;12609:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;12545:92:::0;:::o;16531:101::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16612:12:::1;16598:11;;:26;;;;;;;;;;;;;;;;;;16531:101:::0;:::o;6933:138::-;6999:7;7026:37;7046:7;:16;7054:7;7046:16;;;;;;;;;;;;;;;;7026:19;:37::i;:::-;7019:44;;6933:138;;;:::o;1555:148::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1662:1:::1;1625:40;;1646:6;::::0;::::1;;;;;;;;1625:40;;;;;;;;;;;;1693:1;1676:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1555:148::o:0;16671:108::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16760:11:::1;16745:12;:26;;;;16671:108:::0;:::o;8691:118::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4622:16:::1;8744:12;:22;;;;4622:16;8777:14;:24;;;;8691:118::o:0;5583:44::-;;;;:::o;1341:79::-;1379:7;1406:6;;;;;;;;;;;1399:13;;1341:79;:::o;12259:101::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12340:12:::1;12326:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;12259:101:::0;:::o;5635:46::-;;;;:::o;6644:87::-;6683:13;6716:7;;;;;;;;;;;;;;;;;6709:14;;6644:87;:::o;16340:139::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16453:18:::1;16431:19;:40;;;;16340:139:::0;:::o;7079:199::-;7184:4;7206:42;7216:12;:10;:12::i;:::-;7230:9;7241:6;7206:9;:42::i;:::-;7266:4;7259:11;;7079:199;;;;:::o;5134:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;7286:184::-;7403:7;7435:11;:18;7447:5;7435:18;;;;;;;;;;;;;;;:27;7454:7;7435:27;;;;;;;;;;;;;;;;7428:34;;7286:184;;;;:::o;16787:115::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16881:13:::1;16864:14;:30;;;;16787:115:::0;:::o;1711:244::-;1478:12;:10;:12::i;:::-;1468:22;;:6;;;;;;;;;;:22;;;1460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1820:1:::1;1800:22;;:8;:22;;;;1792:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1910:8;1881:38;;1902:6;::::0;::::1;;;;;;;;1881:38;;;;;;;;;;;;1939:8;1930:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1711:244:::0;:::o;100:98::-;153:7;180:10;173:17;;100:98;:::o;8946:369::-;9090:1;9073:19;;:5;:19;;;;9065:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9171:1;9152:21;;:7;:21;;;;9144:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9253:6;9223:11;:18;9235:5;9223:18;;;;;;;;;;;;;;;:27;9242:7;9223:27;;;;;;;;;;;;;;;:36;;;;9291:7;9275:32;;9284:5;9275:32;;;9300:6;9275:32;;;;;;:::i;:::-;;;;;;;;8946:369;;;:::o;9323:2330::-;9461:1;9445:18;;:4;:18;;;;9437:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9538:1;9524:16;;:2;:16;;;;9516:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9608:1;9599:6;:10;9591:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9680:7;:5;:7::i;:::-;9672:15;;:4;:15;;;;:32;;;;;9697:7;:5;:7::i;:::-;9691:13;;:2;:13;;;;9672:32;9668:1259;;;9761:11;;;;;;;;;;9756:144;;9809:7;:5;:7::i;:::-;9801:15;;:4;:15;;;9793:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9756:144;9934:12;;9924:6;:22;;9916:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10003:4;:10;10008:4;10003:10;;;;;;;;;;;;;;;;;;;;;;;;;10002:11;:24;;;;;10018:4;:8;10023:2;10018:8;;;;;;;;;;;;;;;;;;;;;;;;;10017:9;10002:24;9994:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10092:13;;;;;;;;;;;10086:19;;:2;:19;;;10083:146;;10159:14;;10150:6;10134:13;10144:2;10134:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10126:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10083:146;10245:28;10276:24;10294:4;10276:9;:24::i;:::-;10245:55;;10315:12;10354:19;;10330:20;:43;;10315:58;;10417:12;;10393:20;:36;10390:124;;10486:12;;10463:35;;10390:124;10534:7;:18;;;;;10546:6;;;;;;;;;;;10545:7;10534:18;:43;;;;;10564:13;;;;;;;;;;;10556:21;;:4;:21;;;;10534:43;:58;;;;;10581:11;;;;;;;;;;;10534:58;:87;;;;;10597:18;:24;10616:4;10597:24;;;;;;;;;;;;;;;;;;;;;;;;;10596:25;10534:87;:114;;;;;10626:18;:22;10645:2;10626:22;;;;;;;;;;;;;;;;;;;;;;;;;10625:23;10534:114;10530:386;;;10669:38;10686:20;10669:16;:38::i;:::-;10726:26;10755:21;10726:50;;10820:1;10799:18;:22;10795:106;;;10846:35;10859:21;10846:12;:35::i;:::-;10795:106;10650:266;10530:386;9706:1221;;9668:1259;10939:12;10954:4;10939:19;;11003:18;:24;11022:4;11003:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11031:18;:22;11050:2;11031:22;;;;;;;;;;;;;;;;;;;;;;;;;11003:50;11002:102;;;;11067:13;;;;;;;;;;;11059:21;;:4;:21;;;;:44;;;;;11090:13;;;;;;;;;;;11084:19;;:2;:19;;;;11059:44;11002:102;10998:594;;;11131:5;11121:15;;10998:594;;;11214:13;;;;;;;;;;;11206:21;;:4;:21;;;:55;;;;;11245:15;;;;;;;;;;;11231:30;;:2;:30;;;;11206:55;11203:162;;;11294:14;;11282:9;:26;;;;11337:12;;11327:7;:22;;;;11203:162;11424:13;;;;;;;;;;;11418:19;;:2;:19;;;:55;;;;;11457:15;;;;;;;;;;;11441:32;;:4;:32;;;;11418:55;11414:165;;;11506:15;;11494:9;:27;;;;11550:13;;11540:7;:23;;;;11414:165;10998:594;11604:41;11619:4;11625:2;11629:6;11637:7;11604:14;:41::i;:::-;9426:2227;9323:2330;;;:::o;2319:224::-;2439:7;2472:1;2467;:6;;2475:12;2459:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2499:9;2515:1;2511;:5;;;;:::i;:::-;2499:17;;2534:1;2527:8;;;2319:224;;;;;:::o;8133:323::-;8228:7;8286;;8275;:18;;8253:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8374:19;8396:10;:8;:10::i;:::-;8374:32;;8424:24;8436:11;8424:7;:11;;:24;;;;:::i;:::-;8417:31;;;8133:323;;;:::o;11661:483::-;5844:4;5835:6;;:13;;;;;;;;;;;;;;;;;;11739:21:::1;11777:1;11763:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11739:40;;11808:4;11790;11795:1;11790:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11834:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11824:4;11829:1;11824:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11867:62;11884:4;11899:15;;;;;;;;;;;11917:11;11867:8;:62::i;:::-;11940:15;;;;;;;;;;;:66;;;12021:11;12047:1;12063:4;12090;12110:15;11940:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11728:416;5880:5:::0;5871:6;;:14;;;;;;;;;;;;;;;;;;11661:483;:::o;12152:99::-;12209:17;;;;;;;;;;;:26;;:34;12236:6;12209:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12152:99;:::o;12645:282::-;12801:7;12796:28;;12810:14;:12;:14::i;:::-;12796:28;12835:44;12853:6;12861:9;12872:6;12835:17;:44::i;:::-;12895:7;12890:29;;12904:15;:13;:15::i;:::-;12890:29;12645:282;;;;:::o;15632:164::-;15674:7;15695:15;15712;15731:19;:17;:19::i;:::-;15694:56;;;;15768:20;15780:7;15768;:11;;:20;;;;:::i;:::-;15761:27;;;;15632:164;:::o;2805:132::-;2863:7;2890:39;2894:1;2897;2890:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2883:46;;2805:132;;;;:::o;8464:219::-;8524:1;8511:9;;:14;:30;;;;;8540:1;8529:7;;:12;8511:30;8507:43;;;8543:7;;8507:43;8582:9;;8562:17;:29;;;;8620:7;;8602:15;:25;;;;8652:1;8640:9;:13;;;;8674:1;8664:7;:11;;;;8464:219;:::o;12935:610::-;13082:15;13112:23;13150:12;13177:23;13215:12;13242:13;13269:19;13280:7;13269:10;:19::i;:::-;13067:221;;;;;;;;;;;;13317:28;13337:7;13317;:15;13325:6;13317:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13299:7;:15;13307:6;13299:15;;;;;;;;;;;;;;;:46;;;;13377:39;13400:15;13377:7;:18;13385:9;13377:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13356:7;:18;13364:9;13356:18;;;;;;;;;;;;;;;:60;;;;13427:16;13437:5;13427:9;:16::i;:::-;13454:23;13466:4;13472;13454:11;:23::i;:::-;13510:9;13493:44;;13502:6;13493:44;;;13521:15;13493:44;;;;;;:::i;:::-;;;;;;;;13056:489;;;;;;12935:610;;;:::o;8821:117::-;8877:17;;8865:9;:29;;;;8915:15;;8905:7;:25;;;;8821:117::o;15804:257::-;15855:7;15864;15884:15;15902:7;;15884:25;;15920:15;4622:16;15920:25;;15970:20;4622:16;15970:7;;:11;;:20;;;;:::i;:::-;15960:7;:30;15956:61;;;16000:7;;4622:16;15992:25;;;;;;;;15956:61;16036:7;16045;16028:25;;;;;;15804:257;;;:::o;2945:223::-;3065:7;3097:1;3093;:5;3100:12;3085:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3124:9;3140:1;3136;:5;;;;:::i;:::-;3124:17;;3159:1;3152:8;;;2945:223;;;;;:::o;14081:608::-;14181:7;14203;14225;14247;14269;14291;14327:23;14352:12;14366:13;14396:40;14408:7;14417:9;;14428:7;;14396:11;:40::i;:::-;14326:110;;;;;;14447:19;14469:10;:8;:10::i;:::-;14447:32;;14491:15;14508:23;14533:12;14562:39;14574:7;14583:4;14589:11;14562;:39::i;:::-;14490:111;;;;;;14620:7;14629:15;14646:4;14652:15;14669:4;14675:5;14612:69;;;;;;;;;;;;;;;;;;;14081:608;;;;;;;:::o;2175:136::-;2233:7;2260:43;2264:1;2267;2260:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2253:50;;2175:136;;;;:::o;1988:179::-;2046:7;2066:9;2082:1;2078;:5;;;;:::i;:::-;2066:17;;2107:1;2102;:6;;2094:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2158:1;2151:8;;;1988:179;;;;:::o;13553:328::-;13606:19;13628:10;:8;:10::i;:::-;13606:32;;13649:13;13665:22;13675:11;13665:5;:9;;:22;;;;:::i;:::-;13649:38;;13723:33;13750:5;13723:7;:22;13739:4;13723:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13698:7;:22;13714:4;13698:22;;;;;;;;;;;;;;;:58;;;;13770:18;:33;13797:4;13770:33;;;;;;;;;;;;;;;;;;;;;;;;;13767:106;;;13840:33;13867:5;13840:7;:22;13856:4;13840:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13815:7;:22;13831:4;13815:22;;;;;;;;;;;;;;;:58;;;;13767:106;13595:286;;13553:328;:::o;13889:147::-;13967:17;13979:4;13967:7;;:11;;:17;;;;:::i;:::-;13957:7;:27;;;;14008:20;14023:4;14008:10;;:14;;:20;;;;:::i;:::-;13995:10;:33;;;;13889:147;;:::o;14697:469::-;14866:7;14888;14910;14945:12;14960:28;14984:3;14960:19;14972:6;14960:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14945:43;;14999:13;15015:30;15041:3;15015:21;15027:8;15015:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14999:46;;15056:23;15082:28;15104:5;15082:17;15094:4;15082:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15056:54;;15129:15;15146:4;15152:5;15121:37;;;;;;;;;14697:469;;;;;;;:::o;15174:450::-;15344:7;15366;15388;15423:15;15441:24;15453:11;15441:7;:11;;:24;;;;:::i;:::-;15423:42;;15476:12;15491:21;15500:11;15491:4;:8;;:21;;;;:::i;:::-;15476:36;;15523:23;15549:17;15561:4;15549:7;:11;;:17;;;;:::i;:::-;15523:43;;15585:7;15594:15;15611:4;15577:39;;;;;;;;;15174:450;;;;;;;:::o;2551:246::-;2609:7;2638:1;2633;:6;2629:47;;;2663:1;2656:8;;;;2629:47;2686:9;2702:1;2698;:5;;;;:::i;:::-;2686:17;;2731:1;2726;2722;:5;;;;:::i;:::-;:10;2714:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2788:1;2781:8;;;2551:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:307::-;4139:1;4149:113;4163:6;4160:1;4157:13;4149:113;;;4248:1;4243:3;4239:11;4233:18;4229:1;4224:3;4220:11;4213:39;4185:2;4182:1;4178:10;4173:15;;4149:113;;;4280:6;4277:1;4274:13;4271:101;;;4360:1;4351:6;4346:3;4342:16;4335:27;4271:101;4120:258;4071:307;;;:::o;4384:364::-;4472:3;4500:39;4533:5;4500:39;:::i;:::-;4555:71;4619:6;4614:3;4555:71;:::i;:::-;4548:78;;4635:52;4680:6;4675:3;4668:4;4661:5;4657:16;4635:52;:::i;:::-;4712:29;4734:6;4712:29;:::i;:::-;4707:3;4703:39;4696:46;;4476:272;4384:364;;;;:::o;4754:313::-;4867:4;4905:2;4894:9;4890:18;4882:26;;4954:9;4948:4;4944:20;4940:1;4929:9;4925:17;4918:47;4982:78;5055:4;5046:6;4982:78;:::i;:::-;4974:86;;4754:313;;;;:::o;5073:77::-;5110:7;5139:5;5128:16;;5073:77;;;:::o;5156:122::-;5229:24;5247:5;5229:24;:::i;:::-;5222:5;5219:35;5209:63;;5268:1;5265;5258:12;5209:63;5156:122;:::o;5284:139::-;5330:5;5368:6;5355:20;5346:29;;5384:33;5411:5;5384:33;:::i;:::-;5284:139;;;;:::o;5429:474::-;5497:6;5505;5554:2;5542:9;5533:7;5529:23;5525:32;5522:119;;;5560:79;;:::i;:::-;5522:119;5680:1;5705:53;5750:7;5741:6;5730:9;5726:22;5705:53;:::i;:::-;5695:63;;5651:117;5807:2;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5778:118;5429:474;;;;;:::o;5909:90::-;5943:7;5986:5;5979:13;5972:21;5961:32;;5909:90;;;:::o;6005:109::-;6086:21;6101:5;6086:21;:::i;:::-;6081:3;6074:34;6005:109;;:::o;6120:210::-;6207:4;6245:2;6234:9;6230:18;6222:26;;6258:65;6320:1;6309:9;6305:17;6296:6;6258:65;:::i;:::-;6120:210;;;;:::o;6336:60::-;6364:3;6385:5;6378:12;;6336:60;;;:::o;6402:142::-;6452:9;6485:53;6503:34;6512:24;6530:5;6512:24;:::i;:::-;6503:34;:::i;:::-;6485:53;:::i;:::-;6472:66;;6402:142;;;:::o;6550:126::-;6600:9;6633:37;6664:5;6633:37;:::i;:::-;6620:50;;6550:126;;;:::o;6682:152::-;6758:9;6791:37;6822:5;6791:37;:::i;:::-;6778:50;;6682:152;;;:::o;6840:183::-;6953:63;7010:5;6953:63;:::i;:::-;6948:3;6941:76;6840:183;;:::o;7029:274::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:97;7293:1;7282:9;7278:17;7269:6;7199:97;:::i;:::-;7029:274;;;;:::o;7309:118::-;7396:24;7414:5;7396:24;:::i;:::-;7391:3;7384:37;7309:118;;:::o;7433:222::-;7526:4;7564:2;7553:9;7549:18;7541:26;;7577:71;7645:1;7634:9;7630:17;7621:6;7577:71;:::i;:::-;7433:222;;;;:::o;7661:619::-;7738:6;7746;7754;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;8056:2;8082:53;8127:7;8118:6;8107:9;8103:22;8082:53;:::i;:::-;8072:63;;8027:118;8184:2;8210:53;8255:7;8246:6;8235:9;8231:22;8210:53;:::i;:::-;8200:63;;8155:118;7661:619;;;;;:::o;8286:86::-;8321:7;8361:4;8354:5;8350:16;8339:27;;8286:86;;;:::o;8378:112::-;8461:22;8477:5;8461:22;:::i;:::-;8456:3;8449:35;8378:112;;:::o;8496:214::-;8585:4;8623:2;8612:9;8608:18;8600:26;;8636:67;8700:1;8689:9;8685:17;8676:6;8636:67;:::i;:::-;8496:214;;;;:::o;8716:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:474::-;9136:6;9144;9193:2;9181:9;9172:7;9168:23;9164:32;9161:119;;;9199:79;;:::i;:::-;9161:119;9319:1;9344:53;9389:7;9380:6;9369:9;9365:22;9344:53;:::i;:::-;9334:63;;9290:117;9446:2;9472:53;9517:7;9508:6;9497:9;9493:22;9472:53;:::i;:::-;9462:63;;9417:118;9068:474;;;;;:::o;9548:329::-;9607:6;9656:2;9644:9;9635:7;9631:23;9627:32;9624:119;;;9662:79;;:::i;:::-;9624:119;9782:1;9807:53;9852:7;9843:6;9832:9;9828:22;9807:53;:::i;:::-;9797:63;;9753:117;9548:329;;;;:::o;9883:116::-;9953:21;9968:5;9953:21;:::i;:::-;9946:5;9943:32;9933:60;;9989:1;9986;9979:12;9933:60;9883:116;:::o;10005:133::-;10048:5;10086:6;10073:20;10064:29;;10102:30;10126:5;10102:30;:::i;:::-;10005:133;;;;:::o;10144:323::-;10200:6;10249:2;10237:9;10228:7;10224:23;10220:32;10217:119;;;10255:79;;:::i;:::-;10217:119;10375:1;10400:50;10442:7;10433:6;10422:9;10418:22;10400:50;:::i;:::-;10390:60;;10346:114;10144:323;;;;:::o;10473:329::-;10532:6;10581:2;10569:9;10560:7;10556:23;10552:32;10549:119;;;10587:79;;:::i;:::-;10549:119;10707:1;10732:53;10777:7;10768:6;10757:9;10753:22;10732:53;:::i;:::-;10722:63;;10678:117;10473:329;;;;:::o;10808:474::-;10876:6;10884;10933:2;10921:9;10912:7;10908:23;10904:32;10901:119;;;10939:79;;:::i;:::-;10901:119;11059:1;11084:53;11129:7;11120:6;11109:9;11105:22;11084:53;:::i;:::-;11074:63;;11030:117;11186:2;11212:53;11257:7;11248:6;11237:9;11233:22;11212:53;:::i;:::-;11202:63;;11157:118;10808:474;;;;;:::o;11288:182::-;11428:34;11424:1;11416:6;11412:14;11405:58;11288:182;:::o;11476:366::-;11618:3;11639:67;11703:2;11698:3;11639:67;:::i;:::-;11632:74;;11715:93;11804:3;11715:93;:::i;:::-;11833:2;11828:3;11824:12;11817:19;;11476:366;;;:::o;11848:419::-;12014:4;12052:2;12041:9;12037:18;12029:26;;12101:9;12095:4;12091:20;12087:1;12076:9;12072:17;12065:47;12129:131;12255:4;12129:131;:::i;:::-;12121:139;;11848:419;;;:::o;12273:180::-;12321:77;12318:1;12311:88;12418:4;12415:1;12408:15;12442:4;12439:1;12432:15;12459:180;12507:77;12504:1;12497:88;12604:4;12601:1;12594:15;12628:4;12625:1;12618:15;12645:233;12684:3;12707:24;12725:5;12707:24;:::i;:::-;12698:33;;12753:66;12746:5;12743:77;12740:103;;;12823:18;;:::i;:::-;12740:103;12870:1;12863:5;12859:13;12852:20;;12645:233;;;:::o;12884:225::-;13024:34;13020:1;13012:6;13008:14;13001:58;13093:8;13088:2;13080:6;13076:15;13069:33;12884:225;:::o;13115:366::-;13257:3;13278:67;13342:2;13337:3;13278:67;:::i;:::-;13271:74;;13354:93;13443:3;13354:93;:::i;:::-;13472:2;13467:3;13463:12;13456:19;;13115:366;;;:::o;13487:419::-;13653:4;13691:2;13680:9;13676:18;13668:26;;13740:9;13734:4;13730:20;13726:1;13715:9;13711:17;13704:47;13768:131;13894:4;13768:131;:::i;:::-;13760:139;;13487:419;;;:::o;13912:223::-;14052:34;14048:1;14040:6;14036:14;14029:58;14121:6;14116:2;14108:6;14104:15;14097:31;13912:223;:::o;14141:366::-;14283:3;14304:67;14368:2;14363:3;14304:67;:::i;:::-;14297:74;;14380:93;14469:3;14380:93;:::i;:::-;14498:2;14493:3;14489:12;14482:19;;14141:366;;;:::o;14513:419::-;14679:4;14717:2;14706:9;14702:18;14694:26;;14766:9;14760:4;14756:20;14752:1;14741:9;14737:17;14730:47;14794:131;14920:4;14794:131;:::i;:::-;14786:139;;14513:419;;;:::o;14938:221::-;15078:34;15074:1;15066:6;15062:14;15055:58;15147:4;15142:2;15134:6;15130:15;15123:29;14938:221;:::o;15165:366::-;15307:3;15328:67;15392:2;15387:3;15328:67;:::i;:::-;15321:74;;15404:93;15493:3;15404:93;:::i;:::-;15522:2;15517:3;15513:12;15506:19;;15165:366;;;:::o;15537:419::-;15703:4;15741:2;15730:9;15726:18;15718:26;;15790:9;15784:4;15780:20;15776:1;15765:9;15761:17;15754:47;15818:131;15944:4;15818:131;:::i;:::-;15810:139;;15537:419;;;:::o;15962:224::-;16102:34;16098:1;16090:6;16086:14;16079:58;16171:7;16166:2;16158:6;16154:15;16147:32;15962:224;:::o;16192:366::-;16334:3;16355:67;16419:2;16414:3;16355:67;:::i;:::-;16348:74;;16431:93;16520:3;16431:93;:::i;:::-;16549:2;16544:3;16540:12;16533:19;;16192:366;;;:::o;16564:419::-;16730:4;16768:2;16757:9;16753:18;16745:26;;16817:9;16811:4;16807:20;16803:1;16792:9;16788:17;16781:47;16845:131;16971:4;16845:131;:::i;:::-;16837:139;;16564:419;;;:::o;16989:222::-;17129:34;17125:1;17117:6;17113:14;17106:58;17198:5;17193:2;17185:6;17181:15;17174:30;16989:222;:::o;17217:366::-;17359:3;17380:67;17444:2;17439:3;17380:67;:::i;:::-;17373:74;;17456:93;17545:3;17456:93;:::i;:::-;17574:2;17569:3;17565:12;17558:19;;17217:366;;;:::o;17589:419::-;17755:4;17793:2;17782:9;17778:18;17770:26;;17842:9;17836:4;17832:20;17828:1;17817:9;17813:17;17806:47;17870:131;17996:4;17870:131;:::i;:::-;17862:139;;17589:419;;;:::o;18014:228::-;18154:34;18150:1;18142:6;18138:14;18131:58;18223:11;18218:2;18210:6;18206:15;18199:36;18014:228;:::o;18248:366::-;18390:3;18411:67;18475:2;18470:3;18411:67;:::i;:::-;18404:74;;18487:93;18576:3;18487:93;:::i;:::-;18605:2;18600:3;18596:12;18589:19;;18248:366;;;:::o;18620:419::-;18786:4;18824:2;18813:9;18809:18;18801:26;;18873:9;18867:4;18863:20;18859:1;18848:9;18844:17;18837:47;18901:131;19027:4;18901:131;:::i;:::-;18893:139;;18620:419;;;:::o;19045:250::-;19185:34;19181:1;19173:6;19169:14;19162:58;19254:33;19249:2;19241:6;19237:15;19230:58;19045:250;:::o;19301:366::-;19443:3;19464:67;19528:2;19523:3;19464:67;:::i;:::-;19457:74;;19540:93;19629:3;19540:93;:::i;:::-;19658:2;19653:3;19649:12;19642:19;;19301:366;;;:::o;19673:419::-;19839:4;19877:2;19866:9;19862:18;19854:26;;19926:9;19920:4;19916:20;19912:1;19901:9;19897:17;19890:47;19954:131;20080:4;19954:131;:::i;:::-;19946:139;;19673:419;;;:::o;20098:178::-;20238:30;20234:1;20226:6;20222:14;20215:54;20098:178;:::o;20282:366::-;20424:3;20445:67;20509:2;20504:3;20445:67;:::i;:::-;20438:74;;20521:93;20610:3;20521:93;:::i;:::-;20639:2;20634:3;20630:12;20623:19;;20282:366;;;:::o;20654:419::-;20820:4;20858:2;20847:9;20843:18;20835:26;;20907:9;20901:4;20897:20;20893:1;20882:9;20878:17;20871:47;20935:131;21061:4;20935:131;:::i;:::-;20927:139;;20654:419;;;:::o;21079:222::-;21219:34;21215:1;21207:6;21203:14;21196:58;21288:5;21283:2;21275:6;21271:15;21264:30;21079:222;:::o;21307:366::-;21449:3;21470:67;21534:2;21529:3;21470:67;:::i;:::-;21463:74;;21546:93;21635:3;21546:93;:::i;:::-;21664:2;21659:3;21655:12;21648:19;;21307:366;;;:::o;21679:419::-;21845:4;21883:2;21872:9;21868:18;21860:26;;21932:9;21926:4;21922:20;21918:1;21907:9;21903:17;21896:47;21960:131;22086:4;21960:131;:::i;:::-;21952:139;;21679:419;;;:::o;22104:305::-;22144:3;22163:20;22181:1;22163:20;:::i;:::-;22158:25;;22197:20;22215:1;22197:20;:::i;:::-;22192:25;;22351:1;22283:66;22279:74;22276:1;22273:81;22270:107;;;22357:18;;:::i;:::-;22270:107;22401:1;22398;22394:9;22387:16;;22104:305;;;;:::o;22415:222::-;22555:34;22551:1;22543:6;22539:14;22532:58;22624:5;22619:2;22611:6;22607:15;22600:30;22415:222;:::o;22643:366::-;22785:3;22806:67;22870:2;22865:3;22806:67;:::i;:::-;22799:74;;22882:93;22971:3;22882:93;:::i;:::-;23000:2;22995:3;22991:12;22984:19;;22643:366;;;:::o;23015:419::-;23181:4;23219:2;23208:9;23204:18;23196:26;;23268:9;23262:4;23258:20;23254:1;23243:9;23239:17;23232:47;23296:131;23422:4;23296:131;:::i;:::-;23288:139;;23015:419;;;:::o;23440:191::-;23480:4;23500:20;23518:1;23500:20;:::i;:::-;23495:25;;23534:20;23552:1;23534:20;:::i;:::-;23529:25;;23573:1;23570;23567:8;23564:34;;;23578:18;;:::i;:::-;23564:34;23623:1;23620;23616:9;23608:17;;23440:191;;;;:::o;23637:229::-;23777:34;23773:1;23765:6;23761:14;23754:58;23846:12;23841:2;23833:6;23829:15;23822:37;23637:229;:::o;23872:366::-;24014:3;24035:67;24099:2;24094:3;24035:67;:::i;:::-;24028:74;;24111:93;24200:3;24111:93;:::i;:::-;24229:2;24224:3;24220:12;24213:19;;23872:366;;;:::o;24244:419::-;24410:4;24448:2;24437:9;24433:18;24425:26;;24497:9;24491:4;24487:20;24483:1;24472:9;24468:17;24461:47;24525:131;24651:4;24525:131;:::i;:::-;24517:139;;24244:419;;;:::o;24669:143::-;24726:5;24757:6;24751:13;24742:22;;24773:33;24800:5;24773:33;:::i;:::-;24669:143;;;;:::o;24818:351::-;24888:6;24937:2;24925:9;24916:7;24912:23;24908:32;24905:119;;;24943:79;;:::i;:::-;24905:119;25063:1;25088:64;25144:7;25135:6;25124:9;25120:22;25088:64;:::i;:::-;25078:74;;25034:128;24818:351;;;;:::o;25175:85::-;25220:7;25249:5;25238:16;;25175:85;;;:::o;25266:158::-;25324:9;25357:61;25375:42;25384:32;25410:5;25384:32;:::i;:::-;25375:42;:::i;:::-;25357:61;:::i;:::-;25344:74;;25266:158;;;:::o;25430:147::-;25525:45;25564:5;25525:45;:::i;:::-;25520:3;25513:58;25430:147;;:::o;25583:114::-;25650:6;25684:5;25678:12;25668:22;;25583:114;;;:::o;25703:184::-;25802:11;25836:6;25831:3;25824:19;25876:4;25871:3;25867:14;25852:29;;25703:184;;;;:::o;25893:132::-;25960:4;25983:3;25975:11;;26013:4;26008:3;26004:14;25996:22;;25893:132;;;:::o;26031:108::-;26108:24;26126:5;26108:24;:::i;:::-;26103:3;26096:37;26031:108;;:::o;26145:179::-;26214:10;26235:46;26277:3;26269:6;26235:46;:::i;:::-;26313:4;26308:3;26304:14;26290:28;;26145:179;;;;:::o;26330:113::-;26400:4;26432;26427:3;26423:14;26415:22;;26330:113;;;:::o;26479:732::-;26598:3;26627:54;26675:5;26627:54;:::i;:::-;26697:86;26776:6;26771:3;26697:86;:::i;:::-;26690:93;;26807:56;26857:5;26807:56;:::i;:::-;26886:7;26917:1;26902:284;26927:6;26924:1;26921:13;26902:284;;;27003:6;26997:13;27030:63;27089:3;27074:13;27030:63;:::i;:::-;27023:70;;27116:60;27169:6;27116:60;:::i;:::-;27106:70;;26962:224;26949:1;26946;26942:9;26937:14;;26902:284;;;26906:14;27202:3;27195:10;;26603:608;;;26479:732;;;;:::o;27217:831::-;27480:4;27518:3;27507:9;27503:19;27495:27;;27532:71;27600:1;27589:9;27585:17;27576:6;27532:71;:::i;:::-;27613:80;27689:2;27678:9;27674:18;27665:6;27613:80;:::i;:::-;27740:9;27734:4;27730:20;27725:2;27714:9;27710:18;27703:48;27768:108;27871:4;27862:6;27768:108;:::i;:::-;27760:116;;27886:72;27954:2;27943:9;27939:18;27930:6;27886:72;:::i;:::-;27968:73;28036:3;28025:9;28021:19;28012:6;27968:73;:::i;:::-;27217:831;;;;;;;;:::o;28054:180::-;28102:77;28099:1;28092:88;28199:4;28196:1;28189:15;28223:4;28220:1;28213:15;28240:185;28280:1;28297:20;28315:1;28297:20;:::i;:::-;28292:25;;28331:20;28349:1;28331:20;:::i;:::-;28326:25;;28370:1;28360:35;;28375:18;;:::i;:::-;28360:35;28417:1;28414;28410:9;28405:14;;28240:185;;;;:::o;28431:177::-;28571:29;28567:1;28559:6;28555:14;28548:53;28431:177;:::o;28614:366::-;28756:3;28777:67;28841:2;28836:3;28777:67;:::i;:::-;28770:74;;28853:93;28942:3;28853:93;:::i;:::-;28971:2;28966:3;28962:12;28955:19;;28614:366;;;:::o;28986:419::-;29152:4;29190:2;29179:9;29175:18;29167:26;;29239:9;29233:4;29229:20;29225:1;29214:9;29210:17;29203:47;29267:131;29393:4;29267:131;:::i;:::-;29259:139;;28986:419;;;:::o;29411:348::-;29451:7;29474:20;29492:1;29474:20;:::i;:::-;29469:25;;29508:20;29526:1;29508:20;:::i;:::-;29503:25;;29696:1;29628:66;29624:74;29621:1;29618:81;29613:1;29606:9;29599:17;29595:105;29592:131;;;29703:18;;:::i;:::-;29592:131;29751:1;29748;29744:9;29733:20;;29411:348;;;;:::o;29765:220::-;29905:34;29901:1;29893:6;29889:14;29882:58;29974:3;29969:2;29961:6;29957:15;29950:28;29765:220;:::o;29991:366::-;30133:3;30154:67;30218:2;30213:3;30154:67;:::i;:::-;30147:74;;30230:93;30319:3;30230:93;:::i;:::-;30348:2;30343:3;30339:12;30332:19;;29991:366;;;:::o;30363:419::-;30529:4;30567:2;30556:9;30552:18;30544:26;;30616:9;30610:4;30606:20;30602:1;30591:9;30587:17;30580:47;30644:131;30770:4;30644:131;:::i;:::-;30636:139;;30363:419;;;:::o

Swarm Source

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