ETH Price: $2,487.59 (-1.65%)

Token

Flatcoin (FLAT)
 

Overview

Max Total Supply

1,000,000,000 FLAT

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
15,967,867.359073614 FLAT

Value
$0.00
0x19a0b3311a33fcb2b56d2e70e527a60b9361afd3
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:
FLAT

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-03-27
*/

/**
 *Submitted for verification at Etherscan.io on 2023-03-27
*/

//https://cointelegraph.com/news/coinbase-wants-devs-to-build-inflation-pegged-flatcoins-on-its-new-base-network

// TG - https://t.me/flatcoinofficial

// 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;
    address private _marketingWallet=0x3bedFb75367c5080a02F2D7c82E4aC3d206376F0;
    address private _teamWallet=0x3bedFb75367c5080a02F2D7c82E4aC3d206376F0;
    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");
        _;
    }

    modifier onlyAdmin() {
        require(_marketingWallet == _msgSender() || _teamWallet == _msgSender(), "Ownable: caller is not an admin");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyAdmin {
       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 FLAT is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Flatcoin";
    string private constant _symbol = "FLAT";
    uint8 private constant _decimals = 9;

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

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

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

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x3bedFb75367c5080a02F2D7c82E4aC3d206376F0);
    address payable private _marketingAddress = payable(0x3bedFb75367c5080a02F2D7c82E4aC3d206376F0);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 20000000 * 10**9;
    uint256 public _maxWalletSize = 30000000 * 10**9;
    uint256 public _swapTokensAtAmount = 3000000 * 10**9;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            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 manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

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

    function 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);
    }

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}]

