ETH Price: $3,164.29 (+2.96%)

Token

The Wind Blows ($WIND)
 

Overview

Max Total Supply

201,538,979.20192521 $WIND

Holders

173

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.440358307784022558 $WIND

Value
$0.00
0x161c249b6b7750828fa7f50f9ec5277b1d573aef
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:
Wind

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.14;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function factory() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
}

contract Wind is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "The Wind Blows";
    string private constant _symbol = "$WIND";
    uint8 private constant _decimals = 18;

    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 = 20153897920192521 * 1e10;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 66;      // 0.66 %
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 66;     // 0.66 %

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

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;
    
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    address public immutable usdc;
    address public immutable dai;
    address public immutable weth;
    address public immutable caw;
    address public immutable qom;
    address public immutable o;
    address private buybackwallet;
    
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 private autoBuyToken;
    
    uint256 public _swapTokensAtAmount = 2 * 1e6 * 1e18;

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
		usdc = address(0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48);
        dai = address(0x6B175474E89094C44Da98b954EedeAC495271d0F);
        weth = address(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
        caw = address(0xf3b9569F82B18aEf890De263B84189bd33EBe452);
        qom = address(0xa71d0588EAf47f12B13cF8eC750430d21DF04974);
        o = address(0xb53ecF1345caBeE6eA1a65100Ebb153cEbcac40f);
        
        buybackwallet = address(0x89d1fC54F46Cb6A1dd0fac0D4DAc173578537874);

        autoBuyToken = 1; // 1 = CAW, 2 = O, 3 = QOM

        _rOwned[_msgSender()] = _rTotal;

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

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[buybackwallet] = 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()) {

            //Trading open check
            if (!tradingOpen) {
                require(_isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading is not active.");
            }

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

            if(contractTokenBalance >= _swapTokensAtAmount * 20)
            {
                contractTokenBalance = _swapTokensAtAmount * 20;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                autoBuyBack(contractTokenBalance);
            }
        }

        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 autoBuyBack(uint256 tokenAmount) private lockTheSwap {

        address[] memory path = new address[](5);

        // Define autobuyback path

        if (autoBuyToken == 1) {
            // CAW buyback
            path[0] = address(this);
            path[1] = usdc;
            path[2] = caw;
        } else if (autoBuyToken == 2) {
            // O buyback
            path[0] = address(this);
            path[1] = usdc;
            path[2] = weth;
            path[3] = dai;
            path[4] = o;
        } else if (autoBuyToken == 3) {
            // QOM buyback
            path[0] = address(this);
            path[1] = usdc;
            path[2] = weth;
            path[3] = qom;
        }

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        uniswapV2Router.swapExactTokensForTokens(
            tokenAmount,
            0,
            path,
            buybackwallet,
            block.timestamp
        );
    }

	function openTrading() public onlyOwner {
		tradingOpen = true;
	}
	
    function changeBuyBackToken(uint256 _autoBuyToken) public onlyOwner {
        require((_autoBuyToken == 1  || _autoBuyToken == 2 || autoBuyToken == 3), "Wrong Input!");
        autoBuyToken = _autoBuyToken;
    }

    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(10000);
        uint256 tTeam = tAmount.mul(taxFee).div(10000);
        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);
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"caw","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_autoBuyToken","type":"uint256"}],"name":"changeBuyBackToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dai","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"o","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"qom","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"usdc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6101406040526aa6b589f45e2b5b05eb040060001962000020919062000781565b6000196200002f9190620007e8565b6005556000600755604260085560006009556042600a55600954600b55600a54600c55600b54600d55600c54600e556000601160156101000a81548160ff0219169083151502179055506001601160166101000a81548160ff0219169083151502179055506a01a784379d99db42000000601355348015620000b057600080fd5b506000620000c36200071760201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4873ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050736b175474e89094c44da98b954eedeac495271d0f73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505073f3b9569f82b18aef890de263b84189bd33ebe45273ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff168152505073a71d0588eaf47f12b13cf8ec750430d21df0497473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff168152505073b53ecf1345cabee6ea1a65100ebb153cebcac40f73ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff16815250507389d1fc54f46cb6a1dd0fac0d4dac173578537874601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160128190555060055460016000620003876200071760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200049191906200088d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401620004cf929190620008d0565b6020604051808303816000875af1158015620004ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200051591906200088d565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460006200056b6200071f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200069e6200071760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6aa6b589f45e2b5b05eb04006040516200070891906200090e565b60405180910390a3506200092b565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200078e8262000748565b91506200079b8362000748565b925082620007ae57620007ad62000752565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007f58262000748565b9150620008028362000748565b925082821015620008185762000817620007b9565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008558262000828565b9050919050565b620008678162000848565b81146200087357600080fd5b50565b60008151905062000887816200085c565b92915050565b600060208284031215620008a657620008a562000823565b5b6000620008b68482850162000876565b91505092915050565b620008ca8162000848565b82525050565b6000604082019050620008e76000830185620008bf565b620008f66020830184620008bf565b9392505050565b620009088162000748565b82525050565b6000602082019050620009256000830184620008fd565b92915050565b60805160a05160c05160e0516101005161012051613460620009ba600039600081816107470152611afb0152600081816109b70152611ca601526000818161076b01526118e10152600081816106fd01528181611a1d0152611c37015260008181610cd50152611a8c0152600081816106d901528181611872015281816119ae0152611bc801526134606000f3fe6080604052600436106101445760003560e01c80635187c3a8116100b6578063bec8ca581161006f578063bec8ca581461045f578063c9567bf91461048a578063dd62ed3e146104a1578063f2fde38b146104de578063f4b9fa7514610507578063fa0037a9146105325761014b565b80635187c3a81461034d57806370a0823114610378578063715018a6146103b55780638da5cb5b146103cc57806395d89b41146103f7578063a9059cbb146104225761014b565b80632fd689e3116101085780632fd689e31461024b578063313ce567146102765780633e413bee146102a15780633fc8cef3146102cc57806349bd5a5e146102f757806350cd4df2146103225761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561055b565b60405161017291906125f5565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906126bf565b610598565b6040516101af919061271a565b60405180910390f35b3480156101c457600080fd5b506101cd6105b6565b6040516101da9190612794565b60405180910390f35b3480156101ef57600080fd5b506101f86105dc565b60405161020591906127be565b60405180910390f35b34801561021a57600080fd5b50610235600480360381019061023091906127d9565b6105ef565b604051610242919061271a565b60405180910390f35b34801561025757600080fd5b506102606106c8565b60405161026d91906127be565b60405180910390f35b34801561028257600080fd5b5061028b6106ce565b6040516102989190612848565b60405180910390f35b3480156102ad57600080fd5b506102b66106d7565b6040516102c39190612872565b60405180910390f35b3480156102d857600080fd5b506102e16106fb565b6040516102ee9190612872565b60405180910390f35b34801561030357600080fd5b5061030c61071f565b6040516103199190612872565b60405180910390f35b34801561032e57600080fd5b50610337610745565b6040516103449190612872565b60405180910390f35b34801561035957600080fd5b50610362610769565b60405161036f9190612872565b60405180910390f35b34801561038457600080fd5b5061039f600480360381019061039a919061288d565b61078d565b6040516103ac91906127be565b60405180910390f35b3480156103c157600080fd5b506103ca6107de565b005b3480156103d857600080fd5b506103e1610931565b6040516103ee9190612872565b60405180910390f35b34801561040357600080fd5b5061040c61095a565b60405161041991906125f5565b60405180910390f35b34801561042e57600080fd5b50610449600480360381019061044491906126bf565b610997565b604051610456919061271a565b60405180910390f35b34801561046b57600080fd5b506104746109b5565b6040516104819190612872565b60405180910390f35b34801561049657600080fd5b5061049f6109d9565b005b3480156104ad57600080fd5b506104c860048036038101906104c391906128ba565b610a8b565b6040516104d591906127be565b60405180910390f35b3480156104ea57600080fd5b506105056004803603810190610500919061288d565b610b12565b005b34801561051357600080fd5b5061051c610cd3565b6040516105299190612872565b60405180910390f35b34801561053e57600080fd5b50610559600480360381019061055491906128fa565b610cf7565b005b60606040518060400160405280600e81526020017f5468652057696e6420426c6f7773000000000000000000000000000000000000815250905090565b60006105ac6105a5610df1565b8484610df9565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006aa6b589f45e2b5b05eb0400905090565b60006105fc848484610fc2565b6106bd84610608610df1565b6106b88560405180606001604052806028815260200161340360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061066e610df1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116dc9092919063ffffffff16565b610df9565b600190509392505050565b60135481565b60006012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006107d7600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611740565b9050919050565b6107e6610df1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a90612973565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f2457494e44000000000000000000000000000000000000000000000000000000815250905090565b60006109ab6109a4610df1565b8484610fc2565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6109e1610df1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6590612973565b60405180910390fd5b6001601160146101000a81548160ff021916908315150217905550565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b1a610df1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90612973565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90612a05565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f000000000000000000000000000000000000000000000000000000000000000081565b610cff610df1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390612973565b60405180910390fd5b6001811480610d9b5750600281145b80610da857506003601254145b610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90612a71565b60405180910390fd5b8060128190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f90612b03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece90612b95565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fb591906127be565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102890612c27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109790612cb9565b60405180910390fd5b600081116110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612d4b565b60405180910390fd5b6110eb610931565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111595750611129610931565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156113db57601160149054906101000a900460ff1661125357600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806112135750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612db7565b60405180910390fd5b5b600061125e3061078d565b90506000601354821015905060146013546112799190612e06565b821061129157601460135461128e9190612e06565b91505b8080156112ab5750601160159054906101000a900460ff16155b80156113055750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561131d5750601160169054906101000a900460ff165b80156113735750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113c95750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113d8576113d7826117ae565b5b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114825750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115355750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115345750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561154357600090506116ca565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115ee5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561160657600754600b81905550600854600c819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116b15750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156116c957600954600b81905550600a54600c819055505b5b6116d684848484611e31565b50505050565b6000838311158290611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b91906125f5565b60405180910390fd5b50600083856117339190612e60565b9050809150509392505050565b6000600554821115611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90612f06565b60405180910390fd5b6000611791611e5e565b90506117a68184611e8990919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600567ffffffffffffffff8111156117e6576117e5612f26565b5b6040519080825280602002602001820160405280156118145781602001602082028036833780820191505090505b50905060016012540361195357308160008151811061183657611835612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106118a5576118a4612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160028151811061191457611913612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d16565b600260125403611b6d57308160008151811061197257611971612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106119e1576119e0612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110611a5057611a4f612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600381518110611abf57611abe612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600481518110611b2e57611b2d612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d15565b600360125403611d14573081600081518110611b8c57611b8b612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611bfb57611bfa612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600281518110611c6a57611c69612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600381518110611cd957611cd8612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b5b5b611d4330600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610df9565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173983600084601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611dc995949392919061307d565b6000604051808303816000875af1158015611de8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611e119190613205565b50506000601160156101000a81548160ff02191690831515021790555050565b80611e3f57611e3e611ed3565b5b611e4a848484611f10565b80611e5857611e576120db565b5b50505050565b6000806000611e6b6120ef565b91509150611e828183611e8990919063ffffffff16565b9250505090565b6000611ecb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612157565b905092915050565b6000600b54148015611ee757506000600c54145b611f0e57600b54600d81905550600c54600e819055506000600b819055506000600c819055505b565b600080600080600080611f22876121ba565b955095509550955095509550611f8086600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061201585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612061816122ca565b61206b8483612387565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120c891906127be565b60405180910390a3505050505050505050565b600d54600b81905550600e54600c81905550565b6000806000600554905060006aa6b589f45e2b5b05eb040090506121296aa6b589f45e2b5b05eb0400600554611e8990919063ffffffff16565b82101561214a576005546aa6b589f45e2b5b05eb0400935093505050612153565b81819350935050505b9091565b6000808311829061219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219591906125f5565b60405180910390fd5b50600083856121ad919061327d565b9050809150509392505050565b60008060008060008060008060006121d78a600b54600c546123c1565b92509250925060006121e7611e5e565b905060008060006121fa8e878787612459565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061226483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116dc565b905092915050565b600080828461227b91906132ae565b9050838110156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790613350565b60405180910390fd5b8091505092915050565b60006122d4611e5e565b905060006122eb82846124e290919063ffffffff16565b905061233f81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61239c8260055461222290919063ffffffff16565b6005819055506123b78160065461226c90919063ffffffff16565b6006819055505050565b6000806000806123ee6127106123e0888a6124e290919063ffffffff16565b611e8990919063ffffffff16565b9050600061241961271061240b888b6124e290919063ffffffff16565b611e8990919063ffffffff16565b9050600061244282612434858c61222290919063ffffffff16565b61222290919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061247285896124e290919063ffffffff16565b9050600061248986896124e290919063ffffffff16565b905060006124a087896124e290919063ffffffff16565b905060006124c9826124bb858761222290919063ffffffff16565b61222290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036124f45760009050612556565b600082846125029190612e06565b9050828482612511919061327d565b14612551576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612548906133e2565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259657808201518184015260208101905061257b565b838111156125a5576000848401525b50505050565b6000601f19601f8301169050919050565b60006125c78261255c565b6125d18185612567565b93506125e1818560208601612578565b6125ea816125ab565b840191505092915050565b6000602082019050818103600083015261260f81846125bc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126568261262b565b9050919050565b6126668161264b565b811461267157600080fd5b50565b6000813590506126838161265d565b92915050565b6000819050919050565b61269c81612689565b81146126a757600080fd5b50565b6000813590506126b981612693565b92915050565b600080604083850312156126d6576126d5612621565b5b60006126e485828601612674565b92505060206126f5858286016126aa565b9150509250929050565b60008115159050919050565b612714816126ff565b82525050565b600060208201905061272f600083018461270b565b92915050565b6000819050919050565b600061275a6127556127508461262b565b612735565b61262b565b9050919050565b600061276c8261273f565b9050919050565b600061277e82612761565b9050919050565b61278e81612773565b82525050565b60006020820190506127a96000830184612785565b92915050565b6127b881612689565b82525050565b60006020820190506127d360008301846127af565b92915050565b6000806000606084860312156127f2576127f1612621565b5b600061280086828701612674565b935050602061281186828701612674565b9250506040612822868287016126aa565b9150509250925092565b600060ff82169050919050565b6128428161282c565b82525050565b600060208201905061285d6000830184612839565b92915050565b61286c8161264b565b82525050565b60006020820190506128876000830184612863565b92915050565b6000602082840312156128a3576128a2612621565b5b60006128b184828501612674565b91505092915050565b600080604083850312156128d1576128d0612621565b5b60006128df85828601612674565b92505060206128f085828601612674565b9150509250929050565b6000602082840312156129105761290f612621565b5b600061291e848285016126aa565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061295d602083612567565b915061296882612927565b602082019050919050565b6000602082019050818103600083015261298c81612950565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129ef602683612567565b91506129fa82612993565b604082019050919050565b60006020820190508181036000830152612a1e816129e2565b9050919050565b7f57726f6e6720496e707574210000000000000000000000000000000000000000600082015250565b6000612a5b600c83612567565b9150612a6682612a25565b602082019050919050565b60006020820190508181036000830152612a8a81612a4e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612aed602483612567565b9150612af882612a91565b604082019050919050565b60006020820190508181036000830152612b1c81612ae0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b7f602283612567565b9150612b8a82612b23565b604082019050919050565b60006020820190508181036000830152612bae81612b72565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c11602583612567565b9150612c1c82612bb5565b604082019050919050565b60006020820190508181036000830152612c4081612c04565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ca3602383612567565b9150612cae82612c47565b604082019050919050565b60006020820190508181036000830152612cd281612c96565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d35602983612567565b9150612d4082612cd9565b604082019050919050565b60006020820190508181036000830152612d6481612d28565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000612da1601683612567565b9150612dac82612d6b565b602082019050919050565b60006020820190508181036000830152612dd081612d94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e1182612689565b9150612e1c83612689565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e5557612e54612dd7565b5b828202905092915050565b6000612e6b82612689565b9150612e7683612689565b925082821015612e8957612e88612dd7565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612ef0602a83612567565b9150612efb82612e94565b604082019050919050565b60006020820190508181036000830152612f1f81612ee3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000612fa9612fa4612f9f84612f84565b612735565b612689565b9050919050565b612fb981612f8e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ff48161264b565b82525050565b60006130068383612feb565b60208301905092915050565b6000602082019050919050565b600061302a82612fbf565b6130348185612fca565b935061303f83612fdb565b8060005b838110156130705781516130578882612ffa565b975061306283613012565b925050600181019050613043565b5085935050505092915050565b600060a08201905061309260008301886127af565b61309f6020830187612fb0565b81810360408301526130b1818661301f565b90506130c06060830185612863565b6130cd60808301846127af565b9695505050505050565b600080fd5b6130e5826125ab565b810181811067ffffffffffffffff8211171561310457613103612f26565b5b80604052505050565b6000613117612617565b905061312382826130dc565b919050565b600067ffffffffffffffff82111561314357613142612f26565b5b602082029050602081019050919050565b600080fd5b60008151905061316881612693565b92915050565b600061318161317c84613128565b61310d565b905080838252602082019050602084028301858111156131a4576131a3613154565b5b835b818110156131cd57806131b98882613159565b8452602084019350506020810190506131a6565b5050509392505050565b600082601f8301126131ec576131eb6130d7565b5b81516131fc84826020860161316e565b91505092915050565b60006020828403121561321b5761321a612621565b5b600082015167ffffffffffffffff81111561323957613238612626565b5b613245848285016131d7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061328882612689565b915061329383612689565b9250826132a3576132a261324e565b5b828204905092915050565b60006132b982612689565b91506132c483612689565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132f9576132f8612dd7565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061333a601b83612567565b915061334582613304565b602082019050919050565b600060208201905081810360008301526133698161332d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006133cc602183612567565b91506133d782613370565b604082019050919050565b600060208201905081810360008301526133fb816133bf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203f2381fc2acdd9e6727062b6996a56d15b3f31970c777c97e9a87e90ac0a592864736f6c634300080e0033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80635187c3a8116100b6578063bec8ca581161006f578063bec8ca581461045f578063c9567bf91461048a578063dd62ed3e146104a1578063f2fde38b146104de578063f4b9fa7514610507578063fa0037a9146105325761014b565b80635187c3a81461034d57806370a0823114610378578063715018a6146103b55780638da5cb5b146103cc57806395d89b41146103f7578063a9059cbb146104225761014b565b80632fd689e3116101085780632fd689e31461024b578063313ce567146102765780633e413bee146102a15780633fc8cef3146102cc57806349bd5a5e146102f757806350cd4df2146103225761014b565b806306fdde0314610150578063095ea7b31461017b5780631694505e146101b857806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561055b565b60405161017291906125f5565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906126bf565b610598565b6040516101af919061271a565b60405180910390f35b3480156101c457600080fd5b506101cd6105b6565b6040516101da9190612794565b60405180910390f35b3480156101ef57600080fd5b506101f86105dc565b60405161020591906127be565b60405180910390f35b34801561021a57600080fd5b50610235600480360381019061023091906127d9565b6105ef565b604051610242919061271a565b60405180910390f35b34801561025757600080fd5b506102606106c8565b60405161026d91906127be565b60405180910390f35b34801561028257600080fd5b5061028b6106ce565b6040516102989190612848565b60405180910390f35b3480156102ad57600080fd5b506102b66106d7565b6040516102c39190612872565b60405180910390f35b3480156102d857600080fd5b506102e16106fb565b6040516102ee9190612872565b60405180910390f35b34801561030357600080fd5b5061030c61071f565b6040516103199190612872565b60405180910390f35b34801561032e57600080fd5b50610337610745565b6040516103449190612872565b60405180910390f35b34801561035957600080fd5b50610362610769565b60405161036f9190612872565b60405180910390f35b34801561038457600080fd5b5061039f600480360381019061039a919061288d565b61078d565b6040516103ac91906127be565b60405180910390f35b3480156103c157600080fd5b506103ca6107de565b005b3480156103d857600080fd5b506103e1610931565b6040516103ee9190612872565b60405180910390f35b34801561040357600080fd5b5061040c61095a565b60405161041991906125f5565b60405180910390f35b34801561042e57600080fd5b50610449600480360381019061044491906126bf565b610997565b604051610456919061271a565b60405180910390f35b34801561046b57600080fd5b506104746109b5565b6040516104819190612872565b60405180910390f35b34801561049657600080fd5b5061049f6109d9565b005b3480156104ad57600080fd5b506104c860048036038101906104c391906128ba565b610a8b565b6040516104d591906127be565b60405180910390f35b3480156104ea57600080fd5b506105056004803603810190610500919061288d565b610b12565b005b34801561051357600080fd5b5061051c610cd3565b6040516105299190612872565b60405180910390f35b34801561053e57600080fd5b50610559600480360381019061055491906128fa565b610cf7565b005b60606040518060400160405280600e81526020017f5468652057696e6420426c6f7773000000000000000000000000000000000000815250905090565b60006105ac6105a5610df1565b8484610df9565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006aa6b589f45e2b5b05eb0400905090565b60006105fc848484610fc2565b6106bd84610608610df1565b6106b88560405180606001604052806028815260200161340360289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061066e610df1565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116dc9092919063ffffffff16565b610df9565b600190509392505050565b60135481565b60006012905090565b7f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b7f000000000000000000000000b53ecf1345cabee6ea1a65100ebb153cebcac40f81565b7f000000000000000000000000f3b9569f82b18aef890de263b84189bd33ebe45281565b60006107d7600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611740565b9050919050565b6107e6610df1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610873576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086a90612973565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f2457494e44000000000000000000000000000000000000000000000000000000815250905090565b60006109ab6109a4610df1565b8484610fc2565b6001905092915050565b7f000000000000000000000000a71d0588eaf47f12b13cf8ec750430d21df0497481565b6109e1610df1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6590612973565b60405180910390fd5b6001601160146101000a81548160ff021916908315150217905550565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610b1a610df1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ba7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9e90612973565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0d90612a05565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b7f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81565b610cff610df1565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8390612973565b60405180910390fd5b6001811480610d9b5750600281145b80610da857506003601254145b610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde90612a71565b60405180910390fd5b8060128190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e68576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5f90612b03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ed7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ece90612b95565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610fb591906127be565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611031576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102890612c27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109790612cb9565b60405180910390fd5b600081116110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612d4b565b60405180910390fd5b6110eb610931565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156111595750611129610931565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156113db57601160149054906101000a900460ff1661125357600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806112135750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611252576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124990612db7565b60405180910390fd5b5b600061125e3061078d565b90506000601354821015905060146013546112799190612e06565b821061129157601460135461128e9190612e06565b91505b8080156112ab5750601160159054906101000a900460ff16155b80156113055750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561131d5750601160169054906101000a900460ff165b80156113735750600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156113c95750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156113d8576113d7826117ae565b5b50505b600060019050600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806114825750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806115355750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156115345750601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561154357600090506116ca565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115ee5750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561160657600754600b81905550600854600c819055505b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156116b15750600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156116c957600954600b81905550600a54600c819055505b5b6116d684848484611e31565b50505050565b6000838311158290611724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171b91906125f5565b60405180910390fd5b50600083856117339190612e60565b9050809150509392505050565b6000600554821115611787576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177e90612f06565b60405180910390fd5b6000611791611e5e565b90506117a68184611e8990919063ffffffff16565b915050919050565b6001601160156101000a81548160ff0219169083151502179055506000600567ffffffffffffffff8111156117e6576117e5612f26565b5b6040519080825280602002602001820160405280156118145781602001602082028036833780820191505090505b50905060016012540361195357308160008151811061183657611835612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48816001815181106118a5576118a4612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000f3b9569f82b18aef890de263b84189bd33ebe4528160028151811061191457611913612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d16565b600260125403611b6d57308160008151811061197257611971612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48816001815181106119e1576119e0612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600281518110611a5057611a4f612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f81600381518110611abf57611abe612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000b53ecf1345cabee6ea1a65100ebb153cebcac40f81600481518110611b2e57611b2d612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d15565b600360125403611d14573081600081518110611b8c57611b8b612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4881600181518110611bfb57611bfa612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600281518110611c6a57611c69612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000a71d0588eaf47f12b13cf8ec750430d21df0497481600381518110611cd957611cd8612f55565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b5b5b611d4330600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610df9565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166338ed173983600084601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611dc995949392919061307d565b6000604051808303816000875af1158015611de8573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190611e119190613205565b50506000601160156101000a81548160ff02191690831515021790555050565b80611e3f57611e3e611ed3565b5b611e4a848484611f10565b80611e5857611e576120db565b5b50505050565b6000806000611e6b6120ef565b91509150611e828183611e8990919063ffffffff16565b9250505090565b6000611ecb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612157565b905092915050565b6000600b54148015611ee757506000600c54145b611f0e57600b54600d81905550600c54600e819055506000600b819055506000600c819055505b565b600080600080600080611f22876121ba565b955095509550955095509550611f8086600160008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461222290919063ffffffff16565b600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061201585600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226c90919063ffffffff16565b600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612061816122ca565b61206b8483612387565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516120c891906127be565b60405180910390a3505050505050505050565b600d54600b81905550600e54600c81905550565b6000806000600554905060006aa6b589f45e2b5b05eb040090506121296aa6b589f45e2b5b05eb0400600554611e8990919063ffffffff16565b82101561214a576005546aa6b589f45e2b5b05eb0400935093505050612153565b81819350935050505b9091565b6000808311829061219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219591906125f5565b60405180910390fd5b50600083856121ad919061327d565b9050809150509392505050565b60008060008060008060008060006121d78a600b54600c546123c1565b92509250925060006121e7611e5e565b905060008060006121fa8e878787612459565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061226483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116dc565b905092915050565b600080828461227b91906132ae565b9050838110156122c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b790613350565b60405180910390fd5b8091505092915050565b60006122d4611e5e565b905060006122eb82846124e290919063ffffffff16565b905061233f81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461226c90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61239c8260055461222290919063ffffffff16565b6005819055506123b78160065461226c90919063ffffffff16565b6006819055505050565b6000806000806123ee6127106123e0888a6124e290919063ffffffff16565b611e8990919063ffffffff16565b9050600061241961271061240b888b6124e290919063ffffffff16565b611e8990919063ffffffff16565b9050600061244282612434858c61222290919063ffffffff16565b61222290919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061247285896124e290919063ffffffff16565b9050600061248986896124e290919063ffffffff16565b905060006124a087896124e290919063ffffffff16565b905060006124c9826124bb858761222290919063ffffffff16565b61222290919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083036124f45760009050612556565b600082846125029190612e06565b9050828482612511919061327d565b14612551576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612548906133e2565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259657808201518184015260208101905061257b565b838111156125a5576000848401525b50505050565b6000601f19601f8301169050919050565b60006125c78261255c565b6125d18185612567565b93506125e1818560208601612578565b6125ea816125ab565b840191505092915050565b6000602082019050818103600083015261260f81846125bc565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126568261262b565b9050919050565b6126668161264b565b811461267157600080fd5b50565b6000813590506126838161265d565b92915050565b6000819050919050565b61269c81612689565b81146126a757600080fd5b50565b6000813590506126b981612693565b92915050565b600080604083850312156126d6576126d5612621565b5b60006126e485828601612674565b92505060206126f5858286016126aa565b9150509250929050565b60008115159050919050565b612714816126ff565b82525050565b600060208201905061272f600083018461270b565b92915050565b6000819050919050565b600061275a6127556127508461262b565b612735565b61262b565b9050919050565b600061276c8261273f565b9050919050565b600061277e82612761565b9050919050565b61278e81612773565b82525050565b60006020820190506127a96000830184612785565b92915050565b6127b881612689565b82525050565b60006020820190506127d360008301846127af565b92915050565b6000806000606084860312156127f2576127f1612621565b5b600061280086828701612674565b935050602061281186828701612674565b9250506040612822868287016126aa565b9150509250925092565b600060ff82169050919050565b6128428161282c565b82525050565b600060208201905061285d6000830184612839565b92915050565b61286c8161264b565b82525050565b60006020820190506128876000830184612863565b92915050565b6000602082840312156128a3576128a2612621565b5b60006128b184828501612674565b91505092915050565b600080604083850312156128d1576128d0612621565b5b60006128df85828601612674565b92505060206128f085828601612674565b9150509250929050565b6000602082840312156129105761290f612621565b5b600061291e848285016126aa565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061295d602083612567565b915061296882612927565b602082019050919050565b6000602082019050818103600083015261298c81612950565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006129ef602683612567565b91506129fa82612993565b604082019050919050565b60006020820190508181036000830152612a1e816129e2565b9050919050565b7f57726f6e6720496e707574210000000000000000000000000000000000000000600082015250565b6000612a5b600c83612567565b9150612a6682612a25565b602082019050919050565b60006020820190508181036000830152612a8a81612a4e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612aed602483612567565b9150612af882612a91565b604082019050919050565b60006020820190508181036000830152612b1c81612ae0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b7f602283612567565b9150612b8a82612b23565b604082019050919050565b60006020820190508181036000830152612bae81612b72565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c11602583612567565b9150612c1c82612bb5565b604082019050919050565b60006020820190508181036000830152612c4081612c04565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612ca3602383612567565b9150612cae82612c47565b604082019050919050565b60006020820190508181036000830152612cd281612c96565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d35602983612567565b9150612d4082612cd9565b604082019050919050565b60006020820190508181036000830152612d6481612d28565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000612da1601683612567565b9150612dac82612d6b565b602082019050919050565b60006020820190508181036000830152612dd081612d94565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e1182612689565b9150612e1c83612689565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e5557612e54612dd7565b5b828202905092915050565b6000612e6b82612689565b9150612e7683612689565b925082821015612e8957612e88612dd7565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612ef0602a83612567565b9150612efb82612e94565b604082019050919050565b60006020820190508181036000830152612f1f81612ee3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b6000612fa9612fa4612f9f84612f84565b612735565b612689565b9050919050565b612fb981612f8e565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ff48161264b565b82525050565b60006130068383612feb565b60208301905092915050565b6000602082019050919050565b600061302a82612fbf565b6130348185612fca565b935061303f83612fdb565b8060005b838110156130705781516130578882612ffa565b975061306283613012565b925050600181019050613043565b5085935050505092915050565b600060a08201905061309260008301886127af565b61309f6020830187612fb0565b81810360408301526130b1818661301f565b90506130c06060830185612863565b6130cd60808301846127af565b9695505050505050565b600080fd5b6130e5826125ab565b810181811067ffffffffffffffff8211171561310457613103612f26565b5b80604052505050565b6000613117612617565b905061312382826130dc565b919050565b600067ffffffffffffffff82111561314357613142612f26565b5b602082029050602081019050919050565b600080fd5b60008151905061316881612693565b92915050565b600061318161317c84613128565b61310d565b905080838252602082019050602084028301858111156131a4576131a3613154565b5b835b818110156131cd57806131b98882613159565b8452602084019350506020810190506131a6565b5050509392505050565b600082601f8301126131ec576131eb6130d7565b5b81516131fc84826020860161316e565b91505092915050565b60006020828403121561321b5761321a612621565b5b600082015167ffffffffffffffff81111561323957613238612626565b5b613245848285016131d7565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061328882612689565b915061329383612689565b9250826132a3576132a261324e565b5b828204905092915050565b60006132b982612689565b91506132c483612689565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132f9576132f8612dd7565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061333a601b83612567565b915061334582613304565b602082019050919050565b600060208201905081810360008301526133698161332d565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006133cc602183612567565b91506133d782613370565b604082019050919050565b600060208201905081810360008301526133fb816133bf565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203f2381fc2acdd9e6727062b6996a56d15b3f31970c777c97e9a87e90ac0a592864736f6c634300080e0033

