ETH Price: $3,483.95 (+3.10%)

Token

Dune (DUNE)
 

Overview

Max Total Supply

100,000,000 DUNE

Holders

104

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 8 Decimals)

Balance
0.00000001 DUNE

Value
$0.00
0x7e8b5BE93382cac5de82259666E81Af5C4F39Cb0
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:
Dune

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
 *Submitted for verification at Etherscan.io on 2024-03-03
 */
// SPDX-License-Identifier: UNLICENSE

/*
Dune - Dune was one of Elon's favourite movies and Dune 2 is now out.
       Only a matter of time before he tweets about it. 

$DUNE

TG: https://t.me/duneofficialportal
Website: https://www.duneeth.xyz/
Twitter: https://twitter.com/Dune_fan

*/

pragma solidity ^0.8.19;

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract Dune is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax = 13;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 21;
    uint256 private _reduceSellTaxAt = 27;
    uint256 private _preventSwapBefore = 40;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;
    uint256 private _newFee;
    uint256 private currentBuyTax = _initialBuyTax;
    uint256 private currentSellTax = _initialSellTax;

    uint8 private constant _decimals = 8;
    uint256 private constant _tTotal = 100000000 * 10 ** _decimals;
    string private constant _name = unicode"Dune";
    string private constant _symbol = unicode"DUNE";
    uint256 public _maxTxAmount = 2000000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 1500000 * 10 ** _decimals;
    uint256 public _taxSwapThreshold = 1000000 * 10 ** _decimals;
    uint256 public _maxTaxSwap = 1000000 * 10 ** _decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    event FeeUpdated(uint _newFee);

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

    constructor() {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = 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 _balances[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 _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");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if (_buyCount == 0) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
            }
            if (_buyCount > 0) {
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (
                from == uniswapV2Pair &&
                to != address(uniswapV2Router) &&
                !_isExcludedFromFee[to]
            ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(
                    balanceOf(to) + amount <= _maxWalletSize,
                    "Exceeds the maxWalletSize."
                );
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceBuyTaxAt)
                            ? _finalBuyTax
                            : _initialBuyTax
                    )
                    .div(100);
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount
                    .mul(
                        (_buyCount > _reduceSellTaxAt)
                            ? _finalSellTax
                            : _initialSellTax
                    )
                    .div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap &&
                to == uniswapV2Pair &&
                swapEnabled &&
                contractTokenBalance > _taxSwapThreshold &&
                _buyCount > _preventSwapBefore
            ) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(
                    min(amount, min(contractTokenBalance, _maxTaxSwap))
                );
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

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

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTransferTax() external onlyOwner {
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

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

    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
        for (uint i = 0; i < notbot.length; i++) {
            bots[notbot[i]] = false;
        }
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this),
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    function reduceFee(uint256 newFee) external {
        require(_msgSender() == _taxWallet);
        require(newFee <= _finalBuyTax && newFee <= _finalSellTax);
        _finalBuyTax = newFee;
        _finalSellTax = newFee;
        currentBuyTax = newFee;
        currentSellTax = newFee;
        emit FeeUpdated(newFee);
    }

    function transferETHToDev() external onlyOwner {
        require(address(this).balance > 0, "No ETH to transfer");
        _taxWallet.transfer(address(this).balance);
    }

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"FeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","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":[],"name":"transferETHToDev","outputs":[],"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"},{"stateMutability":"payable","type":"receive"}]