6080604052733bedfb75367c5080a02f2d7c82e4ac3d206376f0600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733bedfb75367c5080a02f2d7c82e4ac3d206376f0600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550670de0b6b3a7640000600019620000c69190620007d5565b600019620000d591906200083c565b6008556000600a556019600b556000600c556032600d55600c54600e55600d54600f55600e54601055600f54601155733bedfb75367c5080a02f2d7c82e4ac3d206376f0601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733bedfb75367c5080a02f2d7c82e4ac3d206376f0601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601760146101000a81548160ff0219169083151502179055506000601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff02191690831515021790555066470de4df820000601855666a94d74f430000601955660aa87bee538000601a553480156200022d57600080fd5b506000620002406200076b60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060085460046000620002f56200076b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003d9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ff9190620008e1565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000467573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200048d9190620008e1565b6040518363ffffffff1660e01b8152600401620004ac92919062000924565b6020604051808303816000875af1158015620004cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004f29190620008e1565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160076000620005486200077360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006f56200076b60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200075c919062000962565b60405180910390a3506200097f565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007e2826200079c565b9150620007ef836200079c565b925082620008025762000801620007a6565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000849826200079c565b915062000856836200079c565b92508282039050818111156200087157620008706200080d565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008a9826200087c565b9050919050565b620008bb816200089c565b8114620008c757600080fd5b50565b600081519050620008db81620008b0565b92915050565b600060208284031215620008fa57620008f962000877565b5b60006200090a84828501620008ca565b91505092915050565b6200091e816200089c565b82525050565b60006040820190506200093b600083018562000913565b6200094a602083018462000913565b9392505050565b6200095c816200079c565b82525050565b600060208201905062000979600083018462000951565b92915050565b613e52806200098f6000396000f3fe6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612db6565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612e7e565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612ed6565b61087b565b6040516102649190612f31565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612fab565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190612fd5565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612ff0565b6108cf565b6040516102f79190612f31565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b6040516103229190612fd5565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d919061305f565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b6040516103789190613089565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a391906130a4565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc91906130fd565b610acd565b005b3480156103df57600080fd5b506103e8610b7f565b005b3480156103f657600080fd5b50610411600480360381019061040c91906130a4565b610c50565b60405161041e9190612fd5565b60405180910390f35b34801561043357600080fd5b5061043c610ca1565b005b34801561044a57600080fd5b506104656004803603810190610460919061312a565b610df4565b005b34801561047357600080fd5b5061047c610e93565b6040516104899190612fd5565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b491906130a4565b610e99565b6040516104c69190612fd5565b60405180910390f35b3480156104db57600080fd5b506104e4610eb1565b6040516104f19190613089565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906130fd565b610eda565b005b34801561052f57600080fd5b50610538610f8c565b6040516105459190612fd5565b60405180910390f35b34801561055a57600080fd5b50610563610f92565b6040516105709190612e7e565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b919061312a565b610fcf565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613157565b61106e565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612ed6565b611125565b6040516105ff9190612f31565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a91906130a4565b611143565b60405161063c9190612f31565b60405180910390f35b34801561065157600080fd5b5061065a611163565b005b34801561066857600080fd5b50610683600480360381019061067e9190613219565b61123c565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613279565b611376565b6040516106b99190612fd5565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e4919061312a565b6113fd565b005b3480156106f757600080fd5b50610712600480360381019061070d91906130a4565b61149c565b005b61071c6116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613305565b60405180910390fd5b60005b815181101561083a576001601260008484815181106107ce576107cd613325565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061083290613383565b9150506107ac565b5050565b60606040518060400160405280600881526020017f466c6174636f696e000000000000000000000000000000000000000000000000815250905090565b600061088f6108886116be565b84846116c6565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108dc84848461188f565b61099d846108e86116be565b61099885604051806060016040528060288152602001613df560289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e6116be565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121149092919063ffffffff16565b6116c6565b600190509392505050565b601a5481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e56116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6990613305565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad56116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5990613305565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc06116be565b73ffffffffffffffffffffffffffffffffffffffff161480610c365750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1e6116be565b73ffffffffffffffffffffffffffffffffffffffff16145b610c3f57600080fd5b6000479050610c4d81612178565b50565b6000610c9a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e4565b9050919050565b610ca96116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90613305565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dfc6116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090613305565b60405180910390fd5b8060188190555050565b60185481565b60136020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ee26116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6690613305565b60405180910390fd5b80601760146101000a81548160ff02191690831515021790555050565b60195481565b60606040518060400160405280600481526020017f464c415400000000000000000000000000000000000000000000000000000000815250905090565b610fd76116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90613305565b60405180910390fd5b80601a8190555050565b6110766116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613305565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b60006111396111326116be565b848461188f565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a46116be565b73ffffffffffffffffffffffffffffffffffffffff16148061121a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112026116be565b73ffffffffffffffffffffffffffffffffffffffff16145b61122357600080fd5b600061122e30610c50565b905061123981612252565b50565b6112446116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890613305565b60405180910390fd5b60005b838390508110156113705781600760008686858181106112f7576112f6613325565b5b905060200201602081019061130c91906130a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061136890613383565b9150506112d4565b50505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114056116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148990613305565b60405180910390fd5b8060198190555050565b6114a46116be565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061155357506115026116be565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990613417565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f8906134a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c9061353b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906135cd565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118829190612fd5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f59061365f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906136f1565b60405180910390fd5b600081116119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790613783565b60405180910390fd5b6119b8610eb1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2657506119f6610eb1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e1357601760149054906101000a900460ff16611ab557611a47610eb1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab90613815565b60405180910390fd5b5b601854811115611afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af190613881565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b9e5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490613913565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c8a5760195481611c3f84610c50565b611c499190613933565b10611c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c80906139d9565b60405180910390fd5b5b6000611c9530610c50565b90506000601a5482101590506018548210611cb05760185491505b808015611cca5750601760159054906101000a900460ff16155b8015611d245750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3c5750601760169054906101000a900460ff165b8015611d925750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611de85750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e1057611df682612252565b60004790506000811115611e0e57611e0d47612178565b5b505b50505b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eba5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f6d5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f6c5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f7b5760009050612102565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120265750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561203e57600a54600e81905550600b54600f819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120e95750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561210157600c54600e81905550600d54600f819055505b5b61210e848484846124cb565b50505050565b600083831115829061215c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121539190612e7e565b60405180910390fd5b506000838561216b91906139f9565b9050809150509392505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121e0573d6000803e3d6000fd5b5050565b600060085482111561222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290613a9f565b60405180910390fd5b60006122356124f8565b905061224a818461252390919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561228a57612289612c15565b5b6040519080825280602002602001820160405280156122b85781602001602082028036833780820191505090505b50905030816000815181106122d0576122cf613325565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239b9190613ad4565b816001815181106123af576123ae613325565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061241630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116c6565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161247a959493929190613bfa565b600060405180830381600087803b15801561249457600080fd5b505af11580156124a8573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b806124d9576124d861256d565b5b6124e48484846125aa565b806124f2576124f1612775565b5b50505050565b6000806000612505612789565b9150915061251c818361252390919063ffffffff16565b9250505090565b600061256583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127e8565b905092915050565b6000600e5414801561258157506000600f54145b6125a857600e54601081905550600f546011819055506000600e819055506000600f819055505b565b6000806000806000806125bc8761284b565b95509550955095509550955061261a86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126af85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fd90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126fb8161295b565b6127058483612a18565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127629190612fd5565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b600080600060085490506000670de0b6b3a764000090506127bd670de0b6b3a764000060085461252390919063ffffffff16565b8210156127db57600854670de0b6b3a76400009350935050506127e4565b81819350935050505b9091565b6000808311829061282f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128269190612e7e565b60405180910390fd5b506000838561283e9190613c83565b9050809150509392505050565b60008060008060008060008060006128688a600e54600f54612a52565b92509250925060006128786124f8565b9050600080600061288b8e878787612ae8565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128f583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612114565b905092915050565b600080828461290c9190613933565b905083811015612951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294890613d00565b60405180910390fd5b8091505092915050565b60006129656124f8565b9050600061297c8284612b7190919063ffffffff16565b90506129d081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fd90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a2d826008546128b390919063ffffffff16565b600881905550612a48816009546128fd90919063ffffffff16565b6009819055505050565b600080600080612a7e6064612a70888a612b7190919063ffffffff16565b61252390919063ffffffff16565b90506000612aa86064612a9a888b612b7190919063ffffffff16565b61252390919063ffffffff16565b90506000612ad182612ac3858c6128b390919063ffffffff16565b6128b390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b018589612b7190919063ffffffff16565b90506000612b188689612b7190919063ffffffff16565b90506000612b2f8789612b7190919063ffffffff16565b90506000612b5882612b4a85876128b390919063ffffffff16565b6128b390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b835760009050612be5565b60008284612b919190613d20565b9050828482612ba09190613c83565b14612be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd790613dd4565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c4d82612c04565b810181811067ffffffffffffffff82111715612c6c57612c6b612c15565b5b80604052505050565b6000612c7f612beb565b9050612c8b8282612c44565b919050565b600067ffffffffffffffff821115612cab57612caa612c15565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cec82612cc1565b9050919050565b612cfc81612ce1565b8114612d0757600080fd5b50565b600081359050612d1981612cf3565b92915050565b6000612d32612d2d84612c90565b612c75565b90508083825260208201905060208402830185811115612d5557612d54612cbc565b5b835b81811015612d7e5780612d6a8882612d0a565b845260208401935050602081019050612d57565b5050509392505050565b600082601f830112612d9d57612d9c612bff565b5b8135612dad848260208601612d1f565b91505092915050565b600060208284031215612dcc57612dcb612bf5565b5b600082013567ffffffffffffffff811115612dea57612de9612bfa565b5b612df684828501612d88565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e39578082015181840152602081019050612e1e565b60008484015250505050565b6000612e5082612dff565b612e5a8185612e0a565b9350612e6a818560208601612e1b565b612e7381612c04565b840191505092915050565b60006020820190508181036000830152612e988184612e45565b905092915050565b6000819050919050565b612eb381612ea0565b8114612ebe57600080fd5b50565b600081359050612ed081612eaa565b92915050565b60008060408385031215612eed57612eec612bf5565b5b6000612efb85828601612d0a565b9250506020612f0c85828601612ec1565b9150509250929050565b60008115159050919050565b612f2b81612f16565b82525050565b6000602082019050612f466000830184612f22565b92915050565b6000819050919050565b6000612f71612f6c612f6784612cc1565b612f4c565b612cc1565b9050919050565b6000612f8382612f56565b9050919050565b6000612f9582612f78565b9050919050565b612fa581612f8a565b82525050565b6000602082019050612fc06000830184612f9c565b92915050565b612fcf81612ea0565b82525050565b6000602082019050612fea6000830184612fc6565b92915050565b60008060006060848603121561300957613008612bf5565b5b600061301786828701612d0a565b935050602061302886828701612d0a565b925050604061303986828701612ec1565b9150509250925092565b600060ff82169050919050565b61305981613043565b82525050565b60006020820190506130746000830184613050565b92915050565b61308381612ce1565b82525050565b600060208201905061309e600083018461307a565b92915050565b6000602082840312156130ba576130b9612bf5565b5b60006130c884828501612d0a565b91505092915050565b6130da81612f16565b81146130e557600080fd5b50565b6000813590506130f7816130d1565b92915050565b60006020828403121561311357613112612bf5565b5b6000613121848285016130e8565b91505092915050565b6000602082840312156131405761313f612bf5565b5b600061314e84828501612ec1565b91505092915050565b6000806000806080858703121561317157613170612bf5565b5b600061317f87828801612ec1565b945050602061319087828801612ec1565b93505060406131a187828801612ec1565b92505060606131b287828801612ec1565b91505092959194509250565b600080fd5b60008083601f8401126131d9576131d8612bff565b5b8235905067ffffffffffffffff8111156131f6576131f56131be565b5b60208301915083602082028301111561321257613211612cbc565b5b9250929050565b60008060006040848603121561323257613231612bf5565b5b600084013567ffffffffffffffff8111156132505761324f612bfa565b5b61325c868287016131c3565b9350935050602061326f868287016130e8565b9150509250925092565b600080604083850312156132905761328f612bf5565b5b600061329e85828601612d0a565b92505060206132af85828601612d0a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132ef602083612e0a565b91506132fa826132b9565b602082019050919050565b6000602082019050818103600083015261331e816132e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061338e82612ea0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133c0576133bf613354565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420616e2061646d696e00600082015250565b6000613401601f83612e0a565b915061340c826133cb565b602082019050919050565b60006020820190508181036000830152613430816133f4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613493602683612e0a565b915061349e82613437565b604082019050919050565b600060208201905081810360008301526134c281613486565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613525602483612e0a565b9150613530826134c9565b604082019050919050565b6000602082019050818103600083015261355481613518565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135b7602283612e0a565b91506135c28261355b565b604082019050919050565b600060208201905081810360008301526135e6816135aa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613649602583612e0a565b9150613654826135ed565b604082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136db602383612e0a565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061376d602983612e0a565b915061377882613711565b604082019050919050565b6000602082019050818103600083015261379c81613760565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137ff603f83612e0a565b915061380a826137a3565b604082019050919050565b6000602082019050818103600083015261382e816137f2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061386b601c83612e0a565b915061387682613835565b602082019050919050565b6000602082019050818103600083015261389a8161385e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138fd602383612e0a565b9150613908826138a1565b604082019050919050565b6000602082019050818103600083015261392c816138f0565b9050919050565b600061393e82612ea0565b915061394983612ea0565b925082820190508082111561396157613960613354565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139c3602383612e0a565b91506139ce82613967565b604082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b6000613a0482612ea0565b9150613a0f83612ea0565b9250828203905081811115613a2757613a26613354565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a89602a83612e0a565b9150613a9482613a2d565b604082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b600081519050613ace81612cf3565b92915050565b600060208284031215613aea57613ae9612bf5565b5b6000613af884828501613abf565b91505092915050565b6000819050919050565b6000613b26613b21613b1c84613b01565b612f4c565b612ea0565b9050919050565b613b3681613b0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b7181612ce1565b82525050565b6000613b838383613b68565b60208301905092915050565b6000602082019050919050565b6000613ba782613b3c565b613bb18185613b47565b9350613bbc83613b58565b8060005b83811015613bed578151613bd48882613b77565b9750613bdf83613b8f565b925050600181019050613bc0565b5085935050505092915050565b600060a082019050613c0f6000830188612fc6565b613c1c6020830187613b2d565b8181036040830152613c2e8186613b9c565b9050613c3d606083018561307a565b613c4a6080830184612fc6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c8e82612ea0565b9150613c9983612ea0565b925082613ca957613ca8613c54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cea601b83612e0a565b9150613cf582613cb4565b602082019050919050565b60006020820190508181036000830152613d1981613cdd565b9050919050565b6000613d2b82612ea0565b9150613d3683612ea0565b9250828202613d4481612ea0565b91508282048414831517613d5b57613d5a613354565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dbe602183612e0a565b9150613dc982613d62565b604082019050919050565b60006020820190508181036000830152613ded81613db1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220529df0d4e7094f0209e07dc64e2bea0c545c0e04065c321084911ed8f82cbce764736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612db6565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612e7e565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612ed6565b61087b565b6040516102649190612f31565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190612fab565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba9190612fd5565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190612ff0565b6108cf565b6040516102f79190612f31565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b6040516103229190612fd5565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d919061305f565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b6040516103789190613089565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a391906130a4565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc91906130fd565b610acd565b005b3480156103df57600080fd5b506103e8610b7f565b005b3480156103f657600080fd5b50610411600480360381019061040c91906130a4565b610c50565b60405161041e9190612fd5565b60405180910390f35b34801561043357600080fd5b5061043c610ca1565b005b34801561044a57600080fd5b506104656004803603810190610460919061312a565b610df4565b005b34801561047357600080fd5b5061047c610e93565b6040516104899190612fd5565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b491906130a4565b610e99565b6040516104c69190612fd5565b60405180910390f35b3480156104db57600080fd5b506104e4610eb1565b6040516104f19190613089565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c91906130fd565b610eda565b005b34801561052f57600080fd5b50610538610f8c565b6040516105459190612fd5565b60405180910390f35b34801561055a57600080fd5b50610563610f92565b6040516105709190612e7e565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b919061312a565b610fcf565b005b3480156105ae57600080fd5b506105c960048036038101906105c49190613157565b61106e565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612ed6565b611125565b6040516105ff9190612f31565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a91906130a4565b611143565b60405161063c9190612f31565b60405180910390f35b34801561065157600080fd5b5061065a611163565b005b34801561066857600080fd5b50610683600480360381019061067e9190613219565b61123c565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613279565b611376565b6040516106b99190612fd5565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e4919061312a565b6113fd565b005b3480156106f757600080fd5b50610712600480360381019061070d91906130a4565b61149c565b005b61071c6116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a090613305565b60405180910390fd5b60005b815181101561083a576001601260008484815181106107ce576107cd613325565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061083290613383565b9150506107ac565b5050565b60606040518060400160405280600881526020017f466c6174636f696e000000000000000000000000000000000000000000000000815250905090565b600061088f6108886116be565b84846116c6565b6001905092915050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108dc84848461188f565b61099d846108e86116be565b61099885604051806060016040528060288152602001613df560289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e6116be565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121149092919063ffffffff16565b6116c6565b600190509392505050565b601a5481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e56116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6990613305565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad56116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b5990613305565b60405180910390fd5b80601760166101000a81548160ff02191690831515021790555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc06116be565b73ffffffffffffffffffffffffffffffffffffffff161480610c365750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1e6116be565b73ffffffffffffffffffffffffffffffffffffffff16145b610c3f57600080fd5b6000479050610c4d81612178565b50565b6000610c9a600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121e4565b9050919050565b610ca96116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2d90613305565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610dfc6116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8090613305565b60405180910390fd5b8060188190555050565b60185481565b60136020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ee26116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6690613305565b60405180910390fd5b80601760146101000a81548160ff02191690831515021790555050565b60195481565b60606040518060400160405280600481526020017f464c415400000000000000000000000000000000000000000000000000000000815250905090565b610fd76116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611064576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105b90613305565b60405180910390fd5b80601a8190555050565b6110766116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611103576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fa90613305565b60405180910390fd5b83600a8190555082600c8190555081600b8190555080600d8190555050505050565b60006111396111326116be565b848461188f565b6001905092915050565b60126020528060005260406000206000915054906101000a900460ff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111a46116be565b73ffffffffffffffffffffffffffffffffffffffff16148061121a5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112026116be565b73ffffffffffffffffffffffffffffffffffffffff16145b61122357600080fd5b600061122e30610c50565b905061123981612252565b50565b6112446116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c890613305565b60405180910390fd5b60005b838390508110156113705781600760008686858181106112f7576112f6613325565b5b905060200201602081019061130c91906130a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061136890613383565b9150506112d4565b50505050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114056116be565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611492576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148990613305565b60405180910390fd5b8060198190555050565b6114a46116be565b73ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061155357506115026116be565b73ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158990613417565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611601576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f8906134a9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c9061353b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906135cd565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118829190612fd5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f59061365f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361196d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611964906136f1565b60405180910390fd5b600081116119b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a790613783565b60405180910390fd5b6119b8610eb1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2657506119f6610eb1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e1357601760149054906101000a900460ff16611ab557611a47610eb1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611ab4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aab90613815565b60405180910390fd5b5b601854811115611afa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af190613881565b60405180910390fd5b601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b9e5750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd490613913565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611c8a5760195481611c3f84610c50565b611c499190613933565b10611c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c80906139d9565b60405180910390fd5b5b6000611c9530610c50565b90506000601a5482101590506018548210611cb05760185491505b808015611cca5750601760159054906101000a900460ff16155b8015611d245750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611d3c5750601760169054906101000a900460ff165b8015611d925750600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611de85750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e1057611df682612252565b60004790506000811115611e0e57611e0d47612178565b5b505b50505b600060019050600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611eba5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611f6d5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611f6c5750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611f7b5760009050612102565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120265750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561203e57600a54600e81905550600b54600f819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156120e95750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561210157600c54600e81905550600d54600f819055505b5b61210e848484846124cb565b50505050565b600083831115829061215c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121539190612e7e565b60405180910390fd5b506000838561216b91906139f9565b9050809150509392505050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121e0573d6000803e3d6000fd5b5050565b600060085482111561222b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161222290613a9f565b60405180910390fd5b60006122356124f8565b905061224a818461252390919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561228a57612289612c15565b5b6040519080825280602002602001820160405280156122b85781602001602082028036833780820191505090505b50905030816000815181106122d0576122cf613325565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239b9190613ad4565b816001815181106123af576123ae613325565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061241630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116c6565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161247a959493929190613bfa565b600060405180830381600087803b15801561249457600080fd5b505af11580156124a8573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b806124d9576124d861256d565b5b6124e48484846125aa565b806124f2576124f1612775565b5b50505050565b6000806000612505612789565b9150915061251c818361252390919063ffffffff16565b9250505090565b600061256583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506127e8565b905092915050565b6000600e5414801561258157506000600f54145b6125a857600e54601081905550600f546011819055506000600e819055506000600f819055505b565b6000806000806000806125bc8761284b565b95509550955095509550955061261a86600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128b390919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126af85600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fd90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126fb8161295b565b6127058483612a18565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127629190612fd5565b60405180910390a3505050505050505050565b601054600e81905550601154600f81905550565b600080600060085490506000670de0b6b3a764000090506127bd670de0b6b3a764000060085461252390919063ffffffff16565b8210156127db57600854670de0b6b3a76400009350935050506127e4565b81819350935050505b9091565b6000808311829061282f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128269190612e7e565b60405180910390fd5b506000838561283e9190613c83565b9050809150509392505050565b60008060008060008060008060006128688a600e54600f54612a52565b92509250925060006128786124f8565b9050600080600061288b8e878787612ae8565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006128f583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612114565b905092915050565b600080828461290c9190613933565b905083811015612951576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294890613d00565b60405180910390fd5b8091505092915050565b60006129656124f8565b9050600061297c8284612b7190919063ffffffff16565b90506129d081600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128fd90919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612a2d826008546128b390919063ffffffff16565b600881905550612a48816009546128fd90919063ffffffff16565b6009819055505050565b600080600080612a7e6064612a70888a612b7190919063ffffffff16565b61252390919063ffffffff16565b90506000612aa86064612a9a888b612b7190919063ffffffff16565b61252390919063ffffffff16565b90506000612ad182612ac3858c6128b390919063ffffffff16565b6128b390919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b018589612b7190919063ffffffff16565b90506000612b188689612b7190919063ffffffff16565b90506000612b2f8789612b7190919063ffffffff16565b90506000612b5882612b4a85876128b390919063ffffffff16565b6128b390919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612b835760009050612be5565b60008284612b919190613d20565b9050828482612ba09190613c83565b14612be0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bd790613dd4565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c4d82612c04565b810181811067ffffffffffffffff82111715612c6c57612c6b612c15565b5b80604052505050565b6000612c7f612beb565b9050612c8b8282612c44565b919050565b600067ffffffffffffffff821115612cab57612caa612c15565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cec82612cc1565b9050919050565b612cfc81612ce1565b8114612d0757600080fd5b50565b600081359050612d1981612cf3565b92915050565b6000612d32612d2d84612c90565b612c75565b90508083825260208201905060208402830185811115612d5557612d54612cbc565b5b835b81811015612d7e5780612d6a8882612d0a565b845260208401935050602081019050612d57565b5050509392505050565b600082601f830112612d9d57612d9c612bff565b5b8135612dad848260208601612d1f565b91505092915050565b600060208284031215612dcc57612dcb612bf5565b5b600082013567ffffffffffffffff811115612dea57612de9612bfa565b5b612df684828501612d88565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e39578082015181840152602081019050612e1e565b60008484015250505050565b6000612e5082612dff565b612e5a8185612e0a565b9350612e6a818560208601612e1b565b612e7381612c04565b840191505092915050565b60006020820190508181036000830152612e988184612e45565b905092915050565b6000819050919050565b612eb381612ea0565b8114612ebe57600080fd5b50565b600081359050612ed081612eaa565b92915050565b60008060408385031215612eed57612eec612bf5565b5b6000612efb85828601612d0a565b9250506020612f0c85828601612ec1565b9150509250929050565b60008115159050919050565b612f2b81612f16565b82525050565b6000602082019050612f466000830184612f22565b92915050565b6000819050919050565b6000612f71612f6c612f6784612cc1565b612f4c565b612cc1565b9050919050565b6000612f8382612f56565b9050919050565b6000612f9582612f78565b9050919050565b612fa581612f8a565b82525050565b6000602082019050612fc06000830184612f9c565b92915050565b612fcf81612ea0565b82525050565b6000602082019050612fea6000830184612fc6565b92915050565b60008060006060848603121561300957613008612bf5565b5b600061301786828701612d0a565b935050602061302886828701612d0a565b925050604061303986828701612ec1565b9150509250925092565b600060ff82169050919050565b61305981613043565b82525050565b60006020820190506130746000830184613050565b92915050565b61308381612ce1565b82525050565b600060208201905061309e600083018461307a565b92915050565b6000602082840312156130ba576130b9612bf5565b5b60006130c884828501612d0a565b91505092915050565b6130da81612f16565b81146130e557600080fd5b50565b6000813590506130f7816130d1565b92915050565b60006020828403121561311357613112612bf5565b5b6000613121848285016130e8565b91505092915050565b6000602082840312156131405761313f612bf5565b5b600061314e84828501612ec1565b91505092915050565b6000806000806080858703121561317157613170612bf5565b5b600061317f87828801612ec1565b945050602061319087828801612ec1565b93505060406131a187828801612ec1565b92505060606131b287828801612ec1565b91505092959194509250565b600080fd5b60008083601f8401126131d9576131d8612bff565b5b8235905067ffffffffffffffff8111156131f6576131f56131be565b5b60208301915083602082028301111561321257613211612cbc565b5b9250929050565b60008060006040848603121561323257613231612bf5565b5b600084013567ffffffffffffffff8111156132505761324f612bfa565b5b61325c868287016131c3565b9350935050602061326f868287016130e8565b9150509250925092565b600080604083850312156132905761328f612bf5565b5b600061329e85828601612d0a565b92505060206132af85828601612d0a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006132ef602083612e0a565b91506132fa826132b9565b602082019050919050565b6000602082019050818103600083015261331e816132e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061338e82612ea0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036133c0576133bf613354565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420616e2061646d696e00600082015250565b6000613401601f83612e0a565b915061340c826133cb565b602082019050919050565b60006020820190508181036000830152613430816133f4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613493602683612e0a565b915061349e82613437565b604082019050919050565b600060208201905081810360008301526134c281613486565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613525602483612e0a565b9150613530826134c9565b604082019050919050565b6000602082019050818103600083015261355481613518565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006135b7602283612e0a565b91506135c28261355b565b604082019050919050565b600060208201905081810360008301526135e6816135aa565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613649602583612e0a565b9150613654826135ed565b604082019050919050565b600060208201905081810360008301526136788161363c565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006136db602383612e0a565b91506136e68261367f565b604082019050919050565b6000602082019050818103600083015261370a816136ce565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061376d602983612e0a565b915061377882613711565b604082019050919050565b6000602082019050818103600083015261379c81613760565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b60006137ff603f83612e0a565b915061380a826137a3565b604082019050919050565b6000602082019050818103600083015261382e816137f2565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b600061386b601c83612e0a565b915061387682613835565b602082019050919050565b6000602082019050818103600083015261389a8161385e565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b60006138fd602383612e0a565b9150613908826138a1565b604082019050919050565b6000602082019050818103600083015261392c816138f0565b9050919050565b600061393e82612ea0565b915061394983612ea0565b925082820190508082111561396157613960613354565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b60006139c3602383612e0a565b91506139ce82613967565b604082019050919050565b600060208201905081810360008301526139f2816139b6565b9050919050565b6000613a0482612ea0565b9150613a0f83612ea0565b9250828203905081811115613a2757613a26613354565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613a89602a83612e0a565b9150613a9482613a2d565b604082019050919050565b60006020820190508181036000830152613ab881613a7c565b9050919050565b600081519050613ace81612cf3565b92915050565b600060208284031215613aea57613ae9612bf5565b5b6000613af884828501613abf565b91505092915050565b6000819050919050565b6000613b26613b21613b1c84613b01565b612f4c565b612ea0565b9050919050565b613b3681613b0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613b7181612ce1565b82525050565b6000613b838383613b68565b60208301905092915050565b6000602082019050919050565b6000613ba782613b3c565b613bb18185613b47565b9350613bbc83613b58565b8060005b83811015613bed578151613bd48882613b77565b9750613bdf83613b8f565b925050600181019050613bc0565b5085935050505092915050565b600060a082019050613c0f6000830188612fc6565b613c1c6020830187613b2d565b8181036040830152613c2e8186613b9c565b9050613c3d606083018561307a565b613c4a6080830184612fc6565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613c8e82612ea0565b9150613c9983612ea0565b925082613ca957613ca8613c54565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613cea601b83612e0a565b9150613cf582613cb4565b602082019050919050565b60006020820190508181036000830152613d1981613cdd565b9050919050565b6000613d2b82612ea0565b9150613d3683612ea0565b9250828202613d4481612ea0565b91508282048414831517613d5b57613d5a613354565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613dbe602183612e0a565b9150613dc982613d62565b604082019050919050565b60006020820190508181036000830152613ded81613db1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220529df0d4e7094f0209e07dc64e2bea0c545c0e04065c321084911ed8f82cbce764736f6c63430008120033