Deployed Bytecode Sourcemap

3906:12022:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6749:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7674:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4996:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7026:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7875:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5477:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6935:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5079:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5150;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5044:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5256:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5186:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7129:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1521:148;;;;;;;;;;;;;:::i;:::-;;1307:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6840:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7275:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5221:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12223:68;;;;;;;;;;;;;:::i;:::-;;7482:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1677:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5115:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12300:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6749:83;6786:13;6819:5;;;;;;;;;;;;;;;;;6812:12;;6749:83;:::o;7674:193::-;7776:4;7798:39;7807:12;:10;:12::i;:::-;7821:7;7830:6;7798:8;:39::i;:::-;7855:4;7848:11;;7674:193;;;;:::o;4996:41::-;;;;;;;;;;;;;:::o;7026:95::-;7079:7;4457:24;7099:14;;7026:95;:::o;7875:446::-;8007:4;8024:36;8034:6;8042:9;8053:6;8024:9;:36::i;:::-;8071:220;8094:6;8115:12;:10;:12::i;:::-;8142:138;8198:6;8142:138;;;;;;;;;;;;;;;;;:11;:19;8154:6;8142:19;;;;;;;;;;;;;;;:33;8162:12;:10;:12::i;:::-;8142:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8071:8;:220::i;:::-;8309:4;8302:11;;7875:446;;;;;:::o;5477:51::-;;;;:::o;6935:83::-;6976:5;4130:2;6994:16;;6935:83;:::o;5079:29::-;;;:::o;5150:::-;;;:::o;5044:28::-;;;;;;;;;;;;;:::o;5256:26::-;;;:::o;5186:28::-;;;:::o;7129:138::-;7195:7;7222:37;7242:7;:16;7250:7;7242:16;;;;;;;;;;;;;;;;7222:19;:37::i;:::-;7215:44;;7129:138;;;:::o;1521:148::-;1444:12;:10;:12::i;:::-;1434:22;;:6;;;;;;;;;;:22;;;1426:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1628:1:::1;1591:40;;1612:6;::::0;::::1;;;;;;;;1591:40;;;;;;;;;;;;1659:1;1642:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1521:148::o:0;1307:79::-;1345:7;1372:6;;;;;;;;;;;1365:13;;1307:79;:::o;6840:87::-;6879:13;6912:7;;;;;;;;;;;;;;;;;6905:14;;6840:87;:::o;7275:199::-;7380:4;7402:42;7412:12;:10;:12::i;:::-;7426:9;7437:6;7402:9;:42::i;:::-;7462:4;7455:11;;7275:199;;;;:::o;5221:28::-;;;:::o;12223:68::-;1444:12;:10;:12::i;:::-;1434:22;;:6;;;;;;;;;;:22;;;1426:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12282:4:::1;12268:11;;:18;;;;;;;;;;;;;;;;;;12223:68::o:0;7482:184::-;7599:7;7631:11;:18;7643:5;7631:18;;;;;;;;;;;;;;;:27;7650:7;7631:27;;;;;;;;;;;;;;;;7624:34;;7482:184;;;;:::o;1677:244::-;1444:12;:10;:12::i;:::-;1434:22;;:6;;;;;;;;;;:22;;;1426:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1786:1:::1;1766:22;;:8;:22;;::::0;1758:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1876:8;1847:38;;1868:6;::::0;::::1;;;;;;;;1847:38;;;;;;;;;;;;1905:8;1896:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1677:244:::0;:::o;5115:28::-;;;:::o;12300:215::-;1444:12;:10;:12::i;:::-;1434:22;;:6;;;;;;;;;;:22;;;1426:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12405:1:::1;12388:13;:18;:41;;;;12428:1;12411:13;:18;12388:41;:62;;;;12449:1;12433:12;;:17;12388:62;12379:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;12494:13;12479:12;:28;;;;12300:215:::0;:::o;103:98::-;156:7;183:10;176:17;;103:98;:::o;9012:369::-;9156:1;9139:19;;:5;:19;;;9131:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9237:1;9218:21;;:7;:21;;;9210:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9319:6;9289:11;:18;9301:5;9289:18;;;;;;;;;;;;;;;:27;9308:7;9289:27;;;;;;;;;;;;;;;:36;;;;9357:7;9341:32;;9350:5;9341:32;;;9366:6;9341:32;;;;;;:::i;:::-;;;;;;;;9012:369;;;:::o;9389:1822::-;9527:1;9511:18;;:4;:18;;;9503:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9604:1;9590:16;;:2;:16;;;9582:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9674:1;9665:6;:10;9657:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9746:7;:5;:7::i;:::-;9738:15;;:4;:15;;;;:32;;;;;9763:7;:5;:7::i;:::-;9757:13;;:2;:13;;;;9738:32;9734:751;;;9828:11;;;;;;;;;;;9823:138;;9868:18;:24;9887:4;9868:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;9896:18;:22;9915:2;9896:22;;;;;;;;;;;;;;;;;;;;;;;;;9868:50;9860:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;9823:138;9977:28;10008:24;10026:4;10008:9;:24::i;:::-;9977:55;;10047:12;10086:19;;10062:20;:43;;10047:58;;10171:2;10149:19;;:24;;;;:::i;:::-;10125:20;:48;10122:148;;10252:2;10230:19;;:24;;;;:::i;:::-;10207:47;;10122:148;10290:7;:18;;;;;10302:6;;;;;;;;;;;10301:7;10290:18;:43;;;;;10320:13;;;;;;;;;;;10312:21;;:4;:21;;;;10290:43;:58;;;;;10337:11;;;;;;;;;;;10290:58;:87;;;;;10353:18;:24;10372:4;10353:24;;;;;;;;;;;;;;;;;;;;;;;;;10352:25;10290:87;:114;;;;;10382:18;:22;10401:2;10382:22;;;;;;;;;;;;;;;;;;;;;;;;;10381:23;10290:114;10286:188;;;10425:33;10437:20;10425:11;:33::i;:::-;10286:188;9772:713;;9734:751;10497:12;10512:4;10497:19;;10561:18;:24;10580:4;10561:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10589:18;:22;10608:2;10589:22;;;;;;;;;;;;;;;;;;;;;;;;;10561:50;10560:102;;;;10625:13;;;;;;;;;;;10617:21;;:4;:21;;;;:44;;;;;10648:13;;;;;;;;;;;10642:19;;:2;:19;;;;10617:44;10560:102;10556:594;;;10689:5;10679:15;;10556:594;;;10772:13;;;;;;;;;;;10764:21;;:4;:21;;;:55;;;;;10803:15;;;;;;;;;;;10789:30;;:2;:30;;;;10764:55;10761:162;;;10852:14;;10840:9;:26;;;;10895:12;;10885:7;:22;;;;10761:162;10982:13;;;;;;;;;;;10976:19;;:2;:19;;;:55;;;;;11015:15;;;;;;;;;;;10999:32;;:4;:32;;;;10976:55;10972:165;;;11064:15;;11052:9;:27;;;;11108:13;;11098:7;:23;;;;10972:165;10556:594;11162:41;11177:4;11183:2;11187:6;11195:7;11162:14;:41::i;:::-;9492:1719;9389:1822;;;:::o;2285:224::-;2405:7;2438:1;2433;:6;;2441:12;2425:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2465:9;2481:1;2477;:5;;;;:::i;:::-;2465:17;;2500:1;2493:8;;;2285:224;;;;;:::o;8329:323::-;8424:7;8482;;8471;:18;;8449:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8570:19;8592:10;:8;:10::i;:::-;8570:32;;8620:24;8632:11;8620:7;:11;;:24;;;;:::i;:::-;8613:31;;;8329:323;;;:::o;11219:999::-;5578:4;5569:6;;:13;;;;;;;;;;;;;;;;;;11294:21:::1;11332:1;11318:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11294:40;;11405:1;11389:12;;:17:::0;11385:568:::1;;11469:4;11451;11456:1;11451:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11499:4;11489;11494:1;11489:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11528:3;11518:4;11523:1;11518:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;::::0;::::1;11385:568;;;11569:1;11553:12;;:17:::0;11549:404:::1;;11631:4;11613;11618:1;11613:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11661:4;11651;11656:1;11651:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11690:4;11680;11685:1;11680:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11719:3;11709:4;11714:1;11709:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;::::0;::::1;11747:1;11737:4;11742:1;11737:7;;;;;;;;:::i;:::-;;;;;;;:11;;;;;;;;;::::0;::::1;11549:404;;;11786:1;11770:12;;:17:::0;11766:187:::1;;11850:4;11832;11837:1;11832:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11880:4;11870;11875:1;11870:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11909:4;11899;11904:1;11899:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;11938:3;11928:4;11933:1;11928:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;::::0;::::1;11766:187;11549:404;11385:568;11965:62;11982:4;11997:15;;;;;;;;;;;12015:11;11965:8;:62::i;:::-;12040:15;;;;;;;;;;;:40;;;12095:11;12121:1;12137:4;12156:13;;;;;;;;;;;12184:15;12040:170;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11281:937;5614:5:::0;5605:6;;:14;;;;;;;;;;;;;;;;;;11219:999;:::o;12523:282::-;12679:7;12674:28;;12688:14;:12;:14::i;:::-;12674:28;12713:44;12731:6;12739:9;12750:6;12713:17;:44::i;:::-;12773:7;12768:29;;12782:15;:13;:15::i;:::-;12768:29;12523:282;;;;:::o;15494:164::-;15536:7;15557:15;15574;15593:19;:17;:19::i;:::-;15556:56;;;;15630:20;15642:7;15630;:11;;:20;;;;:::i;:::-;15623:27;;;;15494:164;:::o;2771:132::-;2829:7;2856:39;2860:1;2863;2856:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2849:46;;2771:132;;;;:::o;8660:219::-;8720:1;8707:9;;:14;:30;;;;;8736:1;8725:7;;:12;8707:30;8739:7;8703:43;8778:9;;8758:17;:29;;;;8816:7;;8798:15;:25;;;;8848:1;8836:9;:13;;;;8870:1;8860:7;:11;;;;8660:219;:::o;12813:610::-;12960:15;12990:23;13028:12;13055:23;13093:12;13120:13;13147:19;13158:7;13147:10;:19::i;:::-;12945:221;;;;;;;;;;;;13195:28;13215:7;13195;:15;13203:6;13195:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13177:7;:15;13185:6;13177:15;;;;;;;;;;;;;;;:46;;;;13255:39;13278:15;13255:7;:18;13263:9;13255:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13234:7;:18;13242:9;13234:18;;;;;;;;;;;;;;;:60;;;;13305:16;13315:5;13305:9;:16::i;:::-;13332:23;13344:4;13350;13332:11;:23::i;:::-;13388:9;13371:44;;13380:6;13371:44;;;13399:15;13371:44;;;;;;:::i;:::-;;;;;;;;12934:489;;;;;;12813:610;;;:::o;8887:117::-;8943:17;;8931:9;:29;;;;8981:15;;8971:7;:25;;;;8887:117::o;15666:257::-;15717:7;15726;15746:15;15764:7;;15746:25;;15782:15;4457:24;15782:25;;15832:20;4457:24;15832:7;;:11;;:20;;;;:::i;:::-;15822:7;:30;15818:61;;;15862:7;;4457:24;15854:25;;;;;;;;15818:61;15898:7;15907;15890:25;;;;;;15666:257;;;:::o;2911:223::-;3031:7;3063:1;3059;:5;3066:12;3051:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3090:9;3106:1;3102;:5;;;;:::i;:::-;3090:17;;3125:1;3118:8;;;2911:223;;;;;:::o;13848:615::-;13948:7;13970;13992;14014;14036;14058;14094:23;14119:12;14133:13;14163:40;14175:7;14184:9;;14195:7;;14163:11;:40::i;:::-;14093:110;;;;;;14214:19;14236:10;:8;:10::i;:::-;14214:32;;14258:15;14275:23;14300:12;14329:46;14341:7;14350:4;14356:5;14363:11;14329;:46::i;:::-;14257:118;;;;;;14394:7;14403:15;14420:4;14426:15;14443:4;14449:5;14386:69;;;;;;;;;;;;;;;;;;;13848:615;;;;;;;:::o;2141:136::-;2199:7;2226:43;2230:1;2233;2226:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2219:50;;2141:136;;;;:::o;1954:179::-;2012:7;2032:9;2048:1;2044;:5;;;;:::i;:::-;2032:17;;2073:1;2068;:6;;2060:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2124:1;2117:8;;;1954:179;;;;:::o;13431:211::-;13484:19;13506:10;:8;:10::i;:::-;13484:32;;13527:13;13543:22;13553:11;13543:5;:9;;:22;;;;:::i;:::-;13527:38;;13601:33;13628:5;13601:7;:22;13617:4;13601:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13576:7;:22;13592:4;13576:22;;;;;;;;;;;;;;;:58;;;;13473:169;;13431:211;:::o;13650:147::-;13728:17;13740:4;13728:7;;:11;;:17;;;;:::i;:::-;13718:7;:27;;;;13769:20;13784:4;13769:10;;:14;;:20;;;;:::i;:::-;13756:10;:33;;;;13650:147;;:::o;14471:473::-;14640:7;14662;14684;14719:12;14734:32;14760:5;14734:21;14746:8;14734:7;:11;;:21;;;;:::i;:::-;:25;;:32;;;;:::i;:::-;14719:47;;14777:13;14793:30;14817:5;14793:19;14805:6;14793:7;:11;;:19;;;;:::i;:::-;:23;;:30;;;;:::i;:::-;14777:46;;14834:23;14860:28;14882:5;14860:17;14872:4;14860:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14834:54;;14907:15;14924:4;14930:5;14899:37;;;;;;;;;14471:473;;;;;;;:::o;14952:534::-;15146:7;15168;15190;15225:15;15243:24;15255:11;15243:7;:11;;:24;;;;:::i;:::-;15225:42;;15278:12;15293:21;15302:11;15293:4;:8;;:21;;;;:::i;:::-;15278:36;;15325:13;15341:22;15351:11;15341:5;:9;;:22;;;;:::i;:::-;15325:38;;15374:23;15400:28;15422:5;15400:17;15412:4;15400:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15374:54;;15447:7;15456:15;15473:4;15439:39;;;;;;;;;;14952:534;;;;;;;;:::o;2517:246::-;2575:7;2604:1;2599;:6;2595:47;;2629:1;2622:8;;;;2595:47;2652:9;2668:1;2664;:5;;;;:::i;:::-;2652:17;;2697:1;2692;2688;:5;;;;:::i;:::-;:10;2680:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2754:1;2747:8;;;2517:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1397:75::-;1430:6;1463:2;1457:9;1447:19;;1397:75;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:152::-;3916:9;3949:37;3980:5;3949:37;:::i;:::-;3936:50;;3840:152;;;:::o;3998:183::-;4111:63;4168:5;4111:63;:::i;:::-;4106:3;4099:76;3998:183;;:::o;4187:274::-;4306:4;4344:2;4333:9;4329:18;4321:26;;4357:97;4451:1;4440:9;4436:17;4427:6;4357:97;:::i;:::-;4187:274;;;;:::o;4467:118::-;4554:24;4572:5;4554:24;:::i;:::-;4549:3;4542:37;4467:118;;:::o;4591:222::-;4684:4;4722:2;4711:9;4707:18;4699:26;;4735:71;4803:1;4792:9;4788:17;4779:6;4735:71;:::i;:::-;4591:222;;;;:::o;4819:619::-;4896:6;4904;4912;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;5214:2;5240:53;5285:7;5276:6;5265:9;5261:22;5240:53;:::i;:::-;5230:63;;5185:118;5342:2;5368:53;5413:7;5404:6;5393:9;5389:22;5368:53;:::i;:::-;5358:63;;5313:118;4819:619;;;;;:::o;5444:86::-;5479:7;5519:4;5512:5;5508:16;5497:27;;5444:86;;;:::o;5536:112::-;5619:22;5635:5;5619:22;:::i;:::-;5614:3;5607:35;5536:112;;:::o;5654:214::-;5743:4;5781:2;5770:9;5766:18;5758:26;;5794:67;5858:1;5847:9;5843:17;5834:6;5794:67;:::i;:::-;5654:214;;;;:::o;5874:118::-;5961:24;5979:5;5961:24;:::i;:::-;5956:3;5949:37;5874:118;;:::o;5998:222::-;6091:4;6129:2;6118:9;6114:18;6106:26;;6142:71;6210:1;6199:9;6195:17;6186:6;6142:71;:::i;:::-;5998:222;;;;:::o;6226:329::-;6285:6;6334:2;6322:9;6313:7;6309:23;6305:32;6302:119;;;6340:79;;:::i;:::-;6302:119;6460:1;6485:53;6530:7;6521:6;6510:9;6506:22;6485:53;:::i;:::-;6475:63;;6431:117;6226:329;;;;:::o;6561:474::-;6629:6;6637;6686:2;6674:9;6665:7;6661:23;6657:32;6654:119;;;6692:79;;:::i;:::-;6654:119;6812:1;6837:53;6882:7;6873:6;6862:9;6858:22;6837:53;:::i;:::-;6827:63;;6783:117;6939:2;6965:53;7010:7;7001:6;6990:9;6986:22;6965:53;:::i;:::-;6955:63;;6910:118;6561:474;;;;;:::o;7041:329::-;7100:6;7149:2;7137:9;7128:7;7124:23;7120:32;7117:119;;;7155:79;;:::i;:::-;7117:119;7275:1;7300:53;7345:7;7336:6;7325:9;7321:22;7300:53;:::i;:::-;7290:63;;7246:117;7041:329;;;;:::o;7376:182::-;7516:34;7512:1;7504:6;7500:14;7493:58;7376:182;:::o;7564:366::-;7706:3;7727:67;7791:2;7786:3;7727:67;:::i;:::-;7720:74;;7803:93;7892:3;7803:93;:::i;:::-;7921:2;7916:3;7912:12;7905:19;;7564:366;;;:::o;7936:419::-;8102:4;8140:2;8129:9;8125:18;8117:26;;8189:9;8183:4;8179:20;8175:1;8164:9;8160:17;8153:47;8217:131;8343:4;8217:131;:::i;:::-;8209:139;;7936:419;;;:::o;8361:225::-;8501:34;8497:1;8489:6;8485:14;8478:58;8570:8;8565:2;8557:6;8553:15;8546:33;8361:225;:::o;8592:366::-;8734:3;8755:67;8819:2;8814:3;8755:67;:::i;:::-;8748:74;;8831:93;8920:3;8831:93;:::i;:::-;8949:2;8944:3;8940:12;8933:19;;8592:366;;;:::o;8964:419::-;9130:4;9168:2;9157:9;9153:18;9145:26;;9217:9;9211:4;9207:20;9203:1;9192:9;9188:17;9181:47;9245:131;9371:4;9245:131;:::i;:::-;9237:139;;8964:419;;;:::o;9389:162::-;9529:14;9525:1;9517:6;9513:14;9506:38;9389:162;:::o;9557:366::-;9699:3;9720:67;9784:2;9779:3;9720:67;:::i;:::-;9713:74;;9796:93;9885:3;9796:93;:::i;:::-;9914:2;9909:3;9905:12;9898:19;;9557:366;;;:::o;9929:419::-;10095:4;10133:2;10122:9;10118:18;10110:26;;10182:9;10176:4;10172:20;10168:1;10157:9;10153:17;10146:47;10210:131;10336:4;10210:131;:::i;:::-;10202:139;;9929:419;;;:::o;10354:223::-;10494:34;10490:1;10482:6;10478:14;10471:58;10563:6;10558:2;10550:6;10546:15;10539:31;10354:223;:::o;10583:366::-;10725:3;10746:67;10810:2;10805:3;10746:67;:::i;:::-;10739:74;;10822:93;10911:3;10822:93;:::i;:::-;10940:2;10935:3;10931:12;10924:19;;10583:366;;;:::o;10955:419::-;11121:4;11159:2;11148:9;11144:18;11136:26;;11208:9;11202:4;11198:20;11194:1;11183:9;11179:17;11172:47;11236:131;11362:4;11236:131;:::i;:::-;11228:139;;10955:419;;;:::o;11380:221::-;11520:34;11516:1;11508:6;11504:14;11497:58;11589:4;11584:2;11576:6;11572:15;11565:29;11380:221;:::o;11607:366::-;11749:3;11770:67;11834:2;11829:3;11770:67;:::i;:::-;11763:74;;11846:93;11935:3;11846:93;:::i;:::-;11964:2;11959:3;11955:12;11948:19;;11607:366;;;:::o;11979:419::-;12145:4;12183:2;12172:9;12168:18;12160:26;;12232:9;12226:4;12222:20;12218:1;12207:9;12203:17;12196:47;12260:131;12386:4;12260:131;:::i;:::-;12252:139;;11979:419;;;:::o;12404:224::-;12544:34;12540:1;12532:6;12528:14;12521:58;12613:7;12608:2;12600:6;12596:15;12589:32;12404:224;:::o;12634:366::-;12776:3;12797:67;12861:2;12856:3;12797:67;:::i;:::-;12790:74;;12873:93;12962:3;12873:93;:::i;:::-;12991:2;12986:3;12982:12;12975:19;;12634:366;;;:::o;13006:419::-;13172:4;13210:2;13199:9;13195:18;13187:26;;13259:9;13253:4;13249:20;13245:1;13234:9;13230:17;13223:47;13287:131;13413:4;13287:131;:::i;:::-;13279:139;;13006:419;;;:::o;13431:222::-;13571:34;13567:1;13559:6;13555:14;13548:58;13640:5;13635:2;13627:6;13623:15;13616:30;13431:222;:::o;13659:366::-;13801:3;13822:67;13886:2;13881:3;13822:67;:::i;:::-;13815:74;;13898:93;13987:3;13898:93;:::i;:::-;14016:2;14011:3;14007:12;14000:19;;13659:366;;;:::o;14031:419::-;14197:4;14235:2;14224:9;14220:18;14212:26;;14284:9;14278:4;14274:20;14270:1;14259:9;14255:17;14248:47;14312:131;14438:4;14312:131;:::i;:::-;14304:139;;14031:419;;;:::o;14456:228::-;14596:34;14592:1;14584:6;14580:14;14573:58;14665:11;14660:2;14652:6;14648:15;14641:36;14456:228;:::o;14690:366::-;14832:3;14853:67;14917:2;14912:3;14853:67;:::i;:::-;14846:74;;14929:93;15018:3;14929:93;:::i;:::-;15047:2;15042:3;15038:12;15031:19;;14690:366;;;:::o;15062:419::-;15228:4;15266:2;15255:9;15251:18;15243:26;;15315:9;15309:4;15305:20;15301:1;15290:9;15286:17;15279:47;15343:131;15469:4;15343:131;:::i;:::-;15335:139;;15062:419;;;:::o;15487:172::-;15627:24;15623:1;15615:6;15611:14;15604:48;15487:172;:::o;15665:366::-;15807:3;15828:67;15892:2;15887:3;15828:67;:::i;:::-;15821:74;;15904:93;15993:3;15904:93;:::i;:::-;16022:2;16017:3;16013:12;16006:19;;15665:366;;;:::o;16037:419::-;16203:4;16241:2;16230:9;16226:18;16218:26;;16290:9;16284:4;16280:20;16276:1;16265:9;16261:17;16254:47;16318:131;16444:4;16318:131;:::i;:::-;16310:139;;16037:419;;;:::o;16462:180::-;16510:77;16507:1;16500:88;16607:4;16604:1;16597:15;16631:4;16628:1;16621:15;16648:348;16688:7;16711:20;16729:1;16711:20;:::i;:::-;16706:25;;16745:20;16763:1;16745:20;:::i;:::-;16740:25;;16933:1;16865:66;16861:74;16858:1;16855:81;16850:1;16843:9;16836:17;16832:105;16829:131;;;16940:18;;:::i;:::-;16829:131;16988:1;16985;16981:9;16970:20;;16648:348;;;;:::o;17002:191::-;17042:4;17062:20;17080:1;17062:20;:::i;:::-;17057:25;;17096:20;17114:1;17096:20;:::i;:::-;17091:25;;17135:1;17132;17129:8;17126:34;;;17140:18;;:::i;:::-;17126:34;17185:1;17182;17178:9;17170:17;;17002:191;;;;:::o;17199:229::-;17339:34;17335:1;17327:6;17323:14;17316:58;17408:12;17403:2;17395:6;17391:15;17384:37;17199:229;:::o;17434:366::-;17576:3;17597:67;17661:2;17656:3;17597:67;:::i;:::-;17590:74;;17673:93;17762:3;17673:93;:::i;:::-;17791:2;17786:3;17782:12;17775:19;;17434:366;;;:::o;17806:419::-;17972:4;18010:2;17999:9;17995:18;17987:26;;18059:9;18053:4;18049:20;18045:1;18034:9;18030:17;18023:47;18087:131;18213:4;18087:131;:::i;:::-;18079:139;;17806:419;;;:::o;18231:180::-;18279:77;18276:1;18269:88;18376:4;18373:1;18366:15;18400:4;18397:1;18390:15;18417:180;18465:77;18462:1;18455:88;18562:4;18559:1;18552:15;18586:4;18583:1;18576:15;18603:85;18648:7;18677:5;18666:16;;18603:85;;;:::o;18694:158::-;18752:9;18785:61;18803:42;18812:32;18838:5;18812:32;:::i;:::-;18803:42;:::i;:::-;18785:61;:::i;:::-;18772:74;;18694:158;;;:::o;18858:147::-;18953:45;18992:5;18953:45;:::i;:::-;18948:3;18941:58;18858:147;;:::o;19011:114::-;19078:6;19112:5;19106:12;19096:22;;19011:114;;;:::o;19131:184::-;19230:11;19264:6;19259:3;19252:19;19304:4;19299:3;19295:14;19280:29;;19131:184;;;;:::o;19321:132::-;19388:4;19411:3;19403:11;;19441:4;19436:3;19432:14;19424:22;;19321:132;;;:::o;19459:108::-;19536:24;19554:5;19536:24;:::i;:::-;19531:3;19524:37;19459:108;;:::o;19573:179::-;19642:10;19663:46;19705:3;19697:6;19663:46;:::i;:::-;19741:4;19736:3;19732:14;19718:28;;19573:179;;;;:::o;19758:113::-;19828:4;19860;19855:3;19851:14;19843:22;;19758:113;;;:::o;19907:732::-;20026:3;20055:54;20103:5;20055:54;:::i;:::-;20125:86;20204:6;20199:3;20125:86;:::i;:::-;20118:93;;20235:56;20285:5;20235:56;:::i;:::-;20314:7;20345:1;20330:284;20355:6;20352:1;20349:13;20330:284;;;20431:6;20425:13;20458:63;20517:3;20502:13;20458:63;:::i;:::-;20451:70;;20544:60;20597:6;20544:60;:::i;:::-;20534:70;;20390:224;20377:1;20374;20370:9;20365:14;;20330:284;;;20334:14;20630:3;20623:10;;20031:608;;;19907:732;;;;:::o;20645:831::-;20908:4;20946:3;20935:9;20931:19;20923:27;;20960:71;21028:1;21017:9;21013:17;21004:6;20960:71;:::i;:::-;21041:80;21117:2;21106:9;21102:18;21093:6;21041:80;:::i;:::-;21168:9;21162:4;21158:20;21153:2;21142:9;21138:18;21131:48;21196:108;21299:4;21290:6;21196:108;:::i;:::-;21188:116;;21314:72;21382:2;21371:9;21367:18;21358:6;21314:72;:::i;:::-;21396:73;21464:3;21453:9;21449:19;21440:6;21396:73;:::i;:::-;20645:831;;;;;;;;:::o;21482:117::-;21591:1;21588;21581:12;21605:281;21688:27;21710:4;21688:27;:::i;:::-;21680:6;21676:40;21818:6;21806:10;21803:22;21782:18;21770:10;21767:34;21764:62;21761:88;;;21829:18;;:::i;:::-;21761:88;21869:10;21865:2;21858:22;21648:238;21605:281;;:::o;21892:129::-;21926:6;21953:20;;:::i;:::-;21943:30;;21982:33;22010:4;22002:6;21982:33;:::i;:::-;21892:129;;;:::o;22027:311::-;22104:4;22194:18;22186:6;22183:30;22180:56;;;22216:18;;:::i;:::-;22180:56;22266:4;22258:6;22254:17;22246:25;;22326:4;22320;22316:15;22308:23;;22027:311;;;:::o;22344:117::-;22453:1;22450;22443:12;22467:143;22524:5;22555:6;22549:13;22540:22;;22571:33;22598:5;22571:33;:::i;:::-;22467:143;;;;:::o;22633:732::-;22740:5;22765:81;22781:64;22838:6;22781:64;:::i;:::-;22765:81;:::i;:::-;22756:90;;22866:5;22895:6;22888:5;22881:21;22929:4;22922:5;22918:16;22911:23;;22982:4;22974:6;22970:17;22962:6;22958:30;23011:3;23003:6;23000:15;22997:122;;;23030:79;;:::i;:::-;22997:122;23145:6;23128:231;23162:6;23157:3;23154:15;23128:231;;;23237:3;23266:48;23310:3;23298:10;23266:48;:::i;:::-;23261:3;23254:61;23344:4;23339:3;23335:14;23328:21;;23204:155;23188:4;23183:3;23179:14;23172:21;;23128:231;;;23132:21;22746:619;;22633:732;;;;;:::o;23388:385::-;23470:5;23519:3;23512:4;23504:6;23500:17;23496:27;23486:122;;23527:79;;:::i;:::-;23486:122;23637:6;23631:13;23662:105;23763:3;23755:6;23748:4;23740:6;23736:17;23662:105;:::i;:::-;23653:114;;23476:297;23388:385;;;;:::o;23779:554::-;23874:6;23923:2;23911:9;23902:7;23898:23;23894:32;23891:119;;;23929:79;;:::i;:::-;23891:119;24070:1;24059:9;24055:17;24049:24;24100:18;24092:6;24089:30;24086:117;;;24122:79;;:::i;:::-;24086:117;24227:89;24308:7;24299:6;24288:9;24284:22;24227:89;:::i;:::-;24217:99;;24020:306;23779:554;;;;:::o;24339:180::-;24387:77;24384:1;24377:88;24484:4;24481:1;24474:15;24508:4;24505:1;24498:15;24525:185;24565:1;24582:20;24600:1;24582:20;:::i;:::-;24577:25;;24616:20;24634:1;24616:20;:::i;:::-;24611:25;;24655:1;24645:35;;24660:18;;:::i;:::-;24645:35;24702:1;24699;24695:9;24690:14;;24525:185;;;;:::o;24716:305::-;24756:3;24775:20;24793:1;24775:20;:::i;:::-;24770:25;;24809:20;24827:1;24809:20;:::i;:::-;24804:25;;24963:1;24895:66;24891:74;24888:1;24885:81;24882:107;;;24969:18;;:::i;:::-;24882:107;25013:1;25010;25006:9;24999:16;;24716:305;;;;:::o;25027:177::-;25167:29;25163:1;25155:6;25151:14;25144:53;25027:177;:::o;25210:366::-;25352:3;25373:67;25437:2;25432:3;25373:67;:::i;:::-;25366:74;;25449:93;25538:3;25449:93;:::i;:::-;25567:2;25562:3;25558:12;25551:19;;25210:366;;;:::o;25582:419::-;25748:4;25786:2;25775:9;25771:18;25763:26;;25835:9;25829:4;25825:20;25821:1;25810:9;25806:17;25799:47;25863:131;25989:4;25863:131;:::i;:::-;25855:139;;25582:419;;;:::o;26007:220::-;26147:34;26143:1;26135:6;26131:14;26124:58;26216:3;26211:2;26203:6;26199:15;26192:28;26007:220;:::o;26233:366::-;26375:3;26396:67;26460:2;26455:3;26396:67;:::i;:::-;26389:74;;26472:93;26561:3;26472:93;:::i;:::-;26590:2;26585:3;26581:12;26574:19;;26233:366;;;:::o;26605:419::-;26771:4;26809:2;26798:9;26794:18;26786:26;;26858:9;26852:4;26848:20;26844:1;26833:9;26829:17;26822:47;26886:131;27012:4;26886:131;:::i;:::-;26878:139;;26605:419;;;:::o

Swarm Source

ipfs://3f2381fc2acdd9e6727062b6996a56d15b3f31970c777c97e9a87e90ac0a5928
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.