6080604052600d6006556014600755600060085560006009556015600a55601b600b556028600c556000600d556000600e556006546010556007546011556008600a6200004d91906200062b565b621e84806200005d91906200067c565b6012556008600a6200007091906200062b565b6216e3606200008091906200067c565b6013556008600a6200009391906200062b565b620f4240620000a391906200067c565b6014556008600a620000b691906200062b565b620f4240620000c691906200067c565b6015556000601760156101000a81548160ff0219169083151502179055506000601760166101000a81548160ff021916908315150217905550600060185560006019553480156200011657600080fd5b506000620001296200046060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d76200046060201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008600a6200022791906200062b565b6305f5e1006200023891906200067c565b600160006200024c6200046060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002a06200046860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003d36200046060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008600a6200043291906200062b565b6305f5e1006200044391906200067c565b604051620004529190620006d8565b60405180910390a3620006f5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200051f57808604811115620004f757620004f662000491565b5b6001851615620005075780820291505b80810290506200051785620004c0565b9450620004d7565b94509492505050565b6000826200053a57600190506200060d565b816200054a57600090506200060d565b81600181146200056357600281146200056e57620005a4565b60019150506200060d565b60ff84111562000583576200058262000491565b5b8360020a9150848211156200059d576200059c62000491565b5b506200060d565b5060208310610133831016604e8410600b8410161715620005de5782820a905083811115620005d857620005d762000491565b5b6200060d565b620005ed8484846001620004cd565b9250905081840481111562000607576200060662000491565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620006388262000614565b915062000645836200061e565b9250620006747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000528565b905092915050565b6000620006898262000614565b9150620006968362000614565b9250828202620006a68162000614565b91508282048414831517620006c057620006bf62000491565b5b5092915050565b620006d28162000614565b82525050565b6000602082019050620006ef6000830184620006c7565b92915050565b6138b180620007056000396000f3fe60806040526004361061014f5760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb14610443578063bf474bed14610480578063c9567bf9146104ab578063d34628cc146104c2578063dd62ed3e146104eb578063ec1f3f631461052857610156565b8063715018a614610369578063751039fc146103805780637d1db4a5146103975780638da5cb5b146103c25780638f9a55c0146103ed57806395d89b411461041857610156565b8063313ce56711610108578063313ce5671461026d57806331c2d847146102985780633bbac579146102c157806351bc3c85146102fe578063692cda7a1461031557806370a082311461032c57610156565b806306fdde031461015b578063095ea7b3146101865780630faee56f146101c3578063109daa99146101ee57806318160ddd1461020557806323b872dd1461023057610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610551565b60405161017d919061274e565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612818565b61058e565b6040516101ba9190612873565b60405180910390f35b3480156101cf57600080fd5b506101d86105ac565b6040516101e5919061289d565b60405180910390f35b3480156101fa57600080fd5b506102036105b2565b005b34801561021157600080fd5b5061021a610689565b604051610227919061289d565b60405180910390f35b34801561023c57600080fd5b50610257600480360381019061025291906128b8565b6106ad565b6040516102649190612873565b60405180910390f35b34801561027957600080fd5b50610282610786565b60405161028f9190612927565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190612a8a565b61078f565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612ad3565b6108b9565b6040516102f59190612873565b60405180910390f35b34801561030a57600080fd5b5061031361090f565b005b34801561032157600080fd5b5061032a6109ac565b005b34801561033857600080fd5b50610353600480360381019061034e9190612ad3565b610aef565b604051610360919061289d565b60405180910390f35b34801561037557600080fd5b5061037e610b38565b005b34801561038c57600080fd5b50610395610c8b565b005b3480156103a357600080fd5b506103ac610dbb565b6040516103b9919061289d565b60405180910390f35b3480156103ce57600080fd5b506103d7610dc1565b6040516103e49190612b0f565b60405180910390f35b3480156103f957600080fd5b50610402610dea565b60405161040f919061289d565b60405180910390f35b34801561042457600080fd5b5061042d610df0565b60405161043a919061274e565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190612818565b610e2d565b6040516104779190612873565b60405180910390f35b34801561048c57600080fd5b50610495610e4b565b6040516104a2919061289d565b60405180910390f35b3480156104b757600080fd5b506104c0610e51565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190612a8a565b611389565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612b2a565b6114b3565b60405161051f919061289d565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612b6a565b61153a565b005b60606040518060400160405280600481526020017f44756e6500000000000000000000000000000000000000000000000000000000815250905090565b60006105a261059b61160e565b8484611616565b6001905092915050565b60155481565b6105ba61160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063e90612be3565b60405180910390fd5b6000600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3600060405161067f9190612c48565b60405180910390a1565b60006008600a6106999190612dc5565b6305f5e1006106a89190612e10565b905090565b60006106ba8484846117df565b61077b846106c661160e565b6107768560405180606001604052806028815260200161385460289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061072c61160e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218d9092919063ffffffff16565b611616565b600190509392505050565b60006008905090565b61079761160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90612be3565b60405180910390fd5b60005b81518110156108b55760006004600084848151811061084957610848612e52565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ad90612e81565b915050610827565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661095061160e565b73ffffffffffffffffffffffffffffffffffffffff161461097057600080fd5b600061097b30610aef565b905060008111156109905761098f816121f1565b5b600047905060008111156109a8576109a78161246a565b5b5050565b6109b461160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890612be3565b60405180910390fd5b60004711610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90612f15565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610aec573d6000803e3d6000fd5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4061160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc490612be3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c9361160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790612be3565b60405180910390fd5b6008600a610d2e9190612dc5565b6305f5e100610d3d9190612e10565b6012819055506008600a610d519190612dc5565b6305f5e100610d609190612e10565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610d959190612dc5565b6305f5e100610da49190612e10565b604051610db1919061289d565b60405180910390a1565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600481526020017f44554e4500000000000000000000000000000000000000000000000000000000815250905090565b6000610e41610e3a61160e565b84846117df565b6001905092915050565b60145481565b610e5961160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90612be3565b60405180910390fd5b601760149054906101000a900460ff1615610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d90612f81565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd430601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610fc09190612dc5565b6305f5e100610fcf9190612e10565b611616565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110659190612fb6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111129190612fb6565b6040518363ffffffff1660e01b815260040161112f929190612fe3565b6020604051808303816000875af115801561114e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111729190612fb6565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111fb30610aef565b600080611206610dc1565b426040518863ffffffff1660e01b81526004016112289695949392919061300c565b60606040518083038185885af1158015611246573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061126b9190613082565b505050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161130d9291906130d5565b6020604051808303816000875af115801561132c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611350919061312a565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff021916908315150217905550565b61139161160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590612be3565b60405180910390fd5b60005b81518110156114af5760016004600084848151811061144357611442612e52565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114a790612e81565b915050611421565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661157b61160e565b73ffffffffffffffffffffffffffffffffffffffff161461159b57600080fd5b60085481111580156115af57506009548111155b6115b857600080fd5b806008819055508060098190555080601081905550806011819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7681604051611603919061289d565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c906131c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb9061325b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d2919061289d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611845906132ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b49061337f565b60405180910390fd5b60008111611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613411565b60405180910390fd5b600061190a610dc1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119785750611948610dc1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ed057600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a215750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a2a57600080fd5b6000600e5403611a7357611a706064611a62600a54600e5411611a4f57600654611a53565b6008545b856124d690919063ffffffff16565b61255090919063ffffffff16565b90505b6000600e541115611aa957611aa66064611a98600d54856124d690919063ffffffff16565b61255090919063ffffffff16565b90505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b545750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611baa5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ca357601254821115611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb9061347d565b60405180910390fd5b60135482611c0185610aef565b611c0b919061349d565b1115611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c439061351d565b60405180910390fd5b611c886064611c7a600a54600e5411611c6757600654611c6b565b6008545b856124d690919063ffffffff16565b61255090919063ffffffff16565b9050600e6000815480929190611c9d90612e81565b91905055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d2c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d7057611d6d6064611d5f600b54600e5411611d4c57600754611d50565b6009545b856124d690919063ffffffff16565b61255090919063ffffffff16565b90505b6000611d7b30610aef565b9050601760159054906101000a900460ff16158015611de75750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611dff5750601760169054906101000a900460ff165b8015611e0c575060145481115b8015611e1b5750600c54600e54115b15611ece57601954431115611e335760006018819055505b600360185410611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f90613589565b60405180910390fd5b611e95611e9084611e8b8460155461259a565b61259a565b6121f1565b60004790506000811115611ead57611eac4761246a565b5b60186000815480929190611ec090612e81565b919050555043601981905550505b505b6000811115611fd457611f2b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fcb919061289d565b60405180910390a35b61202682600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120cd61207f828461261190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612172848661261190919063ffffffff16565b60405161217f919061289d565b60405180910390a350505050565b60008383111582906121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc919061274e565b60405180910390fd5b50600083856121e491906135a9565b9050809150509392505050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561222957612228612947565b5b6040519080825280602002602001820160405280156122575781602001602082028036833780820191505090505b509050308160008151811061226f5761226e612e52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233a9190612fb6565b8160018151811061234e5761234d612e52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123b530601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611616565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161241995949392919061369b565b600060405180830381600087803b15801561243357600080fd5b505af1158015612447573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124d2573d6000803e3d6000fd5b5050565b60008083036124e8576000905061254a565b600082846124f69190612e10565b90508284826125059190613724565b14612545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253c906137c7565b60405180910390fd5b809150505b92915050565b600061259283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265b565b905092915050565b60008183116125a957826125ab565b815b905092915050565b60008082846125c2919061349d565b905083811015612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe90613833565b60405180910390fd5b8091505092915050565b600061265383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061218d565b905092915050565b600080831182906126a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612699919061274e565b60405180910390fd5b50600083856126b19190613724565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126f85780820151818401526020810190506126dd565b60008484015250505050565b6000601f19601f8301169050919050565b6000612720826126be565b61272a81856126c9565b935061273a8185602086016126da565b61274381612704565b840191505092915050565b600060208201905081810360008301526127688184612715565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127af82612784565b9050919050565b6127bf816127a4565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b6000819050919050565b6127f5816127e2565b811461280057600080fd5b50565b600081359050612812816127ec565b92915050565b6000806040838503121561282f5761282e61277a565b5b600061283d858286016127cd565b925050602061284e85828601612803565b9150509250929050565b60008115159050919050565b61286d81612858565b82525050565b60006020820190506128886000830184612864565b92915050565b612897816127e2565b82525050565b60006020820190506128b2600083018461288e565b92915050565b6000806000606084860312156128d1576128d061277a565b5b60006128df868287016127cd565b93505060206128f0868287016127cd565b925050604061290186828701612803565b9150509250925092565b600060ff82169050919050565b6129218161290b565b82525050565b600060208201905061293c6000830184612918565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61297f82612704565b810181811067ffffffffffffffff8211171561299e5761299d612947565b5b80604052505050565b60006129b1612770565b90506129bd8282612976565b919050565b600067ffffffffffffffff8211156129dd576129dc612947565b5b602082029050602081019050919050565b600080fd5b6000612a06612a01846129c2565b6129a7565b90508083825260208201905060208402830185811115612a2957612a286129ee565b5b835b81811015612a525780612a3e88826127cd565b845260208401935050602081019050612a2b565b5050509392505050565b600082601f830112612a7157612a70612942565b5b8135612a818482602086016129f3565b91505092915050565b600060208284031215612aa057612a9f61277a565b5b600082013567ffffffffffffffff811115612abe57612abd61277f565b5b612aca84828501612a5c565b91505092915050565b600060208284031215612ae957612ae861277a565b5b6000612af7848285016127cd565b91505092915050565b612b09816127a4565b82525050565b6000602082019050612b246000830184612b00565b92915050565b60008060408385031215612b4157612b4061277a565b5b6000612b4f858286016127cd565b9250506020612b60858286016127cd565b9150509250929050565b600060208284031215612b8057612b7f61277a565b5b6000612b8e84828501612803565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bcd6020836126c9565b9150612bd882612b97565b602082019050919050565b60006020820190508181036000830152612bfc81612bc0565b9050919050565b6000819050919050565b6000819050919050565b6000612c32612c2d612c2884612c03565b612c0d565b6127e2565b9050919050565b612c4281612c17565b82525050565b6000602082019050612c5d6000830184612c39565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612ce957808604811115612cc557612cc4612c63565b5b6001851615612cd45780820291505b8081029050612ce285612c92565b9450612ca9565b94509492505050565b600082612d025760019050612dbe565b81612d105760009050612dbe565b8160018114612d265760028114612d3057612d5f565b6001915050612dbe565b60ff841115612d4257612d41612c63565b5b8360020a915084821115612d5957612d58612c63565b5b50612dbe565b5060208310610133831016604e8410600b8410161715612d945782820a905083811115612d8f57612d8e612c63565b5b612dbe565b612da18484846001612c9f565b92509050818404811115612db857612db7612c63565b5b81810290505b9392505050565b6000612dd0826127e2565b9150612ddb8361290b565b9250612e087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cf2565b905092915050565b6000612e1b826127e2565b9150612e26836127e2565b9250828202612e34816127e2565b91508282048414831517612e4b57612e4a612c63565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612e8c826127e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ebe57612ebd612c63565b5b600182019050919050565b7f4e6f2045544820746f207472616e736665720000000000000000000000000000600082015250565b6000612eff6012836126c9565b9150612f0a82612ec9565b602082019050919050565b60006020820190508181036000830152612f2e81612ef2565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612f6b6017836126c9565b9150612f7682612f35565b602082019050919050565b60006020820190508181036000830152612f9a81612f5e565b9050919050565b600081519050612fb0816127b6565b92915050565b600060208284031215612fcc57612fcb61277a565b5b6000612fda84828501612fa1565b91505092915050565b6000604082019050612ff86000830185612b00565b6130056020830184612b00565b9392505050565b600060c0820190506130216000830189612b00565b61302e602083018861288e565b61303b6040830187612c39565b6130486060830186612c39565b6130556080830185612b00565b61306260a083018461288e565b979650505050505050565b60008151905061307c816127ec565b92915050565b60008060006060848603121561309b5761309a61277a565b5b60006130a98682870161306d565b93505060206130ba8682870161306d565b92505060406130cb8682870161306d565b9150509250925092565b60006040820190506130ea6000830185612b00565b6130f7602083018461288e565b9392505050565b61310781612858565b811461311257600080fd5b50565b600081519050613124816130fe565b92915050565b6000602082840312156131405761313f61277a565b5b600061314e84828501613115565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131b36024836126c9565b91506131be82613157565b604082019050919050565b600060208201905081810360008301526131e2816131a6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132456022836126c9565b9150613250826131e9565b604082019050919050565b6000602082019050818103600083015261327481613238565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132d76025836126c9565b91506132e28261327b565b604082019050919050565b60006020820190508181036000830152613306816132ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133696023836126c9565b91506133748261330d565b604082019050919050565b600060208201905081810360008301526133988161335c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133fb6029836126c9565b91506134068261339f565b604082019050919050565b6000602082019050818103600083015261342a816133ee565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006134676019836126c9565b915061347282613431565b602082019050919050565b600060208201905081810360008301526134968161345a565b9050919050565b60006134a8826127e2565b91506134b3836127e2565b92508282019050808211156134cb576134ca612c63565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613507601a836126c9565b9150613512826134d1565b602082019050919050565b60006020820190508181036000830152613536816134fa565b9050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000600082015250565b60006135736017836126c9565b915061357e8261353d565b602082019050919050565b600060208201905081810360008301526135a281613566565b9050919050565b60006135b4826127e2565b91506135bf836127e2565b92508282039050818111156135d7576135d6612c63565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613612816127a4565b82525050565b60006136248383613609565b60208301905092915050565b6000602082019050919050565b6000613648826135dd565b61365281856135e8565b935061365d836135f9565b8060005b8381101561368e5781516136758882613618565b975061368083613630565b925050600181019050613661565b5085935050505092915050565b600060a0820190506136b0600083018861288e565b6136bd6020830187612c39565b81810360408301526136cf818661363d565b90506136de6060830185612b00565b6136eb608083018461288e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061372f826127e2565b915061373a836127e2565b92508261374a576137496136f5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137b16021836126c9565b91506137bc82613755565b604082019050919050565b600060208201905081810360008301526137e0816137a4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061381d601b836126c9565b9150613828826137e7565b602082019050919050565b6000602082019050818103600083015261384c81613810565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a8e977e82a96847f5bce6b90380665ec880772c6d6f03b47002992610d2b187964736f6c63430008130033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c8063715018a6116100b6578063a9059cbb1161006f578063a9059cbb14610443578063bf474bed14610480578063c9567bf9146104ab578063d34628cc146104c2578063dd62ed3e146104eb578063ec1f3f631461052857610156565b8063715018a614610369578063751039fc146103805780637d1db4a5146103975780638da5cb5b146103c25780638f9a55c0146103ed57806395d89b411461041857610156565b8063313ce56711610108578063313ce5671461026d57806331c2d847146102985780633bbac579146102c157806351bc3c85146102fe578063692cda7a1461031557806370a082311461032c57610156565b806306fdde031461015b578063095ea7b3146101865780630faee56f146101c3578063109daa99146101ee57806318160ddd1461020557806323b872dd1461023057610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610551565b60405161017d919061274e565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612818565b61058e565b6040516101ba9190612873565b60405180910390f35b3480156101cf57600080fd5b506101d86105ac565b6040516101e5919061289d565b60405180910390f35b3480156101fa57600080fd5b506102036105b2565b005b34801561021157600080fd5b5061021a610689565b604051610227919061289d565b60405180910390f35b34801561023c57600080fd5b50610257600480360381019061025291906128b8565b6106ad565b6040516102649190612873565b60405180910390f35b34801561027957600080fd5b50610282610786565b60405161028f9190612927565b60405180910390f35b3480156102a457600080fd5b506102bf60048036038101906102ba9190612a8a565b61078f565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612ad3565b6108b9565b6040516102f59190612873565b60405180910390f35b34801561030a57600080fd5b5061031361090f565b005b34801561032157600080fd5b5061032a6109ac565b005b34801561033857600080fd5b50610353600480360381019061034e9190612ad3565b610aef565b604051610360919061289d565b60405180910390f35b34801561037557600080fd5b5061037e610b38565b005b34801561038c57600080fd5b50610395610c8b565b005b3480156103a357600080fd5b506103ac610dbb565b6040516103b9919061289d565b60405180910390f35b3480156103ce57600080fd5b506103d7610dc1565b6040516103e49190612b0f565b60405180910390f35b3480156103f957600080fd5b50610402610dea565b60405161040f919061289d565b60405180910390f35b34801561042457600080fd5b5061042d610df0565b60405161043a919061274e565b60405180910390f35b34801561044f57600080fd5b5061046a60048036038101906104659190612818565b610e2d565b6040516104779190612873565b60405180910390f35b34801561048c57600080fd5b50610495610e4b565b6040516104a2919061289d565b60405180910390f35b3480156104b757600080fd5b506104c0610e51565b005b3480156104ce57600080fd5b506104e960048036038101906104e49190612a8a565b611389565b005b3480156104f757600080fd5b50610512600480360381019061050d9190612b2a565b6114b3565b60405161051f919061289d565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612b6a565b61153a565b005b60606040518060400160405280600481526020017f44756e6500000000000000000000000000000000000000000000000000000000815250905090565b60006105a261059b61160e565b8484611616565b6001905092915050565b60155481565b6105ba61160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063e90612be3565b60405180910390fd5b6000600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3600060405161067f9190612c48565b60405180910390a1565b60006008600a6106999190612dc5565b6305f5e1006106a89190612e10565b905090565b60006106ba8484846117df565b61077b846106c661160e565b6107768560405180606001604052806028815260200161385460289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061072c61160e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218d9092919063ffffffff16565b611616565b600190509392505050565b60006008905090565b61079761160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610824576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081b90612be3565b60405180910390fd5b60005b81518110156108b55760006004600084848151811061084957610848612e52565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108ad90612e81565b915050610827565b5050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661095061160e565b73ffffffffffffffffffffffffffffffffffffffff161461097057600080fd5b600061097b30610aef565b905060008111156109905761098f816121f1565b5b600047905060008111156109a8576109a78161246a565b5b5050565b6109b461160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3890612be3565b60405180910390fd5b60004711610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b90612f15565b60405180910390fd5b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610aec573d6000803e3d6000fd5b50565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4061160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc490612be3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c9361160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1790612be3565b60405180910390fd5b6008600a610d2e9190612dc5565b6305f5e100610d3d9190612e10565b6012819055506008600a610d519190612dc5565b6305f5e100610d609190612e10565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008600a610d959190612dc5565b6305f5e100610da49190612e10565b604051610db1919061289d565b60405180910390a1565b60125481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b60606040518060400160405280600481526020017f44554e4500000000000000000000000000000000000000000000000000000000815250905090565b6000610e41610e3a61160e565b84846117df565b6001905092915050565b60145481565b610e5961160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edd90612be3565b60405180910390fd5b601760149054906101000a900460ff1615610f36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2d90612f81565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fd430601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166008600a610fc09190612dc5565b6305f5e100610fcf9190612e10565b611616565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611041573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110659190612fb6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111129190612fb6565b6040518363ffffffff1660e01b815260040161112f929190612fe3565b6020604051808303816000875af115801561114e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111729190612fb6565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306111fb30610aef565b600080611206610dc1565b426040518863ffffffff1660e01b81526004016112289695949392919061300c565b60606040518083038185885af1158015611246573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061126b9190613082565b505050601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161130d9291906130d5565b6020604051808303816000875af115801561132c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611350919061312a565b506001601760166101000a81548160ff0219169083151502179055506001601760146101000a81548160ff021916908315150217905550565b61139161160e565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461141e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141590612be3565b60405180910390fd5b60005b81518110156114af5760016004600084848151811061144357611442612e52565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114a790612e81565b915050611421565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661157b61160e565b73ffffffffffffffffffffffffffffffffffffffff161461159b57600080fd5b60085481111580156115af57506009548111155b6115b857600080fd5b806008819055508060098190555080601081905550806011819055507f8c4d35e54a3f2ef1134138fd8ea3daee6a3c89e10d2665996babdf70261e2c7681604051611603919061289d565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167c906131c9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116eb9061325b565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117d2919061289d565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361184e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611845906132ed565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b49061337f565b60405180910390fd5b60008111611900576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118f790613411565b60405180910390fd5b600061190a610dc1565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156119785750611948610dc1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ed057600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a215750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611a2a57600080fd5b6000600e5403611a7357611a706064611a62600a54600e5411611a4f57600654611a53565b6008545b856124d690919063ffffffff16565b61255090919063ffffffff16565b90505b6000600e541115611aa957611aa66064611a98600d54856124d690919063ffffffff16565b61255090919063ffffffff16565b90505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b545750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611baa5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ca357601254821115611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb9061347d565b60405180910390fd5b60135482611c0185610aef565b611c0b919061349d565b1115611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c439061351d565b60405180910390fd5b611c886064611c7a600a54600e5411611c6757600654611c6b565b6008545b856124d690919063ffffffff16565b61255090919063ffffffff16565b9050600e6000815480929190611c9d90612e81565b91905055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611d2c57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611d7057611d6d6064611d5f600b54600e5411611d4c57600754611d50565b6009545b856124d690919063ffffffff16565b61255090919063ffffffff16565b90505b6000611d7b30610aef565b9050601760159054906101000a900460ff16158015611de75750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611dff5750601760169054906101000a900460ff165b8015611e0c575060145481115b8015611e1b5750600c54600e54115b15611ece57601954431115611e335760006018819055505b600360185410611e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6f90613589565b60405180910390fd5b611e95611e9084611e8b8460155461259a565b61259a565b6121f1565b60004790506000811115611ead57611eac4761246a565b5b60186000815480929190611ec090612e81565b919050555043601981905550505b505b6000811115611fd457611f2b81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b390919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fcb919061289d565b60405180910390a35b61202682600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120cd61207f828461261190919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125b390919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612172848661261190919063ffffffff16565b60405161217f919061289d565b60405180910390a350505050565b60008383111582906121d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cc919061274e565b60405180910390fd5b50600083856121e491906135a9565b9050809150509392505050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561222957612228612947565b5b6040519080825280602002602001820160405280156122575781602001602082028036833780820191505090505b509050308160008151811061226f5761226e612e52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233a9190612fb6565b8160018151811061234e5761234d612e52565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123b530601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611616565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161241995949392919061369b565b600060405180830381600087803b15801561243357600080fd5b505af1158015612447573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156124d2573d6000803e3d6000fd5b5050565b60008083036124e8576000905061254a565b600082846124f69190612e10565b90508284826125059190613724565b14612545576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253c906137c7565b60405180910390fd5b809150505b92915050565b600061259283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061265b565b905092915050565b60008183116125a957826125ab565b815b905092915050565b60008082846125c2919061349d565b905083811015612607576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fe90613833565b60405180910390fd5b8091505092915050565b600061265383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061218d565b905092915050565b600080831182906126a2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612699919061274e565b60405180910390fd5b50600083856126b19190613724565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156126f85780820151818401526020810190506126dd565b60008484015250505050565b6000601f19601f8301169050919050565b6000612720826126be565b61272a81856126c9565b935061273a8185602086016126da565b61274381612704565b840191505092915050565b600060208201905081810360008301526127688184612715565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006127af82612784565b9050919050565b6127bf816127a4565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b6000819050919050565b6127f5816127e2565b811461280057600080fd5b50565b600081359050612812816127ec565b92915050565b6000806040838503121561282f5761282e61277a565b5b600061283d858286016127cd565b925050602061284e85828601612803565b9150509250929050565b60008115159050919050565b61286d81612858565b82525050565b60006020820190506128886000830184612864565b92915050565b612897816127e2565b82525050565b60006020820190506128b2600083018461288e565b92915050565b6000806000606084860312156128d1576128d061277a565b5b60006128df868287016127cd565b93505060206128f0868287016127cd565b925050604061290186828701612803565b9150509250925092565b600060ff82169050919050565b6129218161290b565b82525050565b600060208201905061293c6000830184612918565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61297f82612704565b810181811067ffffffffffffffff8211171561299e5761299d612947565b5b80604052505050565b60006129b1612770565b90506129bd8282612976565b919050565b600067ffffffffffffffff8211156129dd576129dc612947565b5b602082029050602081019050919050565b600080fd5b6000612a06612a01846129c2565b6129a7565b90508083825260208201905060208402830185811115612a2957612a286129ee565b5b835b81811015612a525780612a3e88826127cd565b845260208401935050602081019050612a2b565b5050509392505050565b600082601f830112612a7157612a70612942565b5b8135612a818482602086016129f3565b91505092915050565b600060208284031215612aa057612a9f61277a565b5b600082013567ffffffffffffffff811115612abe57612abd61277f565b5b612aca84828501612a5c565b91505092915050565b600060208284031215612ae957612ae861277a565b5b6000612af7848285016127cd565b91505092915050565b612b09816127a4565b82525050565b6000602082019050612b246000830184612b00565b92915050565b60008060408385031215612b4157612b4061277a565b5b6000612b4f858286016127cd565b9250506020612b60858286016127cd565b9150509250929050565b600060208284031215612b8057612b7f61277a565b5b6000612b8e84828501612803565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bcd6020836126c9565b9150612bd882612b97565b602082019050919050565b60006020820190508181036000830152612bfc81612bc0565b9050919050565b6000819050919050565b6000819050919050565b6000612c32612c2d612c2884612c03565b612c0d565b6127e2565b9050919050565b612c4281612c17565b82525050565b6000602082019050612c5d6000830184612c39565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612ce957808604811115612cc557612cc4612c63565b5b6001851615612cd45780820291505b8081029050612ce285612c92565b9450612ca9565b94509492505050565b600082612d025760019050612dbe565b81612d105760009050612dbe565b8160018114612d265760028114612d3057612d5f565b6001915050612dbe565b60ff841115612d4257612d41612c63565b5b8360020a915084821115612d5957612d58612c63565b5b50612dbe565b5060208310610133831016604e8410600b8410161715612d945782820a905083811115612d8f57612d8e612c63565b5b612dbe565b612da18484846001612c9f565b92509050818404811115612db857612db7612c63565b5b81810290505b9392505050565b6000612dd0826127e2565b9150612ddb8361290b565b9250612e087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612cf2565b905092915050565b6000612e1b826127e2565b9150612e26836127e2565b9250828202612e34816127e2565b91508282048414831517612e4b57612e4a612c63565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612e8c826127e2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ebe57612ebd612c63565b5b600182019050919050565b7f4e6f2045544820746f207472616e736665720000000000000000000000000000600082015250565b6000612eff6012836126c9565b9150612f0a82612ec9565b602082019050919050565b60006020820190508181036000830152612f2e81612ef2565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612f6b6017836126c9565b9150612f7682612f35565b602082019050919050565b60006020820190508181036000830152612f9a81612f5e565b9050919050565b600081519050612fb0816127b6565b92915050565b600060208284031215612fcc57612fcb61277a565b5b6000612fda84828501612fa1565b91505092915050565b6000604082019050612ff86000830185612b00565b6130056020830184612b00565b9392505050565b600060c0820190506130216000830189612b00565b61302e602083018861288e565b61303b6040830187612c39565b6130486060830186612c39565b6130556080830185612b00565b61306260a083018461288e565b979650505050505050565b60008151905061307c816127ec565b92915050565b60008060006060848603121561309b5761309a61277a565b5b60006130a98682870161306d565b93505060206130ba8682870161306d565b92505060406130cb8682870161306d565b9150509250925092565b60006040820190506130ea6000830185612b00565b6130f7602083018461288e565b9392505050565b61310781612858565b811461311257600080fd5b50565b600081519050613124816130fe565b92915050565b6000602082840312156131405761313f61277a565b5b600061314e84828501613115565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006131b36024836126c9565b91506131be82613157565b604082019050919050565b600060208201905081810360008301526131e2816131a6565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132456022836126c9565b9150613250826131e9565b604082019050919050565b6000602082019050818103600083015261327481613238565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006132d76025836126c9565b91506132e28261327b565b604082019050919050565b60006020820190508181036000830152613306816132ca565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006133696023836126c9565b91506133748261330d565b604082019050919050565b600060208201905081810360008301526133988161335c565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006133fb6029836126c9565b91506134068261339f565b604082019050919050565b6000602082019050818103600083015261342a816133ee565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006134676019836126c9565b915061347282613431565b602082019050919050565b600060208201905081810360008301526134968161345a565b9050919050565b60006134a8826127e2565b91506134b3836127e2565b92508282019050808211156134cb576134ca612c63565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613507601a836126c9565b9150613512826134d1565b602082019050919050565b60006020820190508181036000830152613536816134fa565b9050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000600082015250565b60006135736017836126c9565b915061357e8261353d565b602082019050919050565b600060208201905081810360008301526135a281613566565b9050919050565b60006135b4826127e2565b91506135bf836127e2565b92508282039050818111156135d7576135d6612c63565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613612816127a4565b82525050565b60006136248383613609565b60208301905092915050565b6000602082019050919050565b6000613648826135dd565b61365281856135e8565b935061365d836135f9565b8060005b8381101561368e5781516136758882613618565b975061368083613630565b925050600181019050613661565b5085935050505092915050565b600060a0820190506136b0600083018861288e565b6136bd6020830187612c39565b81810360408301526136cf818661363d565b90506136de6060830185612b00565b6136eb608083018461288e565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061372f826127e2565b915061373a836127e2565b92508261374a576137496136f5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006137b16021836126c9565b91506137bc82613755565b604082019050919050565b600060208201905081810360008301526137e0816137a4565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061381d601b836126c9565b9150613828826137e7565b602082019050919050565b6000602082019050818103600083015261384c81613810565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a8e977e82a96847f5bce6b90380665ec880772c6d6f03b47002992610d2b187964736f6c63430008130033