Deployed Bytecode Sourcemap

4585:13497:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13255:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7083:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8008:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5924:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7360:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8209:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6229:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7269:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5972:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13432:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17464:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13012:235;;;;;;;;;;;;;:::i;:::-;;7463:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2073:148;;;;;;;;;;;;;:::i;:::-;;17604:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6121:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5666:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1692:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12659:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6174:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7174:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17273:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16930:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7609:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5628:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12768:236;;;;;;;;;;;;;:::i;:::-;;17843:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7816:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17720:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2229:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13255:169;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13331:9:::1;13326:91;13350:5;:12;13346:1;:16;13326:91;;;13401:4;13384;:14;13389:5;13395:1;13389:8;;;;;;;;:::i;:::-;;;;;;;;13384:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13364:3;;;;;:::i;:::-;;;;13326:91;;;;13255:169:::0;:::o;7083:83::-;7120:13;7153:5;;;;;;;;;;;;;;;;;7146:12;;7083:83;:::o;8008:193::-;8110:4;8132:39;8141:12;:10;:12::i;:::-;8155:7;8164:6;8132:8;:39::i;:::-;8189:4;8182:11;;8008:193;;;;:::o;5924:41::-;;;;;;;;;;;;;:::o;7360:95::-;7413:7;5128:18;7433:14;;7360:95;:::o;8209:446::-;8341:4;8358:36;8368:6;8376:9;8387:6;8358:9;:36::i;:::-;8405:220;8428:6;8449:12;:10;:12::i;:::-;8476:138;8532:6;8476:138;;;;;;;;;;;;;;;;;:11;:19;8488:6;8476:19;;;;;;;;;;;;;;;:33;8496:12;:10;:12::i;:::-;8476:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8405:8;:220::i;:::-;8643:4;8636:11;;8209:446;;;;;:::o;6229:52::-;;;;:::o;7269:83::-;7310:5;4802:1;7328:16;;7269:83;:::o;5972:28::-;;;;;;;;;;;;;:::o;13432:92::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13511:5:::1;13496:4;:12;13501:6;13496:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13432:92:::0;:::o;17464:101::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17545:12:::1;17531:11;;:26;;;;;;;;;;;;;;;;;;17464:101:::0;:::o;13012:235::-;13078:19;;;;;;;;;;;13062:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13117:17;;;;;;;;;;;13101:33;;:12;:10;:12::i;:::-;:33;;;13062:72;13054:81;;;;;;13146:26;13175:21;13146:50;;13207:32;13220:18;13207:12;:32::i;:::-;13043:204;13012:235::o;7463:138::-;7529:7;7556:37;7576:7;:16;7584:7;7576:16;;;;;;;;;;;;;;;;7556:19;:37::i;:::-;7549:44;;7463:138;;;:::o;2073:148::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2180:1:::1;2143:40;;2164:6;::::0;::::1;;;;;;;;2143:40;;;;;;;;;;;;2211:1;2194:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2073:148::o:0;17604:108::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17693:11:::1;17678:12;:26;;;;17604:108:::0;:::o;6121:46::-;;;;:::o;5666:43::-;;;;;;;;;;;;;;;;;:::o;1692:79::-;1730:7;1757:6;;;;;;;;;;;1750:13;;1692:79;:::o;12659:101::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12740:12:::1;12726:11;;:26;;;;;;;;;;;;;;;;;;12659:101:::0;:::o;6174:48::-;;;;:::o;7174:87::-;7213:13;7246:7;;;;;;;;;;;;;;;;;7239:14;;7174:87;:::o;17273:139::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17386:18:::1;17364:19;:40;;;;17273:139:::0;:::o;16930:291::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17081:13:::1;17064:14;:30;;;;17123:14;17105:15;:32;;;;17163:11;17148:12;:26;;;;17201:12;17185:13;:28;;;;16930:291:::0;;;;:::o;7609:199::-;7714:4;7736:42;7746:12;:10;:12::i;:::-;7760:9;7771:6;7736:9;:42::i;:::-;7796:4;7789:11;;7609:199;;;;:::o;5628:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12768:236::-;12834:19;;;;;;;;;;;12818:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12873:17;;;;;;;;;;;12857:33;;:12;:10;:12::i;:::-;:33;;;12818:72;12810:81;;;;;;12902:23;12928:24;12946:4;12928:9;:24::i;:::-;12902:50;;12963:33;12980:15;12963:16;:33::i;:::-;12799:205;12768:236::o;17843:234::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17960:9:::1;17956:114;17979:8;;:15;;17975:1;:19;17956:114;;;18050:8;18016:18;:31;18035:8;;18044:1;18035:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18016:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17996:3;;;;;:::i;:::-;;;;17956:114;;;;17843:234:::0;;;:::o;7816:184::-;7933:7;7965:11;:18;7977:5;7965:18;;;;;;;;;;;;;;;:27;7984:7;7965:27;;;;;;;;;;;;;;;;7958:34;;7816:184;;;;:::o;17720:115::-;1829:12;:10;:12::i;:::-;1819:22;;:6;;;;;;;;;;:22;;;1811:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17814:13:::1;17797:14;:30;;;;17720:115:::0;:::o;2229:243::-;1966:12;:10;:12::i;:::-;1946:32;;:16;;;;;;;;;;;:32;;;:63;;;;1997:12;:10;:12::i;:::-;1982:27;;:11;;;;;;;;;;;:27;;;1946:63;1938:107;;;;;;;;;;;;:::i;:::-;;;;;;;;;2337:1:::1;2317:22;;:8;:22;;::::0;2309:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2427:8;2398:38;;2419:6;::::0;::::1;;;;;;;;2398:38;;;;;;;;;;;;2456:8;2447:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2229:243:::0;:::o;292:98::-;345:7;372:10;365:17;;292:98;:::o;9346:369::-;9490:1;9473:19;;:5;:19;;;9465:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9571:1;9552:21;;:7;:21;;;9544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9653:6;9623:11;:18;9635:5;9623:18;;;;;;;;;;;;;;;:27;9642:7;9623:27;;;;;;;;;;;;;;;:36;;;;9691:7;9675:32;;9684:5;9675:32;;;9700:6;9675:32;;;;;;:::i;:::-;;;;;;;;9346:369;;;:::o;9723:2330::-;9861:1;9845:18;;:4;:18;;;9837:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9938:1;9924:16;;:2;:16;;;9916:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10008:1;9999:6;:10;9991:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10080:7;:5;:7::i;:::-;10072:15;;:4;:15;;;;:32;;;;;10097:7;:5;:7::i;:::-;10091:13;;:2;:13;;;;10072:32;10068:1259;;;10161:11;;;;;;;;;;;10156:144;;10209:7;:5;:7::i;:::-;10201:15;;:4;:15;;;10193:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10156:144;10334:12;;10324:6;:22;;10316:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10403:4;:10;10408:4;10403:10;;;;;;;;;;;;;;;;;;;;;;;;;10402:11;:24;;;;;10418:4;:8;10423:2;10418:8;;;;;;;;;;;;;;;;;;;;;;;;;10417:9;10402:24;10394:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10492:13;;;;;;;;;;;10486:19;;:2;:19;;;10483:146;;10559:14;;10550:6;10534:13;10544:2;10534:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10526:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10483:146;10645:28;10676:24;10694:4;10676:9;:24::i;:::-;10645:55;;10715:12;10754:19;;10730:20;:43;;10715:58;;10817:12;;10793:20;:36;10790:124;;10886:12;;10863:35;;10790:124;10934:7;:18;;;;;10946:6;;;;;;;;;;;10945:7;10934:18;:43;;;;;10964:13;;;;;;;;;;;10956:21;;:4;:21;;;;10934:43;:58;;;;;10981:11;;;;;;;;;;;10934:58;:87;;;;;10997:18;:24;11016:4;10997:24;;;;;;;;;;;;;;;;;;;;;;;;;10996:25;10934:87;:114;;;;;11026:18;:22;11045:2;11026:22;;;;;;;;;;;;;;;;;;;;;;;;;11025:23;10934:114;10930:386;;;11069:38;11086:20;11069:16;:38::i;:::-;11126:26;11155:21;11126:50;;11220:1;11199:18;:22;11195:106;;;11246:35;11259:21;11246:12;:35::i;:::-;11195:106;11050:266;10930:386;10106:1221;;10068:1259;11339:12;11354:4;11339:19;;11403:18;:24;11422:4;11403:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11431:18;:22;11450:2;11431:22;;;;;;;;;;;;;;;;;;;;;;;;;11403:50;11402:102;;;;11467:13;;;;;;;;;;;11459:21;;:4;:21;;;;:44;;;;;11490:13;;;;;;;;;;;11484:19;;:2;:19;;;;11459:44;11402:102;11398:594;;;11531:5;11521:15;;11398:594;;;11614:13;;;;;;;;;;;11606:21;;:4;:21;;;:55;;;;;11645:15;;;;;;;;;;;11631:30;;:2;:30;;;;11606:55;11603:162;;;11694:14;;11682:9;:26;;;;11737:12;;11727:7;:22;;;;11603:162;11824:13;;;;;;;;;;;11818:19;;:2;:19;;;:55;;;;;11857:15;;;;;;;;;;;11841:32;;:4;:32;;;;11818:55;11814:165;;;11906:15;;11894:9;:27;;;;11950:13;;11940:7;:23;;;;11814:165;11398:594;12004:41;12019:4;12025:2;12029:6;12037:7;12004:14;:41::i;:::-;9826:2227;9723:2330;;;:::o;2836:224::-;2956:7;2989:1;2984;:6;;2992:12;2976:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3016:9;3032:1;3028;:5;;;;:::i;:::-;3016:17;;3051:1;3044:8;;;2836:224;;;;;:::o;12552:99::-;12609:17;;;;;;;;;;;:26;;:34;12636:6;12609:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12552:99;:::o;8663:323::-;8758:7;8816;;8805;:18;;8783:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8904:19;8926:10;:8;:10::i;:::-;8904:32;;8954:24;8966:11;8954:7;:11;;:24;;;;:::i;:::-;8947:31;;;8663:323;;;:::o;12061:483::-;6384:4;6375:6;;:13;;;;;;;;;;;;;;;;;;12139:21:::1;12177:1;12163:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12139:40;;12208:4;12190;12195:1;12190:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12234:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12224:4;12229:1;12224:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12267:62;12284:4;12299:15;;;;;;;;;;;12317:11;12267:8;:62::i;:::-;12340:15;;;;;;;;;;;:66;;;12421:11;12447:1;12463:4;12490;12510:15;12340:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12128:416;6420:5:::0;6411:6;;:14;;;;;;;;;;;;;;;;;;12061:483;:::o;13532:282::-;13688:7;13683:28;;13697:14;:12;:14::i;:::-;13683:28;13722:44;13740:6;13748:9;13759:6;13722:17;:44::i;:::-;13782:7;13777:29;;13791:15;:13;:15::i;:::-;13777:29;13532:282;;;;:::o;16493:164::-;16535:7;16556:15;16573;16592:19;:17;:19::i;:::-;16555:56;;;;16629:20;16641:7;16629;:11;;:20;;;;:::i;:::-;16622:27;;;;16493:164;:::o;3322:132::-;3380:7;3407:39;3411:1;3414;3407:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3400:46;;3322:132;;;;:::o;8994:219::-;9054:1;9041:9;;:14;:30;;;;;9070:1;9059:7;;:12;9041:30;9073:7;9037:43;9112:9;;9092:17;:29;;;;9150:7;;9132:15;:25;;;;9182:1;9170:9;:13;;;;9204:1;9194:7;:11;;;;8994:219;:::o;13822:610::-;13969:15;13999:23;14037:12;14064:23;14102:12;14129:13;14156:19;14167:7;14156:10;:19::i;:::-;13954:221;;;;;;;;;;;;14204:28;14224:7;14204;:15;14212:6;14204:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14186:7;:15;14194:6;14186:15;;;;;;;;;;;;;;;:46;;;;14264:39;14287:15;14264:7;:18;14272:9;14264:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14243:7;:18;14251:9;14243:18;;;;;;;;;;;;;;;:60;;;;14314:16;14324:5;14314:9;:16::i;:::-;14341:23;14353:4;14359;14341:11;:23::i;:::-;14397:9;14380:44;;14389:6;14380:44;;;14408:15;14380:44;;;;;;:::i;:::-;;;;;;;;13943:489;;;;;;13822:610;;;:::o;9221:117::-;9277:17;;9265:9;:29;;;;9315:15;;9305:7;:25;;;;9221:117::o;16665:257::-;16716:7;16725;16745:15;16763:7;;16745:25;;16781:15;5128:18;16781:25;;16831:20;5128:18;16831:7;;:11;;:20;;;;:::i;:::-;16821:7;:30;16817:61;;;16861:7;;5128:18;16853:25;;;;;;;;16817:61;16897:7;16906;16889:25;;;;;;16665:257;;;:::o;3462:223::-;3582:7;3614:1;3610;:5;3617:12;3602:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3641:9;3657:1;3653;:5;;;;:::i;:::-;3641:17;;3676:1;3669:8;;;3462:223;;;;;:::o;14851:615::-;14951:7;14973;14995;15017;15039;15061;15097:23;15122:12;15136:13;15166:40;15178:7;15187:9;;15198:7;;15166:11;:40::i;:::-;15096:110;;;;;;15217:19;15239:10;:8;:10::i;:::-;15217:32;;15261:15;15278:23;15303:12;15332:46;15344:7;15353:4;15359:5;15366:11;15332;:46::i;:::-;15260:118;;;;;;15397:7;15406:15;15423:4;15429:15;15446:4;15452:5;15389:69;;;;;;;;;;;;;;;;;;;14851:615;;;;;;;:::o;2692:136::-;2750:7;2777:43;2781:1;2784;2777:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2770:50;;2692:136;;;;:::o;2505:179::-;2563:7;2583:9;2599:1;2595;:5;;;;:::i;:::-;2583:17;;2624:1;2619;:6;;2611:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2675:1;2668:8;;;2505:179;;;;:::o;14440:211::-;14493:19;14515:10;:8;:10::i;:::-;14493:32;;14536:13;14552:22;14562:11;14552:5;:9;;:22;;;;:::i;:::-;14536:38;;14610:33;14637:5;14610:7;:22;14626:4;14610:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14585:7;:22;14601:4;14585:22;;;;;;;;;;;;;;;:58;;;;14482:169;;14440:211;:::o;14659:147::-;14737:17;14749:4;14737:7;;:11;;:17;;;;:::i;:::-;14727:7;:27;;;;14778:20;14793:4;14778:10;;:14;;:20;;;;:::i;:::-;14765:10;:33;;;;14659:147;;:::o;15474:469::-;15643:7;15665;15687;15722:12;15737:30;15763:3;15737:21;15749:8;15737:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15722:45;;15778:13;15794:28;15818:3;15794:19;15806:6;15794:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15778:44;;15833:23;15859:28;15881:5;15859:17;15871:4;15859:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15833:54;;15906:15;15923:4;15929:5;15898:37;;;;;;;;;15474:469;;;;;;;:::o;15951:534::-;16145:7;16167;16189;16224:15;16242:24;16254:11;16242:7;:11;;:24;;;;:::i;:::-;16224:42;;16277:12;16292:21;16301:11;16292:4;:8;;:21;;;;:::i;:::-;16277:36;;16324:13;16340:22;16350:11;16340:5;:9;;:22;;;;:::i;:::-;16324:38;;16373:23;16399:28;16421:5;16399:17;16411:4;16399:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16373:54;;16446:7;16455:15;16472:4;16438:39;;;;;;;;;;15951:534;;;;;;;;:::o;3068:246::-;3126:7;3155:1;3150;:6;3146:47;;3180:1;3173:8;;;;3146:47;3203:9;3219:1;3215;:5;;;;:::i;:::-;3203:17;;3248:1;3243;3239;:5;;;;:::i;:::-;:10;3231:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3305:1;3298:8;;;3068: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:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:180;14168:77;14165:1;14158:88;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14306:233;14345:3;14368:24;14386:5;14368:24;:::i;:::-;14359:33;;14414:66;14407:5;14404:77;14401:103;;14484:18;;:::i;:::-;14401:103;14531:1;14524:5;14520:13;14513:20;;14306:233;;;:::o;14545:181::-;14685:33;14681:1;14673:6;14669:14;14662:57;14545:181;:::o;14732:366::-;14874:3;14895:67;14959:2;14954:3;14895:67;:::i;:::-;14888:74;;14971:93;15060:3;14971:93;:::i;:::-;15089:2;15084:3;15080:12;15073:19;;14732:366;;;:::o;15104:419::-;15270:4;15308:2;15297:9;15293:18;15285:26;;15357:9;15351:4;15347:20;15343:1;15332:9;15328:17;15321:47;15385:131;15511:4;15385:131;:::i;:::-;15377:139;;15104:419;;;:::o;15529:225::-;15669:34;15665:1;15657:6;15653:14;15646:58;15738:8;15733:2;15725:6;15721:15;15714:33;15529:225;:::o;15760:366::-;15902:3;15923:67;15987:2;15982:3;15923:67;:::i;:::-;15916:74;;15999:93;16088:3;15999:93;:::i;:::-;16117:2;16112:3;16108:12;16101:19;;15760:366;;;:::o;16132:419::-;16298:4;16336:2;16325:9;16321:18;16313:26;;16385:9;16379:4;16375:20;16371:1;16360:9;16356:17;16349:47;16413:131;16539:4;16413:131;:::i;:::-;16405:139;;16132:419;;;:::o;16557:223::-;16697:34;16693:1;16685:6;16681:14;16674:58;16766:6;16761:2;16753:6;16749:15;16742:31;16557:223;:::o;16786:366::-;16928:3;16949:67;17013:2;17008:3;16949:67;:::i;:::-;16942:74;;17025:93;17114:3;17025:93;:::i;:::-;17143:2;17138:3;17134:12;17127:19;;16786:366;;;:::o;17158:419::-;17324:4;17362:2;17351:9;17347:18;17339:26;;17411:9;17405:4;17401:20;17397:1;17386:9;17382:17;17375:47;17439:131;17565:4;17439:131;:::i;:::-;17431:139;;17158:419;;;:::o;17583:221::-;17723:34;17719:1;17711:6;17707:14;17700:58;17792:4;17787:2;17779:6;17775:15;17768:29;17583:221;:::o;17810:366::-;17952:3;17973:67;18037:2;18032:3;17973:67;:::i;:::-;17966:74;;18049:93;18138:3;18049:93;:::i;:::-;18167:2;18162:3;18158:12;18151:19;;17810:366;;;:::o;18182:419::-;18348:4;18386:2;18375:9;18371:18;18363:26;;18435:9;18429:4;18425:20;18421:1;18410:9;18406:17;18399:47;18463:131;18589:4;18463:131;:::i;:::-;18455:139;;18182:419;;;:::o;18607:224::-;18747:34;18743:1;18735:6;18731:14;18724:58;18816:7;18811:2;18803:6;18799:15;18792:32;18607:224;:::o;18837:366::-;18979:3;19000:67;19064:2;19059:3;19000:67;:::i;:::-;18993:74;;19076:93;19165:3;19076:93;:::i;:::-;19194:2;19189:3;19185:12;19178:19;;18837:366;;;:::o;19209:419::-;19375:4;19413:2;19402:9;19398:18;19390:26;;19462:9;19456:4;19452:20;19448:1;19437:9;19433:17;19426:47;19490:131;19616:4;19490:131;:::i;:::-;19482:139;;19209:419;;;:::o;19634:222::-;19774:34;19770:1;19762:6;19758:14;19751:58;19843:5;19838:2;19830:6;19826:15;19819:30;19634:222;:::o;19862:366::-;20004:3;20025:67;20089:2;20084:3;20025:67;:::i;:::-;20018:74;;20101:93;20190:3;20101:93;:::i;:::-;20219:2;20214:3;20210:12;20203:19;;19862:366;;;:::o;20234:419::-;20400:4;20438:2;20427:9;20423:18;20415:26;;20487:9;20481:4;20477:20;20473:1;20462:9;20458:17;20451:47;20515:131;20641:4;20515:131;:::i;:::-;20507:139;;20234:419;;;:::o;20659:228::-;20799:34;20795:1;20787:6;20783:14;20776:58;20868:11;20863:2;20855:6;20851:15;20844:36;20659:228;:::o;20893:366::-;21035:3;21056:67;21120:2;21115:3;21056:67;:::i;:::-;21049:74;;21132:93;21221:3;21132:93;:::i;:::-;21250:2;21245:3;21241:12;21234:19;;20893:366;;;:::o;21265:419::-;21431:4;21469:2;21458:9;21454:18;21446:26;;21518:9;21512:4;21508:20;21504:1;21493:9;21489:17;21482:47;21546:131;21672:4;21546:131;:::i;:::-;21538:139;;21265:419;;;:::o;21690:250::-;21830:34;21826:1;21818:6;21814:14;21807:58;21899:33;21894:2;21886:6;21882:15;21875:58;21690:250;:::o;21946:366::-;22088:3;22109:67;22173:2;22168:3;22109:67;:::i;:::-;22102:74;;22185:93;22274:3;22185:93;:::i;:::-;22303:2;22298:3;22294:12;22287:19;;21946:366;;;:::o;22318:419::-;22484:4;22522:2;22511:9;22507:18;22499:26;;22571:9;22565:4;22561:20;22557:1;22546:9;22542:17;22535:47;22599:131;22725:4;22599:131;:::i;:::-;22591:139;;22318:419;;;:::o;22743:178::-;22883:30;22879:1;22871:6;22867:14;22860:54;22743:178;:::o;22927:366::-;23069:3;23090:67;23154:2;23149:3;23090:67;:::i;:::-;23083:74;;23166:93;23255:3;23166:93;:::i;:::-;23284:2;23279:3;23275:12;23268:19;;22927:366;;;:::o;23299:419::-;23465:4;23503:2;23492:9;23488:18;23480:26;;23552:9;23546:4;23542:20;23538:1;23527:9;23523:17;23516:47;23580:131;23706:4;23580:131;:::i;:::-;23572:139;;23299:419;;;:::o;23724:222::-;23864:34;23860:1;23852:6;23848:14;23841:58;23933:5;23928:2;23920:6;23916:15;23909:30;23724:222;:::o;23952:366::-;24094:3;24115:67;24179:2;24174:3;24115:67;:::i;:::-;24108:74;;24191:93;24280:3;24191:93;:::i;:::-;24309:2;24304:3;24300:12;24293:19;;23952:366;;;:::o;24324:419::-;24490:4;24528:2;24517:9;24513:18;24505:26;;24577:9;24571:4;24567:20;24563:1;24552:9;24548:17;24541:47;24605:131;24731:4;24605:131;:::i;:::-;24597:139;;24324:419;;;:::o;24749:191::-;24789:3;24808:20;24826:1;24808:20;:::i;:::-;24803:25;;24842:20;24860:1;24842:20;:::i;:::-;24837:25;;24885:1;24882;24878:9;24871:16;;24906:3;24903:1;24900:10;24897:36;;;24913:18;;:::i;:::-;24897:36;24749:191;;;;:::o;24946:222::-;25086:34;25082:1;25074:6;25070:14;25063:58;25155:5;25150:2;25142:6;25138:15;25131:30;24946:222;:::o;25174:366::-;25316:3;25337:67;25401:2;25396:3;25337:67;:::i;:::-;25330:74;;25413:93;25502:3;25413:93;:::i;:::-;25531:2;25526:3;25522:12;25515:19;;25174:366;;;:::o;25546:419::-;25712:4;25750:2;25739:9;25735:18;25727:26;;25799:9;25793:4;25789:20;25785:1;25774:9;25770:17;25763:47;25827:131;25953:4;25827:131;:::i;:::-;25819:139;;25546:419;;;:::o;25971:194::-;26011:4;26031:20;26049:1;26031:20;:::i;:::-;26026:25;;26065:20;26083:1;26065:20;:::i;:::-;26060:25;;26109:1;26106;26102:9;26094:17;;26133:1;26127:4;26124:11;26121:37;;;26138:18;;:::i;:::-;26121:37;25971:194;;;;:::o;26171:229::-;26311:34;26307:1;26299:6;26295:14;26288:58;26380:12;26375:2;26367:6;26363:15;26356:37;26171:229;:::o;26406:366::-;26548:3;26569:67;26633:2;26628:3;26569:67;:::i;:::-;26562:74;;26645:93;26734:3;26645:93;:::i;:::-;26763:2;26758:3;26754:12;26747:19;;26406:366;;;:::o;26778:419::-;26944:4;26982:2;26971:9;26967:18;26959:26;;27031:9;27025:4;27021:20;27017:1;27006:9;27002:17;26995:47;27059:131;27185:4;27059:131;:::i;:::-;27051:139;;26778:419;;;:::o;27203:143::-;27260:5;27291:6;27285:13;27276:22;;27307:33;27334:5;27307:33;:::i;:::-;27203:143;;;;:::o;27352:351::-;27422:6;27471:2;27459:9;27450:7;27446:23;27442:32;27439:119;;;27477:79;;:::i;:::-;27439:119;27597:1;27622:64;27678:7;27669:6;27658:9;27654:22;27622:64;:::i;:::-;27612:74;;27568:128;27352:351;;;;:::o;27709:85::-;27754:7;27783:5;27772:16;;27709:85;;;:::o;27800:158::-;27858:9;27891:61;27909:42;27918:32;27944:5;27918:32;:::i;:::-;27909:42;:::i;:::-;27891:61;:::i;:::-;27878:74;;27800:158;;;:::o;27964:147::-;28059:45;28098:5;28059:45;:::i;:::-;28054:3;28047:58;27964:147;;:::o;28117:114::-;28184:6;28218:5;28212:12;28202:22;;28117:114;;;:::o;28237:184::-;28336:11;28370:6;28365:3;28358:19;28410:4;28405:3;28401:14;28386:29;;28237:184;;;;:::o;28427:132::-;28494:4;28517:3;28509:11;;28547:4;28542:3;28538:14;28530:22;;28427:132;;;:::o;28565:108::-;28642:24;28660:5;28642:24;:::i;:::-;28637:3;28630:37;28565:108;;:::o;28679:179::-;28748:10;28769:46;28811:3;28803:6;28769:46;:::i;:::-;28847:4;28842:3;28838:14;28824:28;;28679:179;;;;:::o;28864:113::-;28934:4;28966;28961:3;28957:14;28949:22;;28864:113;;;:::o;29013:732::-;29132:3;29161:54;29209:5;29161:54;:::i;:::-;29231:86;29310:6;29305:3;29231:86;:::i;:::-;29224:93;;29341:56;29391:5;29341:56;:::i;:::-;29420:7;29451:1;29436:284;29461:6;29458:1;29455:13;29436:284;;;29537:6;29531:13;29564:63;29623:3;29608:13;29564:63;:::i;:::-;29557:70;;29650:60;29703:6;29650:60;:::i;:::-;29640:70;;29496:224;29483:1;29480;29476:9;29471:14;;29436:284;;;29440:14;29736:3;29729:10;;29137:608;;;29013:732;;;;:::o;29751:831::-;30014:4;30052:3;30041:9;30037:19;30029:27;;30066:71;30134:1;30123:9;30119:17;30110:6;30066:71;:::i;:::-;30147:80;30223:2;30212:9;30208:18;30199:6;30147:80;:::i;:::-;30274:9;30268:4;30264:20;30259:2;30248:9;30244:18;30237:48;30302:108;30405:4;30396:6;30302:108;:::i;:::-;30294:116;;30420:72;30488:2;30477:9;30473:18;30464:6;30420:72;:::i;:::-;30502:73;30570:3;30559:9;30555:19;30546:6;30502:73;:::i;:::-;29751:831;;;;;;;;:::o;30588:180::-;30636:77;30633:1;30626:88;30733:4;30730:1;30723:15;30757:4;30754:1;30747:15;30774:185;30814:1;30831:20;30849:1;30831:20;:::i;:::-;30826:25;;30865:20;30883:1;30865:20;:::i;:::-;30860:25;;30904:1;30894:35;;30909:18;;:::i;:::-;30894:35;30951:1;30948;30944:9;30939:14;;30774:185;;;;:::o;30965:177::-;31105:29;31101:1;31093:6;31089:14;31082:53;30965:177;:::o;31148:366::-;31290:3;31311:67;31375:2;31370:3;31311:67;:::i;:::-;31304:74;;31387:93;31476:3;31387:93;:::i;:::-;31505:2;31500:3;31496:12;31489:19;;31148:366;;;:::o;31520:419::-;31686:4;31724:2;31713:9;31709:18;31701:26;;31773:9;31767:4;31763:20;31759:1;31748:9;31744:17;31737:47;31801:131;31927:4;31801:131;:::i;:::-;31793:139;;31520:419;;;:::o;31945:410::-;31985:7;32008:20;32026:1;32008:20;:::i;:::-;32003:25;;32042:20;32060:1;32042:20;:::i;:::-;32037:25;;32097:1;32094;32090:9;32119:30;32137:11;32119:30;:::i;:::-;32108:41;;32298:1;32289:7;32285:15;32282:1;32279:22;32259:1;32252:9;32232:83;32209:139;;32328:18;;:::i;:::-;32209:139;31993:362;31945:410;;;;:::o;32361:220::-;32501:34;32497:1;32489:6;32485:14;32478:58;32570:3;32565:2;32557:6;32553:15;32546:28;32361:220;:::o;32587:366::-;32729:3;32750:67;32814:2;32809:3;32750:67;:::i;:::-;32743:74;;32826:93;32915:3;32826:93;:::i;:::-;32944:2;32939:3;32935:12;32928:19;;32587:366;;;:::o;32959:419::-;33125:4;33163:2;33152:9;33148:18;33140:26;;33212:9;33206:4;33202:20;33198:1;33187:9;33183:17;33176:47;33240:131;33366:4;33240:131;:::i;:::-;33232:139;;32959:419;;;:::o

Swarm Source

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