Deployed Bytecode Sourcemap

4089:10460:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6250:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7133:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5365:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12116:120;;;;;;;;;;;;;:::i;:::-;;6527:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7327:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6436:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12516:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12692:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14143:366;;;;;;;;;;;;;:::i;:::-;;13960:175;;;;;;;;;;;;;:::i;:::-;;6630:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3114:148;;;;;;;;;;;;;:::i;:::-;;11946:162;;;;;;;;;;;;;:::i;:::-;;5172:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2900:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5234:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6341:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6757:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5298:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12786:825;;;;;;;;;;;;;:::i;:::-;;12344:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6957:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13619:333;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6250:83;6287:13;6320:5;;;;;;;;;;;;;;;;;6313:12;;6250:83;:::o;7133:186::-;7233:4;7250:39;7259:12;:10;:12::i;:::-;7273:7;7282:6;7250:8;:39::i;:::-;7307:4;7300:11;;7133:186;;;;:::o;5365:54::-;;;;:::o;12116:120::-;3037:12;:10;:12::i;:::-;3027:22;;:6;;;;;;;;;;:22;;;3019:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12190:1:::1;12175:12;:16;;;;12207:21;12226:1;12207:21;;;;;;:::i;:::-;;;;;;;;12116:120::o:0;6527:95::-;6580:7;4989:1;5044:2;:15;;;;:::i;:::-;5032:9;:27;;;;:::i;:::-;6600:14;;6527:95;:::o;7327:446::-;7459:4;7476:36;7486:6;7494:9;7505:6;7476:9;:36::i;:::-;7523:220;7546:6;7567:12;:10;:12::i;:::-;7594:138;7650:6;7594:138;;;;;;;;;;;;;;;;;:11;:19;7606:6;7594:19;;;;;;;;;;;;;;;:33;7614:12;:10;:12::i;:::-;7594:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7523:8;:220::i;:::-;7761:4;7754:11;;7327:446;;;;;:::o;6436:83::-;6477:5;4989:1;6495:16;;6436:83;:::o;12516:168::-;3037:12;:10;:12::i;:::-;3027:22;;:6;;;;;;;;;;:22;;;3019:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12591:6:::1;12586:91;12607:6;:13;12603:1;:17;12586:91;;;12660:5;12642:4;:15;12647:6;12654:1;12647:9;;;;;;;;:::i;:::-;;;;;;;;12642:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12622:3;;;;;:::i;:::-;;;;12586:91;;;;12516:168:::0;:::o;12692:86::-;12739:4;12763;:7;12768:1;12763:7;;;;;;;;;;;;;;;;;;;;;;;;;12756:14;;12692:86;;;:::o;14143:366::-;14209:10;;;;;;;;;;;14193:26;;:12;:10;:12::i;:::-;:26;;;14185:35;;;;;;14231:20;14254:24;14272:4;14254:9;:24::i;:::-;14231:47;;14308:1;14293:12;:16;14289:79;;;14326:30;14343:12;14326:16;:30::i;:::-;14289:79;14378:18;14399:21;14378:42;;14448:1;14435:10;:14;14431:71;;;14466:24;14479:10;14466:12;:24::i;:::-;14431:71;14174:335;;14143:366::o;13960:175::-;3037:12;:10;:12::i;:::-;3027:22;;:6;;;;;;;;;;:22;;;3019:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14050:1:::1;14026:21;:25;14018:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14085:10;;;;;;;;;;;:19;;:42;14105:21;14085:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13960:175::o:0;6630:119::-;6696:7;6723:9;:18;6733:7;6723:18;;;;;;;;;;;;;;;;6716:25;;6630:119;;;:::o;3114:148::-;3037:12;:10;:12::i;:::-;3027:22;;:6;;;;;;;;;;:22;;;3019:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3221:1:::1;3184:40;;3205:6;::::0;::::1;;;;;;;;3184:40;;;;;;;;;;;;3252:1;3235:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3114:148::o:0;11946:162::-;3037:12;:10;:12::i;:::-;3027:22;;:6;;;;;;;;;;:22;;;3019:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4989:1:::1;5044:2;:15;;;;:::i;:::-;5032:9;:27;;;;:::i;:::-;12000:12;:22;;;;4989:1;5044:2;:15;;;;:::i;:::-;5032:9;:27;;;;:::i;:::-;12033:14;:24;;;;12073:27;4989:1;5044:2;:15;;;;:::i;:::-;5032:9;:27;;;;:::i;:::-;12073;;;;;;:::i;:::-;;;;;;;;11946:162::o:0;5172:55::-;;;;:::o;2900:79::-;2938:7;2965:6;;;;;;;;;;;2958:13;;2900:79;:::o;5234:57::-;;;;:::o;6341:87::-;6380:13;6413:7;;;;;;;;;;;;;;;;;6406:14;;6341:87;:::o;6757:192::-;6860:4;6877:42;6887:12;:10;:12::i;:::-;6901:9;6912:6;6877:9;:42::i;:::-;6937:4;6930:11;;6757:192;;;;:::o;5298:60::-;;;;:::o;12786:825::-;3037:12;:10;:12::i;:::-;3027:22;;:6;;;;;;;;;;:22;;;3019:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12848:11:::1;;;;;;;;;;;12847:12;12839:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;12949:42;12898:15;;:104;;;;;;;;;;;;;;;;;;13013:58;13030:4;13045:15;;;;;;;;;;;4989:1;5044:2;:15;;;;:::i;:::-;5032:9;:27;;;;:::i;:::-;13013:8;:58::i;:::-;13116:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13098:55;;;13176:4;13196:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13098:131;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13082:13;;:147;;;;;;;;;;;;;;;;;;13240:15;;;;;;;;;;;:31;;;13279:21;13324:4;13344:24;13362:4;13344:9;:24::i;:::-;13383:1;13399::::0;13415:7:::1;:5;:7::i;:::-;13437:15;13240:223;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13481:13;;;;;;;;;;;13474:29;;;13512:15;;;;;;;;;;;13530:14;13474:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13570:4;13556:11;;:18;;;;;;;;;;;;;;;;;;13599:4;13585:11;;:18;;;;;;;;;;;;;;;;;;12786:825::o:0;12344:164::-;3037:12;:10;:12::i;:::-;3027:22;;:6;;;;;;;;;;:22;;;3019:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12418:6:::1;12413:88;12434:5;:12;12430:1;:16;12413:88;;;12485:4;12468;:14;12473:5;12479:1;12473:8;;;;;;;;:::i;:::-;;;;;;;;12468:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12448:3;;;;;:::i;:::-;;;;12413:88;;;;12344:164:::0;:::o;6957:168::-;7063:7;7090:11;:18;7102:5;7090:18;;;;;;;;;;;;;;;:27;7109:7;7090:27;;;;;;;;;;;;;;;;7083:34;;6957:168;;;;:::o;13619:333::-;13698:10;;;;;;;;;;;13682:26;;:12;:10;:12::i;:::-;:26;;;13674:35;;;;;;13738:12;;13728:6;:22;;:49;;;;;13764:13;;13754:6;:23;;13728:49;13720:58;;;;;;13804:6;13789:12;:21;;;;13837:6;13821:13;:22;;;;13870:6;13854:13;:22;;;;13904:6;13887:14;:23;;;;13926:18;13937:6;13926:18;;;;;;:::i;:::-;;;;;;;;13619:333;:::o;435:98::-;488:7;515:10;508:17;;435:98;:::o;7781:335::-;7891:1;7874:19;;:5;:19;;;7866:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7972:1;7953:21;;:7;:21;;;7945:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8054:6;8024:11;:18;8036:5;8024:18;;;;;;;;;;;;;;;:27;8043:7;8024:27;;;;;;;;;;;;;;;:36;;;;8092:7;8076:32;;8085:5;8076:32;;;8101:6;8076:32;;;;;;:::i;:::-;;;;;;;;7781:335;;;:::o;8124:3208::-;8228:1;8212:18;;:4;:18;;;8204:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8305:1;8291:16;;:2;:16;;;8283:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8375:1;8366:6;:10;8358:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8433:17;8477:7;:5;:7::i;:::-;8469:15;;:4;:15;;;;:32;;;;;8494:7;:5;:7::i;:::-;8488:13;;:2;:13;;;;8469:32;8465:2496;;;8527:4;:10;8532:4;8527:10;;;;;;;;;;;;;;;;;;;;;;;;;8526:11;:24;;;;;8542:4;:8;8547:2;8542:8;;;;;;;;;;;;;;;;;;;;;;;;;8541:9;8526:24;8518:33;;;;;;8585:1;8572:9;;:14;8568:299;;8619:232;8847:3;8619:201;8691:15;;8679:9;;:27;8678:119;;8783:14;;8678:119;;;8739:12;;8678:119;8619:6;:32;;:201;;;;:::i;:::-;:227;;:232;;;;:::i;:::-;8607:244;;8568:299;8897:1;8885:9;;:13;8881:99;;;8931:33;8960:3;8931:24;8942:12;;8931:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8919:45;;8881:99;9026:13;;;;;;;;;;;9018:21;;:4;:21;;;:72;;;;;9074:15;;;;;;;;;;;9060:30;;:2;:30;;;;9018:72;:116;;;;;9112:18;:22;9131:2;9112:22;;;;;;;;;;;;;;;;;;;;;;;;;9111:23;9018:116;8996:701;;;9187:12;;9177:6;:22;;9169:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9304:14;;9294:6;9278:13;9288:2;9278:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9248:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;9419:232;9647:3;9419:201;9491:15;;9479:9;;:27;9478:119;;9583:14;;9478:119;;;9539:12;;9478:119;9419:6;:32;;:201;;;;:::i;:::-;:227;;:232;;;;:::i;:::-;9407:244;;9670:9;;:11;;;;;;;;;:::i;:::-;;;;;;8996:701;9723:13;;;;;;;;;;;9717:19;;:2;:19;;;:44;;;;;9756:4;9740:21;;:4;:21;;;;9717:44;9713:332;;;9794:235;10025:3;9794:204;9866:16;;9854:9;;:28;9853:122;;9960:15;;9853:122;;;9915:13;;9853:122;9794:6;:32;;:204;;;;:::i;:::-;:230;;:235;;;;:::i;:::-;9782:247;;9713:332;10061:28;10092:24;10110:4;10092:9;:24::i;:::-;10061:55;;10154:6;;;;;;;;;;;10153:7;:47;;;;;10187:13;;;;;;;;;;;10181:19;;:2;:19;;;10153:47;:79;;;;;10221:11;;;;;;;;;;;10153:79;:140;;;;;10276:17;;10253:20;:40;10153:140;:191;;;;;10326:18;;10314:9;;:30;10153:191;10131:819;;;10398:13;;10383:12;:28;10379:90;;;10448:1;10436:9;:13;;;;10379:90;10507:1;10495:9;;:13;10487:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10555:109;10594:51;10598:6;10606:38;10610:20;10632:11;;10606:3;:38::i;:::-;10594:3;:51::i;:::-;10555:16;:109::i;:::-;10683:26;10712:21;10683:50;;10777:1;10756:18;:22;10752:106;;;10803:35;10816:21;10803:12;:35::i;:::-;10752:106;10876:9;;:11;;;;;;;;;:::i;:::-;;;;;;10922:12;10906:13;:28;;;;10360:590;10131:819;8503:2458;8465:2496;10989:1;10977:9;:13;10973:172;;;11034:39;11063:9;11034;:24;11052:4;11034:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11007:9;:24;11025:4;11007:24;;;;;;;;;;;;;;;:66;;;;11116:4;11093:40;;11102:4;11093:40;;;11123:9;11093:40;;;;;;:::i;:::-;;;;;;;;10973:172;11173:27;11193:6;11173:9;:15;11183:4;11173:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11155:9;:15;11165:4;11155:15;;;;;;;;;;;;;;;:45;;;;11227:40;11245:21;11256:9;11245:6;:10;;:21;;;;:::i;:::-;11227:9;:13;11237:2;11227:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11211:9;:13;11221:2;11211:13;;;;;;;;;;;;;;;:56;;;;11298:2;11283:41;;11292:4;11283:41;;;11302:21;11313:9;11302:6;:10;;:21;;;;:::i;:::-;11283:41;;;;;;:::i;:::-;;;;;;;;8193:3139;8124:3208;;;:::o;1702:224::-;1822:7;1855:1;1850;:6;;1858:12;1842:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1882:9;1898:1;1894;:5;;;;:::i;:::-;1882:17;;1917:1;1910:8;;;1702:224;;;;;:::o;11455:483::-;5869:4;5860:6;;:13;;;;;;;;;;;;;;;;;;11533:21:::1;11571:1;11557:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11533:40;;11602:4;11584;11589:1;11584:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11628:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11618:4;11623:1;11618:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11661:62;11678:4;11693:15;;;;;;;;;;;11711:11;11661:8;:62::i;:::-;11734:15;;;;;;;;;;;:66;;;11815:11;11841:1;11857:4;11884;11904:15;11734:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11522:416;5905:5:::0;5896:6;;:14;;;;;;;;;;;;;;;;;;11455:483;:::o;12244:92::-;12301:10;;;;;;;;;;;:19;;:27;12321:6;12301:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12244:92;:::o;1934:246::-;1992:7;2021:1;2016;:6;2012:47;;2046:1;2039:8;;;;2012:47;2069:9;2085:1;2081;:5;;;;:::i;:::-;2069:17;;2114:1;2109;2105;:5;;;;:::i;:::-;:10;2097:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2171:1;2164:8;;;1934:246;;;;;:::o;2188:132::-;2246:7;2273:39;2277:1;2280;2273:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2266:46;;2188:132;;;;:::o;11340:107::-;11397:7;11429:1;11425;:5;11424:15;;11438:1;11424:15;;;11434:1;11424:15;11417:22;;11340:107;;;;:::o;1371:179::-;1429:7;1449:9;1465:1;1461;:5;;;;:::i;:::-;1449:17;;1490:1;1485;:6;;1477:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1541:1;1534:8;;;1371:179;;;;:::o;1558:136::-;1616:7;1643:43;1647:1;1650;1643:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1636:50;;1558:136;;;;:::o;2328:223::-;2448:7;2480:1;2476;:5;2483:12;2468:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2507:9;2523:1;2519;:5;;;;:::i;:::-;2507:17;;2542:1;2535:8;;;2328:223;;;;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:329::-;7754:6;7803:2;7791:9;7782:7;7778:23;7774:32;7771:119;;;7809:79;;:::i;:::-;7771:119;7929:1;7954:53;7999:7;7990:6;7979:9;7975:22;7954:53;:::i;:::-;7944:63;;7900:117;7695:329;;;;:::o;8030:118::-;8117:24;8135:5;8117:24;:::i;:::-;8112:3;8105:37;8030:118;;:::o;8154:222::-;8247:4;8285:2;8274:9;8270:18;8262:26;;8298:71;8366:1;8355:9;8351:17;8342:6;8298:71;:::i;:::-;8154:222;;;;:::o;8382:474::-;8450:6;8458;8507:2;8495:9;8486:7;8482:23;8478:32;8475:119;;;8513:79;;:::i;:::-;8475:119;8633:1;8658:53;8703:7;8694:6;8683:9;8679:22;8658:53;:::i;:::-;8648:63;;8604:117;8760:2;8786:53;8831:7;8822:6;8811:9;8807:22;8786:53;:::i;:::-;8776:63;;8731:118;8382:474;;;;;:::o;8862:329::-;8921:6;8970:2;8958:9;8949:7;8945:23;8941:32;8938:119;;;8976:79;;:::i;:::-;8938:119;9096:1;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9067:117;8862:329;;;;:::o;9197:182::-;9337:34;9333:1;9325:6;9321:14;9314:58;9197:182;:::o;9385:366::-;9527:3;9548:67;9612:2;9607:3;9548:67;:::i;:::-;9541:74;;9624:93;9713:3;9624:93;:::i;:::-;9742:2;9737:3;9733:12;9726:19;;9385:366;;;:::o;9757:419::-;9923:4;9961:2;9950:9;9946:18;9938:26;;10010:9;10004:4;10000:20;9996:1;9985:9;9981:17;9974:47;10038:131;10164:4;10038:131;:::i;:::-;10030:139;;9757:419;;;:::o;10182:85::-;10227:7;10256:5;10245:16;;10182:85;;;:::o;10273:60::-;10301:3;10322:5;10315:12;;10273:60;;;:::o;10339:158::-;10397:9;10430:61;10448:42;10457:32;10483:5;10457:32;:::i;:::-;10448:42;:::i;:::-;10430:61;:::i;:::-;10417:74;;10339:158;;;:::o;10503:147::-;10598:45;10637:5;10598:45;:::i;:::-;10593:3;10586:58;10503:147;;:::o;10656:238::-;10757:4;10795:2;10784:9;10780:18;10772:26;;10808:79;10884:1;10873:9;10869:17;10860:6;10808:79;:::i;:::-;10656:238;;;;:::o;10900:180::-;10948:77;10945:1;10938:88;11045:4;11042:1;11035:15;11069:4;11066:1;11059:15;11086:102;11128:8;11175:5;11172:1;11168:13;11147:34;;11086:102;;;:::o;11194:848::-;11255:5;11262:4;11286:6;11277:15;;11310:5;11301:14;;11324:712;11345:1;11335:8;11332:15;11324:712;;;11440:4;11435:3;11431:14;11425:4;11422:24;11419:50;;;11449:18;;:::i;:::-;11419:50;11499:1;11489:8;11485:16;11482:451;;;11914:4;11907:5;11903:16;11894:25;;11482:451;11964:4;11958;11954:15;11946:23;;11994:32;12017:8;11994:32;:::i;:::-;11982:44;;11324:712;;;11194:848;;;;;;;:::o;12048:1073::-;12102:5;12293:8;12283:40;;12314:1;12305:10;;12316:5;;12283:40;12342:4;12332:36;;12359:1;12350:10;;12361:5;;12332:36;12428:4;12476:1;12471:27;;;;12512:1;12507:191;;;;12421:277;;12471:27;12489:1;12480:10;;12491:5;;;12507:191;12552:3;12542:8;12539:17;12536:43;;;12559:18;;:::i;:::-;12536:43;12608:8;12605:1;12601:16;12592:25;;12643:3;12636:5;12633:14;12630:40;;;12650:18;;:::i;:::-;12630:40;12683:5;;;12421:277;;12807:2;12797:8;12794:16;12788:3;12782:4;12779:13;12775:36;12757:2;12747:8;12744:16;12739:2;12733:4;12730:12;12726:35;12710:111;12707:246;;;12863:8;12857:4;12853:19;12844:28;;12898:3;12891:5;12888:14;12885:40;;;12905:18;;:::i;:::-;12885:40;12938:5;;12707:246;12978:42;13016:3;13006:8;13000:4;12997:1;12978:42;:::i;:::-;12963:57;;;;13052:4;13047:3;13043:14;13036:5;13033:25;13030:51;;;13061:18;;:::i;:::-;13030:51;13110:4;13103:5;13099:16;13090:25;;12048:1073;;;;;;:::o;13127:281::-;13185:5;13209:23;13227:4;13209:23;:::i;:::-;13201:31;;13253:25;13269:8;13253:25;:::i;:::-;13241:37;;13297:104;13334:66;13324:8;13318:4;13297:104;:::i;:::-;13288:113;;13127:281;;;;:::o;13414:410::-;13454:7;13477:20;13495:1;13477:20;:::i;:::-;13472:25;;13511:20;13529:1;13511:20;:::i;:::-;13506:25;;13566:1;13563;13559:9;13588:30;13606:11;13588:30;:::i;:::-;13577:41;;13767:1;13758:7;13754:15;13751:1;13748:22;13728:1;13721:9;13701:83;13678:139;;13797:18;;:::i;:::-;13678:139;13462:362;13414:410;;;;:::o;13830:180::-;13878:77;13875:1;13868:88;13975:4;13972:1;13965:15;13999:4;13996:1;13989:15;14016:233;14055:3;14078:24;14096:5;14078:24;:::i;:::-;14069:33;;14124:66;14117:5;14114:77;14111:103;;14194:18;;:::i;:::-;14111:103;14241:1;14234:5;14230:13;14223:20;;14016:233;;;:::o;14255:168::-;14395:20;14391:1;14383:6;14379:14;14372:44;14255:168;:::o;14429:366::-;14571:3;14592:67;14656:2;14651:3;14592:67;:::i;:::-;14585:74;;14668:93;14757:3;14668:93;:::i;:::-;14786:2;14781:3;14777:12;14770:19;;14429:366;;;:::o;14801:419::-;14967:4;15005:2;14994:9;14990:18;14982:26;;15054:9;15048:4;15044:20;15040:1;15029:9;15025:17;15018:47;15082:131;15208:4;15082:131;:::i;:::-;15074:139;;14801:419;;;:::o;15226:173::-;15366:25;15362:1;15354:6;15350:14;15343:49;15226:173;:::o;15405:366::-;15547:3;15568:67;15632:2;15627:3;15568:67;:::i;:::-;15561:74;;15644:93;15733:3;15644:93;:::i;:::-;15762:2;15757:3;15753:12;15746:19;;15405:366;;;:::o;15777:419::-;15943:4;15981:2;15970:9;15966:18;15958:26;;16030:9;16024:4;16020:20;16016:1;16005:9;16001:17;15994:47;16058:131;16184:4;16058:131;:::i;:::-;16050:139;;15777:419;;;:::o;16202:143::-;16259:5;16290:6;16284:13;16275:22;;16306:33;16333:5;16306:33;:::i;:::-;16202:143;;;;:::o;16351:351::-;16421:6;16470:2;16458:9;16449:7;16445:23;16441:32;16438:119;;;16476:79;;:::i;:::-;16438:119;16596:1;16621:64;16677:7;16668:6;16657:9;16653:22;16621:64;:::i;:::-;16611:74;;16567:128;16351:351;;;;:::o;16708:332::-;16829:4;16867:2;16856:9;16852:18;16844:26;;16880:71;16948:1;16937:9;16933:17;16924:6;16880:71;:::i;:::-;16961:72;17029:2;17018:9;17014:18;17005:6;16961:72;:::i;:::-;16708:332;;;;;:::o;17046:807::-;17295:4;17333:3;17322:9;17318:19;17310:27;;17347:71;17415:1;17404:9;17400:17;17391:6;17347:71;:::i;:::-;17428:72;17496:2;17485:9;17481:18;17472:6;17428:72;:::i;:::-;17510:80;17586:2;17575:9;17571:18;17562:6;17510:80;:::i;:::-;17600;17676:2;17665:9;17661:18;17652:6;17600:80;:::i;:::-;17690:73;17758:3;17747:9;17743:19;17734:6;17690:73;:::i;:::-;17773;17841:3;17830:9;17826:19;17817:6;17773:73;:::i;:::-;17046:807;;;;;;;;;:::o;17859:143::-;17916:5;17947:6;17941:13;17932:22;;17963:33;17990:5;17963:33;:::i;:::-;17859:143;;;;:::o;18008:663::-;18096:6;18104;18112;18161:2;18149:9;18140:7;18136:23;18132:32;18129:119;;;18167:79;;:::i;:::-;18129:119;18287:1;18312:64;18368:7;18359:6;18348:9;18344:22;18312:64;:::i;:::-;18302:74;;18258:128;18425:2;18451:64;18507:7;18498:6;18487:9;18483:22;18451:64;:::i;:::-;18441:74;;18396:129;18564:2;18590:64;18646:7;18637:6;18626:9;18622:22;18590:64;:::i;:::-;18580:74;;18535:129;18008:663;;;;;:::o;18677:332::-;18798:4;18836:2;18825:9;18821:18;18813:26;;18849:71;18917:1;18906:9;18902:17;18893:6;18849:71;:::i;:::-;18930:72;18998:2;18987:9;18983:18;18974:6;18930:72;:::i;:::-;18677:332;;;;;:::o;19015:116::-;19085:21;19100:5;19085:21;:::i;:::-;19078:5;19075:32;19065:60;;19121:1;19118;19111:12;19065:60;19015:116;:::o;19137:137::-;19191:5;19222:6;19216:13;19207:22;;19238:30;19262:5;19238:30;:::i;:::-;19137:137;;;;:::o;19280:345::-;19347:6;19396:2;19384:9;19375:7;19371:23;19367:32;19364:119;;;19402:79;;:::i;:::-;19364:119;19522:1;19547:61;19600:7;19591:6;19580:9;19576:22;19547:61;:::i;:::-;19537:71;;19493:125;19280:345;;;;:::o;19631:223::-;19771:34;19767:1;19759:6;19755:14;19748:58;19840:6;19835:2;19827:6;19823:15;19816:31;19631:223;:::o;19860:366::-;20002:3;20023:67;20087:2;20082:3;20023:67;:::i;:::-;20016:74;;20099:93;20188:3;20099:93;:::i;:::-;20217:2;20212:3;20208:12;20201:19;;19860:366;;;:::o;20232:419::-;20398:4;20436:2;20425:9;20421:18;20413:26;;20485:9;20479:4;20475:20;20471:1;20460:9;20456:17;20449:47;20513:131;20639:4;20513:131;:::i;:::-;20505:139;;20232:419;;;:::o;20657:221::-;20797:34;20793:1;20785:6;20781:14;20774:58;20866:4;20861:2;20853:6;20849:15;20842:29;20657:221;:::o;20884:366::-;21026:3;21047:67;21111:2;21106:3;21047:67;:::i;:::-;21040:74;;21123:93;21212:3;21123:93;:::i;:::-;21241:2;21236:3;21232:12;21225:19;;20884:366;;;:::o;21256:419::-;21422:4;21460:2;21449:9;21445:18;21437:26;;21509:9;21503:4;21499:20;21495:1;21484:9;21480:17;21473:47;21537:131;21663:4;21537:131;:::i;:::-;21529:139;;21256:419;;;:::o;21681:224::-;21821:34;21817:1;21809:6;21805:14;21798:58;21890:7;21885:2;21877:6;21873:15;21866:32;21681:224;:::o;21911:366::-;22053:3;22074:67;22138:2;22133:3;22074:67;:::i;:::-;22067:74;;22150:93;22239:3;22150:93;:::i;:::-;22268:2;22263:3;22259:12;22252:19;;21911:366;;;:::o;22283:419::-;22449:4;22487:2;22476:9;22472:18;22464:26;;22536:9;22530:4;22526:20;22522:1;22511:9;22507:17;22500:47;22564:131;22690:4;22564:131;:::i;:::-;22556:139;;22283:419;;;:::o;22708:222::-;22848:34;22844:1;22836:6;22832:14;22825:58;22917:5;22912:2;22904:6;22900:15;22893:30;22708:222;:::o;22936:366::-;23078:3;23099:67;23163:2;23158:3;23099:67;:::i;:::-;23092:74;;23175:93;23264:3;23175:93;:::i;:::-;23293:2;23288:3;23284:12;23277:19;;22936:366;;;:::o;23308:419::-;23474:4;23512:2;23501:9;23497:18;23489:26;;23561:9;23555:4;23551:20;23547:1;23536:9;23532:17;23525:47;23589:131;23715:4;23589:131;:::i;:::-;23581:139;;23308:419;;;:::o;23733:228::-;23873:34;23869:1;23861:6;23857:14;23850:58;23942:11;23937:2;23929:6;23925:15;23918:36;23733:228;:::o;23967:366::-;24109:3;24130:67;24194:2;24189:3;24130:67;:::i;:::-;24123:74;;24206:93;24295:3;24206:93;:::i;:::-;24324:2;24319:3;24315:12;24308:19;;23967:366;;;:::o;24339:419::-;24505:4;24543:2;24532:9;24528:18;24520:26;;24592:9;24586:4;24582:20;24578:1;24567:9;24563:17;24556:47;24620:131;24746:4;24620:131;:::i;:::-;24612:139;;24339:419;;;:::o;24764:175::-;24904:27;24900:1;24892:6;24888:14;24881:51;24764:175;:::o;24945:366::-;25087:3;25108:67;25172:2;25167:3;25108:67;:::i;:::-;25101:74;;25184:93;25273:3;25184:93;:::i;:::-;25302:2;25297:3;25293:12;25286:19;;24945:366;;;:::o;25317:419::-;25483:4;25521:2;25510:9;25506:18;25498:26;;25570:9;25564:4;25560:20;25556:1;25545:9;25541:17;25534:47;25598:131;25724:4;25598:131;:::i;:::-;25590:139;;25317:419;;;:::o;25742:191::-;25782:3;25801:20;25819:1;25801:20;:::i;:::-;25796:25;;25835:20;25853:1;25835:20;:::i;:::-;25830:25;;25878:1;25875;25871:9;25864:16;;25899:3;25896:1;25893:10;25890:36;;;25906:18;;:::i;:::-;25890:36;25742:191;;;;:::o;25939:176::-;26079:28;26075:1;26067:6;26063:14;26056:52;25939:176;:::o;26121:366::-;26263:3;26284:67;26348:2;26343:3;26284:67;:::i;:::-;26277:74;;26360:93;26449:3;26360:93;:::i;:::-;26478:2;26473:3;26469:12;26462:19;;26121:366;;;:::o;26493:419::-;26659:4;26697:2;26686:9;26682:18;26674:26;;26746:9;26740:4;26736:20;26732:1;26721:9;26717:17;26710:47;26774:131;26900:4;26774:131;:::i;:::-;26766:139;;26493:419;;;:::o;26918:173::-;27058:25;27054:1;27046:6;27042:14;27035:49;26918:173;:::o;27097:366::-;27239:3;27260:67;27324:2;27319:3;27260:67;:::i;:::-;27253:74;;27336:93;27425:3;27336:93;:::i;:::-;27454:2;27449:3;27445:12;27438:19;;27097:366;;;:::o;27469:419::-;27635:4;27673:2;27662:9;27658:18;27650:26;;27722:9;27716:4;27712:20;27708:1;27697:9;27693:17;27686:47;27750:131;27876:4;27750:131;:::i;:::-;27742:139;;27469:419;;;:::o;27894:194::-;27934:4;27954:20;27972:1;27954:20;:::i;:::-;27949:25;;27988:20;28006:1;27988:20;:::i;:::-;27983:25;;28032:1;28029;28025:9;28017:17;;28056:1;28050:4;28047:11;28044:37;;;28061:18;;:::i;:::-;28044:37;27894:194;;;;:::o;28094:114::-;28161:6;28195:5;28189:12;28179:22;;28094:114;;;:::o;28214:184::-;28313:11;28347:6;28342:3;28335:19;28387:4;28382:3;28378:14;28363:29;;28214:184;;;;:::o;28404:132::-;28471:4;28494:3;28486:11;;28524:4;28519:3;28515:14;28507:22;;28404:132;;;:::o;28542:108::-;28619:24;28637:5;28619:24;:::i;:::-;28614:3;28607:37;28542:108;;:::o;28656:179::-;28725:10;28746:46;28788:3;28780:6;28746:46;:::i;:::-;28824:4;28819:3;28815:14;28801:28;;28656:179;;;;:::o;28841:113::-;28911:4;28943;28938:3;28934:14;28926:22;;28841:113;;;:::o;28990:732::-;29109:3;29138:54;29186:5;29138:54;:::i;:::-;29208:86;29287:6;29282:3;29208:86;:::i;:::-;29201:93;;29318:56;29368:5;29318:56;:::i;:::-;29397:7;29428:1;29413:284;29438:6;29435:1;29432:13;29413:284;;;29514:6;29508:13;29541:63;29600:3;29585:13;29541:63;:::i;:::-;29534:70;;29627:60;29680:6;29627:60;:::i;:::-;29617:70;;29473:224;29460:1;29457;29453:9;29448:14;;29413:284;;;29417:14;29713:3;29706:10;;29114:608;;;28990:732;;;;:::o;29728:831::-;29991:4;30029:3;30018:9;30014:19;30006:27;;30043:71;30111:1;30100:9;30096:17;30087:6;30043:71;:::i;:::-;30124:80;30200:2;30189:9;30185:18;30176:6;30124:80;:::i;:::-;30251:9;30245:4;30241:20;30236:2;30225:9;30221:18;30214:48;30279:108;30382:4;30373:6;30279:108;:::i;:::-;30271:116;;30397:72;30465:2;30454:9;30450:18;30441:6;30397:72;:::i;:::-;30479:73;30547:3;30536:9;30532:19;30523:6;30479:73;:::i;:::-;29728:831;;;;;;;;:::o;30565:180::-;30613:77;30610:1;30603:88;30710:4;30707:1;30700:15;30734:4;30731:1;30724:15;30751:185;30791:1;30808:20;30826:1;30808:20;:::i;:::-;30803:25;;30842:20;30860:1;30842:20;:::i;:::-;30837:25;;30881:1;30871:35;;30886:18;;:::i;:::-;30871:35;30928:1;30925;30921:9;30916:14;;30751:185;;;;:::o;30942:220::-;31082:34;31078:1;31070:6;31066:14;31059:58;31151:3;31146:2;31138:6;31134:15;31127:28;30942:220;:::o;31168:366::-;31310:3;31331:67;31395:2;31390:3;31331:67;:::i;:::-;31324:74;;31407:93;31496:3;31407:93;:::i;:::-;31525:2;31520:3;31516:12;31509:19;;31168:366;;;:::o;31540:419::-;31706:4;31744:2;31733:9;31729:18;31721:26;;31793:9;31787:4;31783:20;31779:1;31768:9;31764:17;31757:47;31821:131;31947:4;31821:131;:::i;:::-;31813:139;;31540:419;;;:::o;31965:177::-;32105:29;32101:1;32093:6;32089:14;32082:53;31965:177;:::o;32148:366::-;32290:3;32311:67;32375:2;32370:3;32311:67;:::i;:::-;32304:74;;32387:93;32476:3;32387:93;:::i;:::-;32505:2;32500:3;32496:12;32489:19;;32148:366;;;:::o;32520:419::-;32686:4;32724:2;32713:9;32709:18;32701:26;;32773:9;32767:4;32763:20;32759:1;32748:9;32744:17;32737:47;32801:131;32927:4;32801:131;:::i;:::-;32793:139;;32520:419;;;:::o

Swarm Source

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