ETH Price: $3,639.34 (+8.22%)

Token

WatchTowers AI (WTS)
 

Overview

Max Total Supply

10,000,000 WTS

Holders

445

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.786883636815069324 WTS

Value
$0.00
0x44911ae8d8a4b76f40687513c52090707ed694ae
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:
WTS

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**

WatchTowers AI: Revolutionizing blockchain security with AI-driven smart contract audits and comprehensive, multi-faceted scoring system.

Twitter: https://x.com/watchtowersai
Telegram: https://t.me/watchtowersai
Website: https://watchtowers.ai
Docs: https://docs.watchtowers.ai

BOT: https://t.me/watchtowers_ai_bot


*/

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract WTS is Context, IERC20, Ownable {
    string private constant _name = "WatchTowers AI";
    string private constant _symbol = "WTS";
    uint8 private constant _decimals = 18;

    address payable private _marketingAddress = payable(0x896A9856dB95C4E271E9A173ea75c1C78E2F5686);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    using SafeMath for uint256;

    uint256 private constant _tTotal = 10000000 * 10 ** _decimals;
    uint256 public _maxTxAmount = 25000 * 10 ** _decimals;
    uint256 public _maxWalletSize = 25000 * 10 ** _decimals;
    uint256 public _swapTokensAtAmount = 1000 * 10 ** _decimals;

    mapping(address => bool) public bots; 
    mapping (address => uint256) public _buyMap;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 5;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 5;

    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

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

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

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

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

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

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

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

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

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

    function setTaxToZero() external{
        require(_msgSender() == _marketingAddress);
        _redisFeeOnBuy = 0;
        _redisFeeOnSell = 0;
        _taxFeeOnBuy = 0;
        _taxFeeOnSell = 0;
        _previousredisFee = 0;
        _previoustaxFee = 0;
    }

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

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

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setTaxToZero","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273896a9856db95c4e271e9a173ea75c1c78e2f568660025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600460146101000a81548160ff0219169083151502179055505f600460156101000a81548160ff0219169083151502179055506001600460166101000a81548160ff0219169083151502179055506012600a620000b7919062000803565b6161a8620000c6919062000853565b6005556012600a620000d9919062000803565b6161a8620000e8919062000853565b6006556012600a620000fb919062000803565b6103e86200010a919062000853565b6007556012600a6200011d919062000803565b629896806200012d919062000853565b5f196200013b9190620008ca565b5f1962000149919062000901565b600e555f60105560056011555f601255600560135560125460145560135460155560145460165560155460175534801562000182575f80fd5b505f620001946200064360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e54600a5f620002466200064360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000325573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200034b9190620009a0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003b1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003d79190620009a0565b6040518363ffffffff1660e01b8152600401620003f6929190620009e1565b6020604051808303815f875af115801562000413573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004399190620009a0565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600d5f6200048d6200064a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600d5f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620005b76200064360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a62000615919062000803565b6298968062000625919062000853565b60405162000634919062000a1d565b60405180910390a35062000a38565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620006fb57808604811115620006d357620006d262000671565b5b6001851615620006e35780820291505b8081029050620006f3856200069e565b9450620006b3565b94509492505050565b5f82620007155760019050620007e7565b8162000724575f9050620007e7565b81600181146200073d576002811462000748576200077e565b6001915050620007e7565b60ff8411156200075d576200075c62000671565b5b8360020a91508482111562000777576200077662000671565b5b50620007e7565b5060208310610133831016604e8410600b8410161715620007b85782820a905083811115620007b257620007b162000671565b5b620007e7565b620007c78484846001620006aa565b92509050818404811115620007e157620007e062000671565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200080f82620007ee565b91506200081c83620007f7565b92506200084b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000704565b905092915050565b5f6200085f82620007ee565b91506200086c83620007ee565b92508282026200087c81620007ee565b9150828204841483151762000896576200089562000671565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620008d682620007ee565b9150620008e383620007ee565b925082620008f657620008f56200089d565b5b828206905092915050565b5f6200090d82620007ee565b91506200091a83620007ee565b925082820390508181111562000935576200093462000671565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200096a826200093f565b9050919050565b6200097c816200095e565b811462000987575f80fd5b50565b5f815190506200099a8162000971565b92915050565b5f60208284031215620009b857620009b76200093b565b5b5f620009c7848285016200098a565b91505092915050565b620009db816200095e565b82525050565b5f604082019050620009f65f830185620009d0565b62000a056020830184620009d0565b9392505050565b62000a1781620007ee565b82525050565b5f60208201905062000a325f83018462000a0c565b92915050565b613d7f8062000a465f395ff3fe6080604052600436106101da575f3560e01c80637d1db4a511610101578063a2a957bb11610094578063c492f04611610063578063c492f04614610661578063dd62ed3e14610689578063ea1644d5146106c5578063f2fde38b146106ed576101e1565b8063a2a957bb146105ab578063a9059cbb146105d3578063bfd792841461060f578063c3c8cd801461064b576101e1565b80638f70ccf7116100d05780638f70ccf7146105075780638f9a55c01461052f57806395d89b411461055957806398a5c31514610583576101e1565b80637d1db4a5146104615780637f2feddc1461048b5780638859f03d146104c75780638da5cb5b146104dd576101e1565b8063313ce567116101795780636fc3eaec116101485780636fc3eaec146103d157806370a08231146103e7578063715018a61461042357806374010ece14610439576101e1565b8063313ce5671461032d57806349bd5a5e146103575780636b999053146103815780636d8aa8f8146103a9576101e1565b80631694505e116101b55780631694505e1461027357806318160ddd1461029d57806323b872dd146102c75780632fd689e314610303576101e1565b8062b8cf2a146101e557806306fdde031461020d578063095ea7b314610237576101e1565b366101e157005b5f80fd5b3480156101f0575f80fd5b5061020b60048036038101906102069190612ca1565b610715565b005b348015610218575f80fd5b50610221610834565b60405161022e9190612d62565b60405180910390f35b348015610242575f80fd5b5061025d60048036038101906102589190612db5565b610871565b60405161026a9190612e0d565b60405180910390f35b34801561027e575f80fd5b5061028761088e565b6040516102949190612e81565b60405180910390f35b3480156102a8575f80fd5b506102b16108b3565b6040516102be9190612ea9565b60405180910390f35b3480156102d2575f80fd5b506102ed60048036038101906102e89190612ec2565b6108d5565b6040516102fa9190612e0d565b60405180910390f35b34801561030e575f80fd5b506103176109a9565b6040516103249190612ea9565b60405180910390f35b348015610338575f80fd5b506103416109af565b60405161034e9190612f2d565b60405180910390f35b348015610362575f80fd5b5061036b6109b7565b6040516103789190612f55565b60405180910390f35b34801561038c575f80fd5b506103a760048036038101906103a29190612f6e565b6109dc565b005b3480156103b4575f80fd5b506103cf60048036038101906103ca9190612fc3565b610ac7565b005b3480156103dc575f80fd5b506103e5610b78565b005b3480156103f2575f80fd5b5061040d60048036038101906104089190612f6e565b610be7565b60405161041a9190612ea9565b60405180910390f35b34801561042e575f80fd5b50610437610c35565b005b348015610444575f80fd5b5061045f600480360381019061045a9190612fee565b610d83565b005b34801561046c575f80fd5b50610475610e21565b6040516104829190612ea9565b60405180910390f35b348015610496575f80fd5b506104b160048036038101906104ac9190612f6e565b610e27565b6040516104be9190612ea9565b60405180910390f35b3480156104d2575f80fd5b506104db610e3c565b005b3480156104e8575f80fd5b506104f1610ec7565b6040516104fe9190612f55565b60405180910390f35b348015610512575f80fd5b5061052d60048036038101906105289190612fc3565b610eee565b005b34801561053a575f80fd5b50610543610f9f565b6040516105509190612ea9565b60405180910390f35b348015610564575f80fd5b5061056d610fa5565b60405161057a9190612d62565b60405180910390f35b34801561058e575f80fd5b506105a960048036038101906105a49190612fee565b610fe2565b005b3480156105b6575f80fd5b506105d160048036038101906105cc9190613019565b611080565b005b3480156105de575f80fd5b506105f960048036038101906105f49190612db5565b611136565b6040516106069190612e0d565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190612f6e565b611153565b6040516106429190612e0d565b60405180910390f35b348015610656575f80fd5b5061065f611170565b005b34801561066c575f80fd5b50610687600480360381019061068291906130d6565b6111e7565b005b348015610694575f80fd5b506106af60048036038101906106aa9190613133565b611316565b6040516106bc9190612ea9565b60405180910390f35b3480156106d0575f80fd5b506106eb60048036038101906106e69190612fee565b611398565b005b3480156106f8575f80fd5b50610713600480360381019061070e9190612f6e565b611436565b005b61071d6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906131bb565b60405180910390fd5b5f5b815181101561083057600160085f8484815181106107cc576107cb6131d9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107ab565b5050565b60606040518060400160405280600e81526020017f5761746368546f77657273204149000000000000000000000000000000000000815250905090565b5f61088461087d6115f3565b84846115fa565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012600a6108c29190613362565b629896806108d091906133ac565b905090565b5f6108e18484846117bd565b61099e846108ed6115f3565b61099985604051806060016040528060288152602001613d2260289139600c5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109506115f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201f9092919063ffffffff16565b6115fa565b600190509392505050565b60075481565b5f6012905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e46115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a67906131bb565b60405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610acf6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b52906131bb565b60405180910390fd5b80600460166101000a81548160ff02191690831515021790555050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb86115f3565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7575f80fd5b5f479050610be481612081565b50565b5f610c2e600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e9565b9050919050565b610c3d6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc0906131bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d8b6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e906131bb565b60405180910390fd5b8060058190555050565b60055481565b6009602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e7c6115f3565b73ffffffffffffffffffffffffffffffffffffffff1614610e9b575f80fd5b5f6010819055505f6012819055505f6011819055505f6013819055505f6016819055505f601781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef66115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f79906131bb565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b60065481565b60606040518060400160405280600381526020017f5754530000000000000000000000000000000000000000000000000000000000815250905090565b610fea6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d906131bb565b60405180910390fd5b8060078190555050565b6110886115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b906131bb565b60405180910390fd5b8360108190555082601281905550816011819055508060138190555050505050565b5f6111496111426115f3565b84846117bd565b6001905092915050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111b06115f3565b73ffffffffffffffffffffffffffffffffffffffff16146111cf575f80fd5b5f6111d930610be7565b90506111e481612155565b50565b6111ef6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611272906131bb565b60405180910390fd5b5f5b838390508110156113105781600d5f86868581811061129f5761129e6131d9565b5b90506020020160208101906112b49190612f6e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061127d565b50505050565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113a06115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906131bb565b60405180910390fd5b8060068190555050565b61143e6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c1906131bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f9061345d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906134eb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613579565b60405180910390fd5b80600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117b09190612ea9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613607565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090613695565b60405180910390fd5b5f81116118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290613723565b60405180910390fd5b6118e3610ec7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119515750611921610ec7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2c57600460149054906101000a900460ff166119e057611972610ec7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d6906137b1565b60405180910390fd5b5b600554811115611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613819565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac3575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af9906138a7565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bae5760065481611b6384610be7565b611b6d91906138c5565b10611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba490613968565b60405180910390fd5b5b5f611bb830610be7565b90505f60075482101590506005548210611bd25760055491505b808015611bec5750600460159054906101000a900460ff16155b8015611c45575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5d5750600460169054906101000a900460ff165b8015611cb05750600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d035750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2957611d1182612155565b5f4790505f811115611d2757611d2647612081565b5b505b50505b5f60019050600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dcc5750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e7d575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e7c575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e8a575f905061200d565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f33575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4b576010546014819055506011546015819055505b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff4575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200c576012546014819055506013546015819055505b5b612019848484846123c0565b50505050565b5f838311158290612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d9190612d62565b60405180910390fd5b505f83856120749190613986565b9050809150509392505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e5573d5f803e3d5ffd5b5050565b5f600e5482111561212f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212690613a29565b60405180910390fd5b5f6121386123ed565b905061214d818461241690919063ffffffff16565b915050919050565b6001600460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218c5761218b612b0b565b5b6040519080825280602002602001820160405280156121ba5781602001602082028036833780820191505090505b50905030815f815181106121d1576121d06131d9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122999190613a5b565b816001815181106122ad576122ac6131d9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123133060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115fa565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612375959493929190613b76565b5f604051808303815f87803b15801561238c575f80fd5b505af115801561239e573d5f803e3d5ffd5b50505050505f600460156101000a81548160ff02191690831515021790555050565b806123ce576123cd61245f565b5b6123d9848484612498565b806123e7576123e6612658565b5b50505050565b5f805f6123f861266c565b9150915061240f818361241690919063ffffffff16565b9250505090565b5f61245783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612701565b905092915050565b5f60145414801561247157505f601554145b612496576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f806124a787612762565b95509550955095509550955061250386600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c290919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061259485600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280b90919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125de81612868565b6125e8848361291f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126459190612ea9565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f600e5490505f6012600a6126839190613362565b6298968061269191906133ac565b90506126c36012600a6126a49190613362565b629896806126b291906133ac565b600e5461241690919063ffffffff16565b8210156126f457600e546012600a6126db9190613362565b629896806126e991906133ac565b9350935050506126fd565b81819350935050505b9091565b5f8083118290612747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273e9190612d62565b60405180910390fd5b505f83856127559190613bfb565b9050809150509392505050565b5f805f805f805f805f61277a8a601454601554612959565b9250925092505f6127896123ed565b90505f805f61279a8e8787876129eb565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61280383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201f565b905092915050565b5f80828461281991906138c5565b90508381101561285e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285590613c75565b60405180910390fd5b8091505092915050565b5f6128716123ed565b90505f6128878284612a6f90919063ffffffff16565b90506128d981600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280b90919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61293482600e546127c290919063ffffffff16565b600e8190555061294f81600f5461280b90919063ffffffff16565b600f819055505050565b5f805f806129836064612975888a612a6f90919063ffffffff16565b61241690919063ffffffff16565b90505f6129ac606461299e888b612a6f90919063ffffffff16565b61241690919063ffffffff16565b90505f6129d4826129c6858c6127c290919063ffffffff16565b6127c290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a028589612a6f90919063ffffffff16565b90505f612a188689612a6f90919063ffffffff16565b90505f612a2e8789612a6f90919063ffffffff16565b90505f612a5682612a4885876127c290919063ffffffff16565b6127c290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a7f575f9050612ae0565b5f8284612a8c91906133ac565b9050828482612a9b9190613bfb565b14612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad290613d03565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b4182612afb565b810181811067ffffffffffffffff82111715612b6057612b5f612b0b565b5b80604052505050565b5f612b72612ae6565b9050612b7e8282612b38565b919050565b5f67ffffffffffffffff821115612b9d57612b9c612b0b565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bdb82612bb2565b9050919050565b612beb81612bd1565b8114612bf5575f80fd5b50565b5f81359050612c0681612be2565b92915050565b5f612c1e612c1984612b83565b612b69565b90508083825260208201905060208402830185811115612c4157612c40612bae565b5b835b81811015612c6a5780612c568882612bf8565b845260208401935050602081019050612c43565b5050509392505050565b5f82601f830112612c8857612c87612af7565b5b8135612c98848260208601612c0c565b91505092915050565b5f60208284031215612cb657612cb5612aef565b5b5f82013567ffffffffffffffff811115612cd357612cd2612af3565b5b612cdf84828501612c74565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d1f578082015181840152602081019050612d04565b5f8484015250505050565b5f612d3482612ce8565b612d3e8185612cf2565b9350612d4e818560208601612d02565b612d5781612afb565b840191505092915050565b5f6020820190508181035f830152612d7a8184612d2a565b905092915050565b5f819050919050565b612d9481612d82565b8114612d9e575f80fd5b50565b5f81359050612daf81612d8b565b92915050565b5f8060408385031215612dcb57612dca612aef565b5b5f612dd885828601612bf8565b9250506020612de985828601612da1565b9150509250929050565b5f8115159050919050565b612e0781612df3565b82525050565b5f602082019050612e205f830184612dfe565b92915050565b5f819050919050565b5f612e49612e44612e3f84612bb2565b612e26565b612bb2565b9050919050565b5f612e5a82612e2f565b9050919050565b5f612e6b82612e50565b9050919050565b612e7b81612e61565b82525050565b5f602082019050612e945f830184612e72565b92915050565b612ea381612d82565b82525050565b5f602082019050612ebc5f830184612e9a565b92915050565b5f805f60608486031215612ed957612ed8612aef565b5b5f612ee686828701612bf8565b9350506020612ef786828701612bf8565b9250506040612f0886828701612da1565b9150509250925092565b5f60ff82169050919050565b612f2781612f12565b82525050565b5f602082019050612f405f830184612f1e565b92915050565b612f4f81612bd1565b82525050565b5f602082019050612f685f830184612f46565b92915050565b5f60208284031215612f8357612f82612aef565b5b5f612f9084828501612bf8565b91505092915050565b612fa281612df3565b8114612fac575f80fd5b50565b5f81359050612fbd81612f99565b92915050565b5f60208284031215612fd857612fd7612aef565b5b5f612fe584828501612faf565b91505092915050565b5f6020828403121561300357613002612aef565b5b5f61301084828501612da1565b91505092915050565b5f805f806080858703121561303157613030612aef565b5b5f61303e87828801612da1565b945050602061304f87828801612da1565b935050604061306087828801612da1565b925050606061307187828801612da1565b91505092959194509250565b5f80fd5b5f8083601f84011261309657613095612af7565b5b8235905067ffffffffffffffff8111156130b3576130b261307d565b5b6020830191508360208202830111156130cf576130ce612bae565b5b9250929050565b5f805f604084860312156130ed576130ec612aef565b5b5f84013567ffffffffffffffff81111561310a57613109612af3565b5b61311686828701613081565b9350935050602061312986828701612faf565b9150509250925092565b5f806040838503121561314957613148612aef565b5b5f61315685828601612bf8565b925050602061316785828601612bf8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131a5602083612cf2565b91506131b082613171565b602082019050919050565b5f6020820190508181035f8301526131d281613199565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156132885780860481111561326457613263613206565b5b60018516156132735780820291505b808102905061328185613233565b9450613248565b94509492505050565b5f826132a0576001905061335b565b816132ad575f905061335b565b81600181146132c357600281146132cd576132fc565b600191505061335b565b60ff8411156132df576132de613206565b5b8360020a9150848211156132f6576132f5613206565b5b5061335b565b5060208310610133831016604e8410600b84101617156133315782820a90508381111561332c5761332b613206565b5b61335b565b61333e848484600161323f565b9250905081840481111561335557613354613206565b5b81810290505b9392505050565b5f61336c82612d82565b915061337783612f12565b92506133a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613291565b905092915050565b5f6133b682612d82565b91506133c183612d82565b92508282026133cf81612d82565b915082820484148315176133e6576133e5613206565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613447602683612cf2565b9150613452826133ed565b604082019050919050565b5f6020820190508181035f8301526134748161343b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134d5602483612cf2565b91506134e08261347b565b604082019050919050565b5f6020820190508181035f830152613502816134c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613563602283612cf2565b915061356e82613509565b604082019050919050565b5f6020820190508181035f83015261359081613557565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135f1602583612cf2565b91506135fc82613597565b604082019050919050565b5f6020820190508181035f83015261361e816135e5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61367f602383612cf2565b915061368a82613625565b604082019050919050565b5f6020820190508181035f8301526136ac81613673565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61370d602983612cf2565b9150613718826136b3565b604082019050919050565b5f6020820190508181035f83015261373a81613701565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61379b603f83612cf2565b91506137a682613741565b604082019050919050565b5f6020820190508181035f8301526137c88161378f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613803601c83612cf2565b915061380e826137cf565b602082019050919050565b5f6020820190508181035f830152613830816137f7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613891602383612cf2565b915061389c82613837565b604082019050919050565b5f6020820190508181035f8301526138be81613885565b9050919050565b5f6138cf82612d82565b91506138da83612d82565b92508282019050808211156138f2576138f1613206565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613952602383612cf2565b915061395d826138f8565b604082019050919050565b5f6020820190508181035f83015261397f81613946565b9050919050565b5f61399082612d82565b915061399b83612d82565b92508282039050818111156139b3576139b2613206565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a13602a83612cf2565b9150613a1e826139b9565b604082019050919050565b5f6020820190508181035f830152613a4081613a07565b9050919050565b5f81519050613a5581612be2565b92915050565b5f60208284031215613a7057613a6f612aef565b5b5f613a7d84828501613a47565b91505092915050565b5f819050919050565b5f613aa9613aa4613a9f84613a86565b612e26565b612d82565b9050919050565b613ab981613a8f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613af181612bd1565b82525050565b5f613b028383613ae8565b60208301905092915050565b5f602082019050919050565b5f613b2482613abf565b613b2e8185613ac9565b9350613b3983613ad9565b805f5b83811015613b69578151613b508882613af7565b9750613b5b83613b0e565b925050600181019050613b3c565b5085935050505092915050565b5f60a082019050613b895f830188612e9a565b613b966020830187613ab0565b8181036040830152613ba88186613b1a565b9050613bb76060830185612f46565b613bc46080830184612e9a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c0582612d82565b9150613c1083612d82565b925082613c2057613c1f613bce565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c5f601b83612cf2565b9150613c6a82613c2b565b602082019050919050565b5f6020820190508181035f830152613c8c81613c53565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ced602183612cf2565b9150613cf882613c93565b604082019050919050565b5f6020820190508181035f830152613d1a81613ce1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ac0ab005f7deecc6f00569c9734e47f2ed152f4b5bf3f661fa1f30c099ebe1a364736f6c63430008160033

Deployed Bytecode

0x6080604052600436106101da575f3560e01c80637d1db4a511610101578063a2a957bb11610094578063c492f04611610063578063c492f04614610661578063dd62ed3e14610689578063ea1644d5146106c5578063f2fde38b146106ed576101e1565b8063a2a957bb146105ab578063a9059cbb146105d3578063bfd792841461060f578063c3c8cd801461064b576101e1565b80638f70ccf7116100d05780638f70ccf7146105075780638f9a55c01461052f57806395d89b411461055957806398a5c31514610583576101e1565b80637d1db4a5146104615780637f2feddc1461048b5780638859f03d146104c75780638da5cb5b146104dd576101e1565b8063313ce567116101795780636fc3eaec116101485780636fc3eaec146103d157806370a08231146103e7578063715018a61461042357806374010ece14610439576101e1565b8063313ce5671461032d57806349bd5a5e146103575780636b999053146103815780636d8aa8f8146103a9576101e1565b80631694505e116101b55780631694505e1461027357806318160ddd1461029d57806323b872dd146102c75780632fd689e314610303576101e1565b8062b8cf2a146101e557806306fdde031461020d578063095ea7b314610237576101e1565b366101e157005b5f80fd5b3480156101f0575f80fd5b5061020b60048036038101906102069190612ca1565b610715565b005b348015610218575f80fd5b50610221610834565b60405161022e9190612d62565b60405180910390f35b348015610242575f80fd5b5061025d60048036038101906102589190612db5565b610871565b60405161026a9190612e0d565b60405180910390f35b34801561027e575f80fd5b5061028761088e565b6040516102949190612e81565b60405180910390f35b3480156102a8575f80fd5b506102b16108b3565b6040516102be9190612ea9565b60405180910390f35b3480156102d2575f80fd5b506102ed60048036038101906102e89190612ec2565b6108d5565b6040516102fa9190612e0d565b60405180910390f35b34801561030e575f80fd5b506103176109a9565b6040516103249190612ea9565b60405180910390f35b348015610338575f80fd5b506103416109af565b60405161034e9190612f2d565b60405180910390f35b348015610362575f80fd5b5061036b6109b7565b6040516103789190612f55565b60405180910390f35b34801561038c575f80fd5b506103a760048036038101906103a29190612f6e565b6109dc565b005b3480156103b4575f80fd5b506103cf60048036038101906103ca9190612fc3565b610ac7565b005b3480156103dc575f80fd5b506103e5610b78565b005b3480156103f2575f80fd5b5061040d60048036038101906104089190612f6e565b610be7565b60405161041a9190612ea9565b60405180910390f35b34801561042e575f80fd5b50610437610c35565b005b348015610444575f80fd5b5061045f600480360381019061045a9190612fee565b610d83565b005b34801561046c575f80fd5b50610475610e21565b6040516104829190612ea9565b60405180910390f35b348015610496575f80fd5b506104b160048036038101906104ac9190612f6e565b610e27565b6040516104be9190612ea9565b60405180910390f35b3480156104d2575f80fd5b506104db610e3c565b005b3480156104e8575f80fd5b506104f1610ec7565b6040516104fe9190612f55565b60405180910390f35b348015610512575f80fd5b5061052d60048036038101906105289190612fc3565b610eee565b005b34801561053a575f80fd5b50610543610f9f565b6040516105509190612ea9565b60405180910390f35b348015610564575f80fd5b5061056d610fa5565b60405161057a9190612d62565b60405180910390f35b34801561058e575f80fd5b506105a960048036038101906105a49190612fee565b610fe2565b005b3480156105b6575f80fd5b506105d160048036038101906105cc9190613019565b611080565b005b3480156105de575f80fd5b506105f960048036038101906105f49190612db5565b611136565b6040516106069190612e0d565b60405180910390f35b34801561061a575f80fd5b5061063560048036038101906106309190612f6e565b611153565b6040516106429190612e0d565b60405180910390f35b348015610656575f80fd5b5061065f611170565b005b34801561066c575f80fd5b50610687600480360381019061068291906130d6565b6111e7565b005b348015610694575f80fd5b506106af60048036038101906106aa9190613133565b611316565b6040516106bc9190612ea9565b60405180910390f35b3480156106d0575f80fd5b506106eb60048036038101906106e69190612fee565b611398565b005b3480156106f8575f80fd5b50610713600480360381019061070e9190612f6e565b611436565b005b61071d6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a0906131bb565b60405180910390fd5b5f5b815181101561083057600160085f8484815181106107cc576107cb6131d9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107ab565b5050565b60606040518060400160405280600e81526020017f5761746368546f77657273204149000000000000000000000000000000000000815250905090565b5f61088461087d6115f3565b84846115fa565b6001905092915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6012600a6108c29190613362565b629896806108d091906133ac565b905090565b5f6108e18484846117bd565b61099e846108ed6115f3565b61099985604051806060016040528060288152602001613d2260289139600c5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109506115f3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201f9092919063ffffffff16565b6115fa565b600190509392505050565b60075481565b5f6012905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e46115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a67906131bb565b60405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610acf6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b52906131bb565b60405180910390fd5b80600460166101000a81548160ff02191690831515021790555050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bb86115f3565b73ffffffffffffffffffffffffffffffffffffffff1614610bd7575f80fd5b5f479050610be481612081565b50565b5f610c2e600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e9565b9050919050565b610c3d6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc0906131bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610d8b6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0e906131bb565b60405180910390fd5b8060058190555050565b60055481565b6009602052805f5260405f205f915090505481565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e7c6115f3565b73ffffffffffffffffffffffffffffffffffffffff1614610e9b575f80fd5b5f6010819055505f6012819055505f6011819055505f6013819055505f6016819055505f601781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef66115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f79906131bb565b60405180910390fd5b80600460146101000a81548160ff02191690831515021790555050565b60065481565b60606040518060400160405280600381526020017f5754530000000000000000000000000000000000000000000000000000000000815250905090565b610fea6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106d906131bb565b60405180910390fd5b8060078190555050565b6110886115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611114576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110b906131bb565b60405180910390fd5b8360108190555082601281905550816011819055508060138190555050505050565b5f6111496111426115f3565b84846117bd565b6001905092915050565b6008602052805f5260405f205f915054906101000a900460ff1681565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111b06115f3565b73ffffffffffffffffffffffffffffffffffffffff16146111cf575f80fd5b5f6111d930610be7565b90506111e481612155565b50565b6111ef6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461127b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611272906131bb565b60405180910390fd5b5f5b838390508110156113105781600d5f86868581811061129f5761129e6131d9565b5b90506020020160208101906112b49190612f6e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061127d565b50505050565b5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6113a06115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611423906131bb565b60405180910390fd5b8060068190555050565b61143e6115f3565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c1906131bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611538576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152f9061345d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f906134eb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cd90613579565b60405180910390fd5b80600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117b09190612ea9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613607565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611899576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189090613695565b60405180910390fd5b5f81116118db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d290613723565b60405180910390fd5b6118e3610ec7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119515750611921610ec7565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2c57600460149054906101000a900460ff166119e057611972610ec7565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d6906137b1565b60405180910390fd5b5b600554811115611a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1c90613819565b60405180910390fd5b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac3575060085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af9906138a7565b60405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bae5760065481611b6384610be7565b611b6d91906138c5565b10611bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba490613968565b60405180910390fd5b5b5f611bb830610be7565b90505f60075482101590506005548210611bd25760055491505b808015611bec5750600460159054906101000a900460ff16155b8015611c45575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5d5750600460169054906101000a900460ff165b8015611cb05750600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d035750600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2957611d1182612155565b5f4790505f811115611d2757611d2647612081565b5b505b50505b5f60019050600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dcc5750600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e7d575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e7c575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e8a575f905061200d565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f33575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4b576010546014819055506011546015819055505b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff4575060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200c576012546014819055506013546015819055505b5b612019848484846123c0565b50505050565b5f838311158290612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205d9190612d62565b60405180910390fd5b505f83856120749190613986565b9050809150509392505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e5573d5f803e3d5ffd5b5050565b5f600e5482111561212f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212690613a29565b60405180910390fd5b5f6121386123ed565b905061214d818461241690919063ffffffff16565b915050919050565b6001600460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218c5761218b612b0b565b5b6040519080825280602002602001820160405280156121ba5781602001602082028036833780820191505090505b50905030815f815181106121d1576121d06131d9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612275573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122999190613a5b565b816001815181106122ad576122ac6131d9565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123133060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115fa565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612375959493929190613b76565b5f604051808303815f87803b15801561238c575f80fd5b505af115801561239e573d5f803e3d5ffd5b50505050505f600460156101000a81548160ff02191690831515021790555050565b806123ce576123cd61245f565b5b6123d9848484612498565b806123e7576123e6612658565b5b50505050565b5f805f6123f861266c565b9150915061240f818361241690919063ffffffff16565b9250505090565b5f61245783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612701565b905092915050565b5f60145414801561247157505f601554145b612496576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f806124a787612762565b95509550955095509550955061250386600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127c290919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061259485600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280b90919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125de81612868565b6125e8848361291f565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126459190612ea9565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f600e5490505f6012600a6126839190613362565b6298968061269191906133ac565b90506126c36012600a6126a49190613362565b629896806126b291906133ac565b600e5461241690919063ffffffff16565b8210156126f457600e546012600a6126db9190613362565b629896806126e991906133ac565b9350935050506126fd565b81819350935050505b9091565b5f8083118290612747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273e9190612d62565b60405180910390fd5b505f83856127559190613bfb565b9050809150509392505050565b5f805f805f805f805f61277a8a601454601554612959565b9250925092505f6127896123ed565b90505f805f61279a8e8787876129eb565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61280383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201f565b905092915050565b5f80828461281991906138c5565b90508381101561285e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285590613c75565b60405180910390fd5b8091505092915050565b5f6128716123ed565b90505f6128878284612a6f90919063ffffffff16565b90506128d981600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461280b90919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b61293482600e546127c290919063ffffffff16565b600e8190555061294f81600f5461280b90919063ffffffff16565b600f819055505050565b5f805f806129836064612975888a612a6f90919063ffffffff16565b61241690919063ffffffff16565b90505f6129ac606461299e888b612a6f90919063ffffffff16565b61241690919063ffffffff16565b90505f6129d4826129c6858c6127c290919063ffffffff16565b6127c290919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612a028589612a6f90919063ffffffff16565b90505f612a188689612a6f90919063ffffffff16565b90505f612a2e8789612a6f90919063ffffffff16565b90505f612a5682612a4885876127c290919063ffffffff16565b6127c290919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a7f575f9050612ae0565b5f8284612a8c91906133ac565b9050828482612a9b9190613bfb565b14612adb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad290613d03565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612b4182612afb565b810181811067ffffffffffffffff82111715612b6057612b5f612b0b565b5b80604052505050565b5f612b72612ae6565b9050612b7e8282612b38565b919050565b5f67ffffffffffffffff821115612b9d57612b9c612b0b565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612bdb82612bb2565b9050919050565b612beb81612bd1565b8114612bf5575f80fd5b50565b5f81359050612c0681612be2565b92915050565b5f612c1e612c1984612b83565b612b69565b90508083825260208201905060208402830185811115612c4157612c40612bae565b5b835b81811015612c6a5780612c568882612bf8565b845260208401935050602081019050612c43565b5050509392505050565b5f82601f830112612c8857612c87612af7565b5b8135612c98848260208601612c0c565b91505092915050565b5f60208284031215612cb657612cb5612aef565b5b5f82013567ffffffffffffffff811115612cd357612cd2612af3565b5b612cdf84828501612c74565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612d1f578082015181840152602081019050612d04565b5f8484015250505050565b5f612d3482612ce8565b612d3e8185612cf2565b9350612d4e818560208601612d02565b612d5781612afb565b840191505092915050565b5f6020820190508181035f830152612d7a8184612d2a565b905092915050565b5f819050919050565b612d9481612d82565b8114612d9e575f80fd5b50565b5f81359050612daf81612d8b565b92915050565b5f8060408385031215612dcb57612dca612aef565b5b5f612dd885828601612bf8565b9250506020612de985828601612da1565b9150509250929050565b5f8115159050919050565b612e0781612df3565b82525050565b5f602082019050612e205f830184612dfe565b92915050565b5f819050919050565b5f612e49612e44612e3f84612bb2565b612e26565b612bb2565b9050919050565b5f612e5a82612e2f565b9050919050565b5f612e6b82612e50565b9050919050565b612e7b81612e61565b82525050565b5f602082019050612e945f830184612e72565b92915050565b612ea381612d82565b82525050565b5f602082019050612ebc5f830184612e9a565b92915050565b5f805f60608486031215612ed957612ed8612aef565b5b5f612ee686828701612bf8565b9350506020612ef786828701612bf8565b9250506040612f0886828701612da1565b9150509250925092565b5f60ff82169050919050565b612f2781612f12565b82525050565b5f602082019050612f405f830184612f1e565b92915050565b612f4f81612bd1565b82525050565b5f602082019050612f685f830184612f46565b92915050565b5f60208284031215612f8357612f82612aef565b5b5f612f9084828501612bf8565b91505092915050565b612fa281612df3565b8114612fac575f80fd5b50565b5f81359050612fbd81612f99565b92915050565b5f60208284031215612fd857612fd7612aef565b5b5f612fe584828501612faf565b91505092915050565b5f6020828403121561300357613002612aef565b5b5f61301084828501612da1565b91505092915050565b5f805f806080858703121561303157613030612aef565b5b5f61303e87828801612da1565b945050602061304f87828801612da1565b935050604061306087828801612da1565b925050606061307187828801612da1565b91505092959194509250565b5f80fd5b5f8083601f84011261309657613095612af7565b5b8235905067ffffffffffffffff8111156130b3576130b261307d565b5b6020830191508360208202830111156130cf576130ce612bae565b5b9250929050565b5f805f604084860312156130ed576130ec612aef565b5b5f84013567ffffffffffffffff81111561310a57613109612af3565b5b61311686828701613081565b9350935050602061312986828701612faf565b9150509250925092565b5f806040838503121561314957613148612aef565b5b5f61315685828601612bf8565b925050602061316785828601612bf8565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131a5602083612cf2565b91506131b082613171565b602082019050919050565b5f6020820190508181035f8301526131d281613199565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156132885780860481111561326457613263613206565b5b60018516156132735780820291505b808102905061328185613233565b9450613248565b94509492505050565b5f826132a0576001905061335b565b816132ad575f905061335b565b81600181146132c357600281146132cd576132fc565b600191505061335b565b60ff8411156132df576132de613206565b5b8360020a9150848211156132f6576132f5613206565b5b5061335b565b5060208310610133831016604e8410600b84101617156133315782820a90508381111561332c5761332b613206565b5b61335b565b61333e848484600161323f565b9250905081840481111561335557613354613206565b5b81810290505b9392505050565b5f61336c82612d82565b915061337783612f12565b92506133a47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613291565b905092915050565b5f6133b682612d82565b91506133c183612d82565b92508282026133cf81612d82565b915082820484148315176133e6576133e5613206565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613447602683612cf2565b9150613452826133ed565b604082019050919050565b5f6020820190508181035f8301526134748161343b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134d5602483612cf2565b91506134e08261347b565b604082019050919050565b5f6020820190508181035f830152613502816134c9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613563602283612cf2565b915061356e82613509565b604082019050919050565b5f6020820190508181035f83015261359081613557565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135f1602583612cf2565b91506135fc82613597565b604082019050919050565b5f6020820190508181035f83015261361e816135e5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61367f602383612cf2565b915061368a82613625565b604082019050919050565b5f6020820190508181035f8301526136ac81613673565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61370d602983612cf2565b9150613718826136b3565b604082019050919050565b5f6020820190508181035f83015261373a81613701565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61379b603f83612cf2565b91506137a682613741565b604082019050919050565b5f6020820190508181035f8301526137c88161378f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613803601c83612cf2565b915061380e826137cf565b602082019050919050565b5f6020820190508181035f830152613830816137f7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613891602383612cf2565b915061389c82613837565b604082019050919050565b5f6020820190508181035f8301526138be81613885565b9050919050565b5f6138cf82612d82565b91506138da83612d82565b92508282019050808211156138f2576138f1613206565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613952602383612cf2565b915061395d826138f8565b604082019050919050565b5f6020820190508181035f83015261397f81613946565b9050919050565b5f61399082612d82565b915061399b83612d82565b92508282039050818111156139b3576139b2613206565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a13602a83612cf2565b9150613a1e826139b9565b604082019050919050565b5f6020820190508181035f830152613a4081613a07565b9050919050565b5f81519050613a5581612be2565b92915050565b5f60208284031215613a7057613a6f612aef565b5b5f613a7d84828501613a47565b91505092915050565b5f819050919050565b5f613aa9613aa4613a9f84613a86565b612e26565b612d82565b9050919050565b613ab981613a8f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613af181612bd1565b82525050565b5f613b028383613ae8565b60208301905092915050565b5f602082019050919050565b5f613b2482613abf565b613b2e8185613ac9565b9350613b3983613ad9565b805f5b83811015613b69578151613b508882613af7565b9750613b5b83613b0e565b925050600181019050613b3c565b5085935050505092915050565b5f60a082019050613b895f830188612e9a565b613b966020830187613ab0565b8181036040830152613ba88186613b1a565b9050613bb76060830185612f46565b613bc46080830184612e9a565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c0582612d82565b9150613c1083612d82565b925082613c2057613c1f613bce565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c5f601b83612cf2565b9150613c6a82613c2b565b602082019050919050565b5f6020820190508181035f830152613c8c81613c53565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ced602183612cf2565b9150613cf882613c93565b604082019050919050565b5f6020820190508181035f830152613d1a81613ce1565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ac0ab005f7deecc6f00569c9734e47f2ed152f4b5bf3f661fa1f30c099ebe1a364736f6c63430008160033

Deployed Bytecode Sourcemap

4411:13554:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13138:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6767:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7692:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4710:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7044:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7893:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5133:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6953:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4758:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13315:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17347:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12657:196;;;;;;;;;;;;;:::i;:::-;;7147:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1898:148;;;;;;;;;;;;;:::i;:::-;;17487:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5011:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5245:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12861:269;;;;;;;;;;;;;:::i;:::-;;1684:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12343:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5071:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6858:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17156:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16813:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7293:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5201:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12452:197;;;;;;;;;;;;;:::i;:::-;;17726:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7500:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17603:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2054:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13138:169;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13214:9:::1;13209:91;13233:5;:12;13229:1;:16;13209:91;;;13284:4;13267;:14;13272:5;13278:1;13272:8;;;;;;;;:::i;:::-;;;;;;;;13267:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13247:3;;;;;;;13209:91;;;;13138:169:::0;:::o;6767:83::-;6804:13;6837:5;;;;;;;;;;;;;;;;;6830:12;;6767:83;:::o;7692:193::-;7794:4;7816:39;7825:12;:10;:12::i;:::-;7839:7;7848:6;7816:8;:39::i;:::-;7873:4;7866:11;;7692:193;;;;:::o;4710:41::-;;;;;;;;;;;;;:::o;7044:95::-;7097:7;4595:2;4989;:15;;;;:::i;:::-;4978:8;:26;;;;:::i;:::-;7117:14;;7044:95;:::o;7893:446::-;8025:4;8042:36;8052:6;8060:9;8071:6;8042:9;:36::i;:::-;8089:220;8112:6;8133:12;:10;:12::i;:::-;8160:138;8216:6;8160:138;;;;;;;;;;;;;;;;;:11;:19;8172:6;8160:19;;;;;;;;;;;;;;;:33;8180:12;:10;:12::i;:::-;8160:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8089:8;:220::i;:::-;8327:4;8320:11;;7893:446;;;;;:::o;5133:59::-;;;;:::o;6953:83::-;6994:5;4595:2;7012:16;;6953:83;:::o;4758:28::-;;;;;;;;;;;;;:::o;13315:92::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13394:5:::1;13379:4;:12;13384:6;13379:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13315:92:::0;:::o;17347:101::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17428:12:::1;17414:11;;:26;;;;;;;;;;;;;;;;;;17347:101:::0;:::o;12657:196::-;12723:17;;;;;;;;;;;12707:33;;:12;:10;:12::i;:::-;:33;;;12699:42;;;;;;12752:26;12781:21;12752:50;;12813:32;12826:18;12813:12;:32::i;:::-;12688:165;12657:196::o;7147:138::-;7213:7;7240:37;7260:7;:16;7268:7;7260:16;;;;;;;;;;;;;;;;7240:19;:37::i;:::-;7233:44;;7147:138;;;:::o;1898:148::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2005:1:::1;1968:40;;1989:6;::::0;::::1;;;;;;;;1968:40;;;;;;;;;;;;2036:1;2019:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1898:148::o:0;17487:108::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17576:11:::1;17561:12;:26;;;;17487:108:::0;:::o;5011:53::-;;;;:::o;5245:43::-;;;;;;;;;;;;;;;;;:::o;12861:269::-;12928:17;;;;;;;;;;;12912:33;;:12;:10;:12::i;:::-;:33;;;12904:42;;;;;;12974:1;12957:14;:18;;;;13004:1;12986:15;:19;;;;13031:1;13016:12;:16;;;;13059:1;13043:13;:17;;;;13091:1;13071:17;:21;;;;13121:1;13103:15;:19;;;;12861:269::o;1684:79::-;1722:7;1749:6;;;;;;;;;;;1742:13;;1684:79;:::o;12343:101::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12424:12:::1;12410:11;;:26;;;;;;;;;;;;;;;;;;12343:101:::0;:::o;5071:55::-;;;;:::o;6858:87::-;6897:13;6930:7;;;;;;;;;;;;;;;;;6923:14;;6858:87;:::o;17156:139::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17269:18:::1;17247:19;:40;;;;17156:139:::0;:::o;16813:291::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16964:13:::1;16947:14;:30;;;;17006:14;16988:15;:32;;;;17046:11;17031:12;:26;;;;17084:12;17068:13;:28;;;;16813:291:::0;;;;:::o;7293:199::-;7398:4;7420:42;7430:12;:10;:12::i;:::-;7444:9;7455:6;7420:9;:42::i;:::-;7480:4;7473:11;;7293:199;;;;:::o;5201:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12452:197::-;12518:17;;;;;;;;;;;12502:33;;:12;:10;:12::i;:::-;:33;;;12494:42;;;;;;12547:23;12573:24;12591:4;12573:9;:24::i;:::-;12547:50;;12608:33;12625:15;12608:16;:33::i;:::-;12483:166;12452:197::o;17726:234::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17843:9:::1;17839:114;17862:8;;:15;;17858:1;:19;17839:114;;;17933:8;17899:18;:31;17918:8;;17927:1;17918:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17899:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17879:3;;;;;;;17839:114;;;;17726:234:::0;;;:::o;7500:184::-;7617:7;7649:11;:18;7661:5;7649:18;;;;;;;;;;;;;;;:27;7668:7;7649:27;;;;;;;;;;;;;;;;7642:34;;7500:184;;;;:::o;17603:115::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17697:13:::1;17680:14;:30;;;;17603:115:::0;:::o;2054:244::-;1821:12;:10;:12::i;:::-;1811:22;;:6;;;;;;;;;;:22;;;1803:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2163:1:::1;2143:22;;:8;:22;;::::0;2135:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2253:8;2224:38;;2245:6;::::0;::::1;;;;;;;;2224:38;;;;;;;;;;;;2282:8;2273:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2054:244:::0;:::o;443:98::-;496:7;523:10;516:17;;443:98;:::o;9030:369::-;9174:1;9157:19;;:5;:19;;;9149:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9255:1;9236:21;;:7;:21;;;9228:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9337:6;9307:11;:18;9319:5;9307:18;;;;;;;;;;;;;;;:27;9326:7;9307:27;;;;;;;;;;;;;;;:36;;;;9375:7;9359:32;;9368:5;9359:32;;;9384:6;9359:32;;;;;;:::i;:::-;;;;;;;;9030:369;;;:::o;9407:2330::-;9545:1;9529:18;;:4;:18;;;9521:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9622:1;9608:16;;:2;:16;;;9600:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9692:1;9683:6;:10;9675:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9764:7;:5;:7::i;:::-;9756:15;;:4;:15;;;;:32;;;;;9781:7;:5;:7::i;:::-;9775:13;;:2;:13;;;;9756:32;9752:1259;;;9845:11;;;;;;;;;;;9840:144;;9893:7;:5;:7::i;:::-;9885:15;;:4;:15;;;9877:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9840:144;10018:12;;10008:6;:22;;10000:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10087:4;:10;10092:4;10087:10;;;;;;;;;;;;;;;;;;;;;;;;;10086:11;:24;;;;;10102:4;:8;10107:2;10102:8;;;;;;;;;;;;;;;;;;;;;;;;;10101:9;10086:24;10078:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10176:13;;;;;;;;;;;10170:19;;:2;:19;;;10167:146;;10243:14;;10234:6;10218:13;10228:2;10218:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10210:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10167:146;10329:28;10360:24;10378:4;10360:9;:24::i;:::-;10329:55;;10399:12;10438:19;;10414:20;:43;;10399:58;;10501:12;;10477:20;:36;10474:124;;10570:12;;10547:35;;10474:124;10618:7;:18;;;;;10630:6;;;;;;;;;;;10629:7;10618:18;:43;;;;;10648:13;;;;;;;;;;;10640:21;;:4;:21;;;;10618:43;:58;;;;;10665:11;;;;;;;;;;;10618:58;:87;;;;;10681:18;:24;10700:4;10681:24;;;;;;;;;;;;;;;;;;;;;;;;;10680:25;10618:87;:114;;;;;10710:18;:22;10729:2;10710:22;;;;;;;;;;;;;;;;;;;;;;;;;10709:23;10618:114;10614:386;;;10753:38;10770:20;10753:16;:38::i;:::-;10810:26;10839:21;10810:50;;10904:1;10883:18;:22;10879:106;;;10930:35;10943:21;10930:12;:35::i;:::-;10879:106;10734:266;10614:386;9790:1221;;9752:1259;11023:12;11038:4;11023:19;;11087:18;:24;11106:4;11087:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11115:18;:22;11134:2;11115:22;;;;;;;;;;;;;;;;;;;;;;;;;11087:50;11086:102;;;;11151:13;;;;;;;;;;;11143:21;;:4;:21;;;;:44;;;;;11174:13;;;;;;;;;;;11168:19;;:2;:19;;;;11143:44;11086:102;11082:594;;;11215:5;11205:15;;11082:594;;;11298:13;;;;;;;;;;;11290:21;;:4;:21;;;:55;;;;;11329:15;;;;;;;;;;;11315:30;;:2;:30;;;;11290:55;11287:162;;;11378:14;;11366:9;:26;;;;11421:12;;11411:7;:22;;;;11287:162;11508:13;;;;;;;;;;;11502:19;;:2;:19;;;:55;;;;;11541:15;;;;;;;;;;;11525:32;;:4;:32;;;;11502:55;11498:165;;;11590:15;;11578:9;:27;;;;11634:13;;11624:7;:23;;;;11498:165;11082:594;11688:41;11703:4;11709:2;11713:6;11721:7;11688:14;:41::i;:::-;9510:2227;9407:2330;;;:::o;2662:224::-;2782:7;2815:1;2810;:6;;2818:12;2802:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2842:9;2858:1;2854;:5;;;;:::i;:::-;2842:17;;2877:1;2870:8;;;2662:224;;;;;:::o;12236:99::-;12293:17;;;;;;;;;;;:26;;:34;12320:6;12293:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12236:99;:::o;8347:323::-;8442:7;8500;;8489;:18;;8467:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8588:19;8610:10;:8;:10::i;:::-;8588:32;;8638:24;8650:11;8638:7;:11;;:24;;;;:::i;:::-;8631:31;;;8347:323;;;:::o;11745:483::-;6127:4;6118:6;;:13;;;;;;;;;;;;;;;;;;11823:21:::1;11861:1;11847:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11823:40;;11892:4;11874;11879:1;11874:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11918:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11908:4;11913:1;11908:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11951:62;11968:4;11983:15;;;;;;;;;;;12001:11;11951:8;:62::i;:::-;12024:15;;;;;;;;;;;:66;;;12105:11;12131:1;12147:4;12174;12194:15;12024:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11812:416;6163:5:::0;6154:6;;:14;;;;;;;;;;;;;;;;;;11745:483;:::o;13415:282::-;13571:7;13566:28;;13580:14;:12;:14::i;:::-;13566:28;13605:44;13623:6;13631:9;13642:6;13605:17;:44::i;:::-;13665:7;13660:29;;13674:15;:13;:15::i;:::-;13660:29;13415:282;;;;:::o;16376:164::-;16418:7;16439:15;16456;16475:19;:17;:19::i;:::-;16438:56;;;;16512:20;16524:7;16512;:11;;:20;;;;:::i;:::-;16505:27;;;;16376:164;:::o;3148:132::-;3206:7;3233:39;3237:1;3240;3233:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3226:46;;3148:132;;;;:::o;8678:219::-;8738:1;8725:9;;:14;:30;;;;;8754:1;8743:7;;:12;8725:30;8757:7;8721:43;8796:9;;8776:17;:29;;;;8834:7;;8816:15;:25;;;;8866:1;8854:9;:13;;;;8888:1;8878:7;:11;;;;8678:219;:::o;13705:610::-;13852:15;13882:23;13920:12;13947:23;13985:12;14012:13;14039:19;14050:7;14039:10;:19::i;:::-;13837:221;;;;;;;;;;;;14087:28;14107:7;14087;:15;14095:6;14087:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14069:7;:15;14077:6;14069:15;;;;;;;;;;;;;;;:46;;;;14147:39;14170:15;14147:7;:18;14155:9;14147:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14126:7;:18;14134:9;14126:18;;;;;;;;;;;;;;;:60;;;;14197:16;14207:5;14197:9;:16::i;:::-;14224:23;14236:4;14242;14224:11;:23::i;:::-;14280:9;14263:44;;14272:6;14263:44;;;14291:15;14263:44;;;;;;:::i;:::-;;;;;;;;13826:489;;;;;;13705:610;;;:::o;8905:117::-;8961:17;;8949:9;:29;;;;8999:15;;8989:7;:25;;;;8905:117::o;16548:257::-;16599:7;16608;16628:15;16646:7;;16628:25;;16664:15;4595:2;4989;:15;;;;:::i;:::-;4978:8;:26;;;;:::i;:::-;16664:25;;16714:20;4595:2;4989;:15;;;;:::i;:::-;4978:8;:26;;;;:::i;:::-;16714:7;;:11;;:20;;;;:::i;:::-;16704:7;:30;16700:61;;;16744:7;;4595:2;4989;:15;;;;:::i;:::-;4978:8;:26;;;;:::i;:::-;16736:25;;;;;;;;16700:61;16780:7;16789;16772:25;;;;;;16548:257;;;:::o;3288:223::-;3408:7;3440:1;3436;:5;3443:12;3428:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3467:9;3483:1;3479;:5;;;;:::i;:::-;3467:17;;3502:1;3495:8;;;3288:223;;;;;:::o;14734:615::-;14834:7;14856;14878;14900;14922;14944;14980:23;15005:12;15019:13;15049:40;15061:7;15070:9;;15081:7;;15049:11;:40::i;:::-;14979:110;;;;;;15100:19;15122:10;:8;:10::i;:::-;15100:32;;15144:15;15161:23;15186:12;15215:46;15227:7;15236:4;15242:5;15249:11;15215;:46::i;:::-;15143:118;;;;;;15280:7;15289:15;15306:4;15312:15;15329:4;15335:5;15272:69;;;;;;;;;;;;;;;;;;;14734:615;;;;;;;:::o;2518:136::-;2576:7;2603:43;2607:1;2610;2603:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2596:50;;2518:136;;;;:::o;2331:179::-;2389:7;2409:9;2425:1;2421;:5;;;;:::i;:::-;2409:17;;2450:1;2445;:6;;2437:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2501:1;2494:8;;;2331:179;;;;:::o;14323:211::-;14376:19;14398:10;:8;:10::i;:::-;14376:32;;14419:13;14435:22;14445:11;14435:5;:9;;:22;;;;:::i;:::-;14419:38;;14493:33;14520:5;14493:7;:22;14509:4;14493:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14468:7;:22;14484:4;14468:22;;;;;;;;;;;;;;;:58;;;;14365:169;;14323:211;:::o;14542:147::-;14620:17;14632:4;14620:7;;:11;;:17;;;;:::i;:::-;14610:7;:27;;;;14661:20;14676:4;14661:10;;:14;;:20;;;;:::i;:::-;14648:10;:33;;;;14542:147;;:::o;15357:469::-;15526:7;15548;15570;15605:12;15620:30;15646:3;15620:21;15632:8;15620:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15605:45;;15661:13;15677:28;15701:3;15677:19;15689:6;15677:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15661:44;;15716:23;15742:28;15764:5;15742:17;15754:4;15742:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15716:54;;15789:15;15806:4;15812:5;15781:37;;;;;;;;;15357:469;;;;;;;:::o;15834:534::-;16028:7;16050;16072;16107:15;16125:24;16137:11;16125:7;:11;;:24;;;;:::i;:::-;16107:42;;16160:12;16175:21;16184:11;16175:4;:8;;:21;;;;:::i;:::-;16160:36;;16207:13;16223:22;16233:11;16223:5;:9;;:22;;;;:::i;:::-;16207:38;;16256:23;16282:28;16304:5;16282:17;16294:4;16282:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16256:54;;16329:7;16338:15;16355:4;16321:39;;;;;;;;;;15834:534;;;;;;;;:::o;2894:246::-;2952:7;2981:1;2976;:6;2972:47;;3006:1;2999:8;;;;2972:47;3029:9;3045:1;3041;:5;;;;:::i;:::-;3029:17;;3074:1;3069;3065;:5;;;;:::i;:::-;:10;3057:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3131:1;3124:8;;;2894:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:246::-;4152:1;4162:113;4176:6;4173:1;4170:13;4162:113;;;4261:1;4256:3;4252:11;4246:18;4242:1;4237:3;4233:11;4226:39;4198:2;4195:1;4191:10;4186:15;;4162:113;;;4309:1;4300:6;4295:3;4291:16;4284:27;4133:184;4071:246;;;:::o;4323:377::-;4411:3;4439:39;4472:5;4439:39;:::i;:::-;4494:71;4558:6;4553:3;4494:71;:::i;:::-;4487:78;;4574:65;4632:6;4627:3;4620:4;4613:5;4609:16;4574:65;:::i;:::-;4664:29;4686:6;4664:29;:::i;:::-;4659:3;4655:39;4648:46;;4415:285;4323:377;;;;:::o;4706:313::-;4819:4;4857:2;4846:9;4842:18;4834:26;;4906:9;4900:4;4896:20;4892:1;4881:9;4877:17;4870:47;4934:78;5007:4;4998:6;4934:78;:::i;:::-;4926:86;;4706:313;;;;:::o;5025:77::-;5062:7;5091:5;5080:16;;5025:77;;;:::o;5108:122::-;5181:24;5199:5;5181:24;:::i;:::-;5174:5;5171:35;5161:63;;5220:1;5217;5210:12;5161:63;5108:122;:::o;5236:139::-;5282:5;5320:6;5307:20;5298:29;;5336:33;5363:5;5336:33;:::i;:::-;5236:139;;;;:::o;5381:474::-;5449:6;5457;5506:2;5494:9;5485:7;5481:23;5477:32;5474:119;;;5512:79;;:::i;:::-;5474:119;5632:1;5657:53;5702:7;5693:6;5682:9;5678:22;5657:53;:::i;:::-;5647:63;;5603:117;5759:2;5785:53;5830:7;5821:6;5810:9;5806:22;5785:53;:::i;:::-;5775:63;;5730:118;5381:474;;;;;:::o;5861:90::-;5895:7;5938:5;5931:13;5924:21;5913:32;;5861:90;;;:::o;5957:109::-;6038:21;6053:5;6038:21;:::i;:::-;6033:3;6026:34;5957:109;;:::o;6072:210::-;6159:4;6197:2;6186:9;6182:18;6174:26;;6210:65;6272:1;6261:9;6257:17;6248:6;6210:65;:::i;:::-;6072:210;;;;:::o;6288:60::-;6316:3;6337:5;6330:12;;6288:60;;;:::o;6354:142::-;6404:9;6437:53;6455:34;6464:24;6482:5;6464:24;:::i;:::-;6455:34;:::i;:::-;6437:53;:::i;:::-;6424:66;;6354:142;;;:::o;6502:126::-;6552:9;6585:37;6616:5;6585:37;:::i;:::-;6572:50;;6502:126;;;:::o;6634:152::-;6710:9;6743:37;6774:5;6743:37;:::i;:::-;6730:50;;6634:152;;;:::o;6792:183::-;6905:63;6962:5;6905:63;:::i;:::-;6900:3;6893:76;6792:183;;:::o;6981:274::-;7100:4;7138:2;7127:9;7123:18;7115:26;;7151:97;7245:1;7234:9;7230:17;7221:6;7151:97;:::i;:::-;6981:274;;;;:::o;7261:118::-;7348:24;7366:5;7348:24;:::i;:::-;7343:3;7336:37;7261:118;;:::o;7385:222::-;7478:4;7516:2;7505:9;7501:18;7493:26;;7529:71;7597:1;7586:9;7582:17;7573:6;7529:71;:::i;:::-;7385:222;;;;:::o;7613:619::-;7690:6;7698;7706;7755:2;7743:9;7734:7;7730:23;7726:32;7723:119;;;7761:79;;:::i;:::-;7723:119;7881:1;7906:53;7951:7;7942:6;7931:9;7927:22;7906:53;:::i;:::-;7896:63;;7852:117;8008:2;8034:53;8079:7;8070:6;8059:9;8055:22;8034:53;:::i;:::-;8024:63;;7979:118;8136:2;8162:53;8207:7;8198:6;8187:9;8183:22;8162:53;:::i;:::-;8152:63;;8107:118;7613:619;;;;;:::o;8238:86::-;8273:7;8313:4;8306:5;8302:16;8291:27;;8238:86;;;:::o;8330:112::-;8413:22;8429:5;8413:22;:::i;:::-;8408:3;8401:35;8330:112;;:::o;8448:214::-;8537:4;8575:2;8564:9;8560:18;8552:26;;8588:67;8652:1;8641:9;8637:17;8628:6;8588:67;:::i;:::-;8448:214;;;;:::o;8668:118::-;8755:24;8773:5;8755:24;:::i;:::-;8750:3;8743:37;8668:118;;:::o;8792:222::-;8885:4;8923:2;8912:9;8908:18;8900:26;;8936:71;9004:1;8993:9;8989:17;8980:6;8936:71;:::i;:::-;8792:222;;;;:::o;9020:329::-;9079:6;9128:2;9116:9;9107:7;9103:23;9099:32;9096:119;;;9134:79;;:::i;:::-;9096:119;9254:1;9279:53;9324:7;9315:6;9304:9;9300:22;9279:53;:::i;:::-;9269:63;;9225:117;9020:329;;;;:::o;9355:116::-;9425:21;9440:5;9425:21;:::i;:::-;9418:5;9415:32;9405:60;;9461:1;9458;9451:12;9405:60;9355:116;:::o;9477:133::-;9520:5;9558:6;9545:20;9536:29;;9574:30;9598:5;9574:30;:::i;:::-;9477:133;;;;:::o;9616:323::-;9672:6;9721:2;9709:9;9700:7;9696:23;9692:32;9689:119;;;9727:79;;:::i;:::-;9689:119;9847:1;9872:50;9914:7;9905:6;9894:9;9890:22;9872:50;:::i;:::-;9862:60;;9818:114;9616:323;;;;:::o;9945:329::-;10004:6;10053:2;10041:9;10032:7;10028:23;10024:32;10021:119;;;10059:79;;:::i;:::-;10021:119;10179:1;10204:53;10249:7;10240:6;10229:9;10225:22;10204:53;:::i;:::-;10194:63;;10150:117;9945:329;;;;:::o;10280:765::-;10366:6;10374;10382;10390;10439:3;10427:9;10418:7;10414:23;10410:33;10407:120;;;10446:79;;:::i;:::-;10407:120;10566:1;10591:53;10636:7;10627:6;10616:9;10612:22;10591:53;:::i;:::-;10581:63;;10537:117;10693:2;10719:53;10764:7;10755:6;10744:9;10740:22;10719:53;:::i;:::-;10709:63;;10664:118;10821:2;10847:53;10892:7;10883:6;10872:9;10868:22;10847:53;:::i;:::-;10837:63;;10792:118;10949:2;10975:53;11020:7;11011:6;11000:9;10996:22;10975:53;:::i;:::-;10965:63;;10920:118;10280:765;;;;;;;:::o;11051:117::-;11160:1;11157;11150:12;11191:568;11264:8;11274:6;11324:3;11317:4;11309:6;11305:17;11301:27;11291:122;;11332:79;;:::i;:::-;11291:122;11445:6;11432:20;11422:30;;11475:18;11467:6;11464:30;11461:117;;;11497:79;;:::i;:::-;11461:117;11611:4;11603:6;11599:17;11587:29;;11665:3;11657:4;11649:6;11645:17;11635:8;11631:32;11628:41;11625:128;;;11672:79;;:::i;:::-;11625:128;11191:568;;;;;:::o;11765:698::-;11857:6;11865;11873;11922:2;11910:9;11901:7;11897:23;11893:32;11890:119;;;11928:79;;:::i;:::-;11890:119;12076:1;12065:9;12061:17;12048:31;12106:18;12098:6;12095:30;12092:117;;;12128:79;;:::i;:::-;12092:117;12241:80;12313:7;12304:6;12293:9;12289:22;12241:80;:::i;:::-;12223:98;;;;12019:312;12370:2;12396:50;12438:7;12429:6;12418:9;12414:22;12396:50;:::i;:::-;12386:60;;12341:115;11765:698;;;;;:::o;12469:474::-;12537:6;12545;12594:2;12582:9;12573:7;12569:23;12565:32;12562:119;;;12600:79;;:::i;:::-;12562:119;12720:1;12745:53;12790:7;12781:6;12770:9;12766:22;12745:53;:::i;:::-;12735:63;;12691:117;12847:2;12873:53;12918:7;12909:6;12898:9;12894:22;12873:53;:::i;:::-;12863:63;;12818:118;12469:474;;;;;:::o;12949:182::-;13089:34;13085:1;13077:6;13073:14;13066:58;12949:182;:::o;13137:366::-;13279:3;13300:67;13364:2;13359:3;13300:67;:::i;:::-;13293:74;;13376:93;13465:3;13376:93;:::i;:::-;13494:2;13489:3;13485:12;13478:19;;13137:366;;;:::o;13509:419::-;13675:4;13713:2;13702:9;13698:18;13690:26;;13762:9;13756:4;13752:20;13748:1;13737:9;13733:17;13726:47;13790:131;13916:4;13790:131;:::i;:::-;13782:139;;13509:419;;;:::o;13934:180::-;13982:77;13979:1;13972:88;14079:4;14076:1;14069:15;14103:4;14100:1;14093:15;14120:180;14168:77;14165:1;14158:88;14265:4;14262:1;14255:15;14289:4;14286:1;14279:15;14306:102;14348:8;14395:5;14392:1;14388:13;14367:34;;14306:102;;;:::o;14414:848::-;14475:5;14482:4;14506:6;14497:15;;14530:5;14521:14;;14544:712;14565:1;14555:8;14552:15;14544:712;;;14660:4;14655:3;14651:14;14645:4;14642:24;14639:50;;;14669:18;;:::i;:::-;14639:50;14719:1;14709:8;14705:16;14702:451;;;15134:4;15127:5;15123:16;15114:25;;14702:451;15184:4;15178;15174:15;15166:23;;15214:32;15237:8;15214:32;:::i;:::-;15202:44;;14544:712;;;14414:848;;;;;;;:::o;15268:1073::-;15322:5;15513:8;15503:40;;15534:1;15525:10;;15536:5;;15503:40;15562:4;15552:36;;15579:1;15570:10;;15581:5;;15552:36;15648:4;15696:1;15691:27;;;;15732:1;15727:191;;;;15641:277;;15691:27;15709:1;15700:10;;15711:5;;;15727:191;15772:3;15762:8;15759:17;15756:43;;;15779:18;;:::i;:::-;15756:43;15828:8;15825:1;15821:16;15812:25;;15863:3;15856:5;15853:14;15850:40;;;15870:18;;:::i;:::-;15850:40;15903:5;;;15641:277;;16027:2;16017:8;16014:16;16008:3;16002:4;15999:13;15995:36;15977:2;15967:8;15964:16;15959:2;15953:4;15950:12;15946:35;15930:111;15927:246;;;16083:8;16077:4;16073:19;16064:28;;16118:3;16111:5;16108:14;16105:40;;;16125:18;;:::i;:::-;16105:40;16158:5;;15927:246;16198:42;16236:3;16226:8;16220:4;16217:1;16198:42;:::i;:::-;16183:57;;;;16272:4;16267:3;16263:14;16256:5;16253:25;16250:51;;;16281:18;;:::i;:::-;16250:51;16330:4;16323:5;16319:16;16310:25;;15268:1073;;;;;;:::o;16347:281::-;16405:5;16429:23;16447:4;16429:23;:::i;:::-;16421:31;;16473:25;16489:8;16473:25;:::i;:::-;16461:37;;16517:104;16554:66;16544:8;16538:4;16517:104;:::i;:::-;16508:113;;16347:281;;;;:::o;16634:410::-;16674:7;16697:20;16715:1;16697:20;:::i;:::-;16692:25;;16731:20;16749:1;16731:20;:::i;:::-;16726:25;;16786:1;16783;16779:9;16808:30;16826:11;16808:30;:::i;:::-;16797:41;;16987:1;16978:7;16974:15;16971:1;16968:22;16948:1;16941:9;16921:83;16898:139;;17017:18;;:::i;:::-;16898:139;16682:362;16634:410;;;;:::o;17050:225::-;17190:34;17186:1;17178:6;17174:14;17167:58;17259:8;17254:2;17246:6;17242:15;17235:33;17050:225;:::o;17281:366::-;17423:3;17444:67;17508:2;17503:3;17444:67;:::i;:::-;17437:74;;17520:93;17609:3;17520:93;:::i;:::-;17638:2;17633:3;17629:12;17622:19;;17281:366;;;:::o;17653:419::-;17819:4;17857:2;17846:9;17842:18;17834:26;;17906:9;17900:4;17896:20;17892:1;17881:9;17877:17;17870:47;17934:131;18060:4;17934:131;:::i;:::-;17926:139;;17653:419;;;:::o;18078:223::-;18218:34;18214:1;18206:6;18202:14;18195:58;18287:6;18282:2;18274:6;18270:15;18263:31;18078:223;:::o;18307:366::-;18449:3;18470:67;18534:2;18529:3;18470:67;:::i;:::-;18463:74;;18546:93;18635:3;18546:93;:::i;:::-;18664:2;18659:3;18655:12;18648:19;;18307:366;;;:::o;18679:419::-;18845:4;18883:2;18872:9;18868:18;18860:26;;18932:9;18926:4;18922:20;18918:1;18907:9;18903:17;18896:47;18960:131;19086:4;18960:131;:::i;:::-;18952:139;;18679:419;;;:::o;19104:221::-;19244:34;19240:1;19232:6;19228:14;19221:58;19313:4;19308:2;19300:6;19296:15;19289:29;19104:221;:::o;19331:366::-;19473:3;19494:67;19558:2;19553:3;19494:67;:::i;:::-;19487:74;;19570:93;19659:3;19570:93;:::i;:::-;19688:2;19683:3;19679:12;19672:19;;19331:366;;;:::o;19703:419::-;19869:4;19907:2;19896:9;19892:18;19884:26;;19956:9;19950:4;19946:20;19942:1;19931:9;19927:17;19920:47;19984:131;20110:4;19984:131;:::i;:::-;19976:139;;19703:419;;;:::o;20128:224::-;20268:34;20264:1;20256:6;20252:14;20245:58;20337:7;20332:2;20324:6;20320:15;20313:32;20128:224;:::o;20358:366::-;20500:3;20521:67;20585:2;20580:3;20521:67;:::i;:::-;20514:74;;20597:93;20686:3;20597:93;:::i;:::-;20715:2;20710:3;20706:12;20699:19;;20358:366;;;:::o;20730:419::-;20896:4;20934:2;20923:9;20919:18;20911:26;;20983:9;20977:4;20973:20;20969:1;20958:9;20954:17;20947:47;21011:131;21137:4;21011:131;:::i;:::-;21003:139;;20730:419;;;:::o;21155:222::-;21295:34;21291:1;21283:6;21279:14;21272:58;21364:5;21359:2;21351:6;21347:15;21340:30;21155:222;:::o;21383:366::-;21525:3;21546:67;21610:2;21605:3;21546:67;:::i;:::-;21539:74;;21622:93;21711:3;21622:93;:::i;:::-;21740:2;21735:3;21731:12;21724:19;;21383:366;;;:::o;21755:419::-;21921:4;21959:2;21948:9;21944:18;21936:26;;22008:9;22002:4;21998:20;21994:1;21983:9;21979:17;21972:47;22036:131;22162:4;22036:131;:::i;:::-;22028:139;;21755:419;;;:::o;22180:228::-;22320:34;22316:1;22308:6;22304:14;22297:58;22389:11;22384:2;22376:6;22372:15;22365:36;22180:228;:::o;22414:366::-;22556:3;22577:67;22641:2;22636:3;22577:67;:::i;:::-;22570:74;;22653:93;22742:3;22653:93;:::i;:::-;22771:2;22766:3;22762:12;22755:19;;22414:366;;;:::o;22786:419::-;22952:4;22990:2;22979:9;22975:18;22967:26;;23039:9;23033:4;23029:20;23025:1;23014:9;23010:17;23003:47;23067:131;23193:4;23067:131;:::i;:::-;23059:139;;22786:419;;;:::o;23211:250::-;23351:34;23347:1;23339:6;23335:14;23328:58;23420:33;23415:2;23407:6;23403:15;23396:58;23211:250;:::o;23467:366::-;23609:3;23630:67;23694:2;23689:3;23630:67;:::i;:::-;23623:74;;23706:93;23795:3;23706:93;:::i;:::-;23824:2;23819:3;23815:12;23808:19;;23467:366;;;:::o;23839:419::-;24005:4;24043:2;24032:9;24028:18;24020:26;;24092:9;24086:4;24082:20;24078:1;24067:9;24063:17;24056:47;24120:131;24246:4;24120:131;:::i;:::-;24112:139;;23839:419;;;:::o;24264:178::-;24404:30;24400:1;24392:6;24388:14;24381:54;24264:178;:::o;24448:366::-;24590:3;24611:67;24675:2;24670:3;24611:67;:::i;:::-;24604:74;;24687:93;24776:3;24687:93;:::i;:::-;24805:2;24800:3;24796:12;24789:19;;24448:366;;;:::o;24820:419::-;24986:4;25024:2;25013:9;25009:18;25001:26;;25073:9;25067:4;25063:20;25059:1;25048:9;25044:17;25037:47;25101:131;25227:4;25101:131;:::i;:::-;25093:139;;24820:419;;;:::o;25245:222::-;25385:34;25381:1;25373:6;25369:14;25362:58;25454:5;25449:2;25441:6;25437:15;25430:30;25245:222;:::o;25473:366::-;25615:3;25636:67;25700:2;25695:3;25636:67;:::i;:::-;25629:74;;25712:93;25801:3;25712:93;:::i;:::-;25830:2;25825:3;25821:12;25814:19;;25473:366;;;:::o;25845:419::-;26011:4;26049:2;26038:9;26034:18;26026:26;;26098:9;26092:4;26088:20;26084:1;26073:9;26069:17;26062:47;26126:131;26252:4;26126:131;:::i;:::-;26118:139;;25845:419;;;:::o;26270:191::-;26310:3;26329:20;26347:1;26329:20;:::i;:::-;26324:25;;26363:20;26381:1;26363:20;:::i;:::-;26358:25;;26406:1;26403;26399:9;26392:16;;26427:3;26424:1;26421:10;26418:36;;;26434:18;;:::i;:::-;26418:36;26270:191;;;;:::o;26467:222::-;26607:34;26603:1;26595:6;26591:14;26584:58;26676:5;26671:2;26663:6;26659:15;26652:30;26467:222;:::o;26695:366::-;26837:3;26858:67;26922:2;26917:3;26858:67;:::i;:::-;26851:74;;26934:93;27023:3;26934:93;:::i;:::-;27052:2;27047:3;27043:12;27036:19;;26695:366;;;:::o;27067:419::-;27233:4;27271:2;27260:9;27256:18;27248:26;;27320:9;27314:4;27310:20;27306:1;27295:9;27291:17;27284:47;27348:131;27474:4;27348:131;:::i;:::-;27340:139;;27067:419;;;:::o;27492:194::-;27532:4;27552:20;27570:1;27552:20;:::i;:::-;27547:25;;27586:20;27604:1;27586:20;:::i;:::-;27581:25;;27630:1;27627;27623:9;27615:17;;27654:1;27648:4;27645:11;27642:37;;;27659:18;;:::i;:::-;27642:37;27492:194;;;;:::o;27692:229::-;27832:34;27828:1;27820:6;27816:14;27809:58;27901:12;27896:2;27888:6;27884:15;27877:37;27692:229;:::o;27927:366::-;28069:3;28090:67;28154:2;28149:3;28090:67;:::i;:::-;28083:74;;28166:93;28255:3;28166:93;:::i;:::-;28284:2;28279:3;28275:12;28268:19;;27927:366;;;:::o;28299:419::-;28465:4;28503:2;28492:9;28488:18;28480:26;;28552:9;28546:4;28542:20;28538:1;28527:9;28523:17;28516:47;28580:131;28706:4;28580:131;:::i;:::-;28572:139;;28299:419;;;:::o;28724:143::-;28781:5;28812:6;28806:13;28797:22;;28828:33;28855:5;28828:33;:::i;:::-;28724:143;;;;:::o;28873:351::-;28943:6;28992:2;28980:9;28971:7;28967:23;28963:32;28960:119;;;28998:79;;:::i;:::-;28960:119;29118:1;29143:64;29199:7;29190:6;29179:9;29175:22;29143:64;:::i;:::-;29133:74;;29089:128;28873:351;;;;:::o;29230:85::-;29275:7;29304:5;29293:16;;29230:85;;;:::o;29321:158::-;29379:9;29412:61;29430:42;29439:32;29465:5;29439:32;:::i;:::-;29430:42;:::i;:::-;29412:61;:::i;:::-;29399:74;;29321:158;;;:::o;29485:147::-;29580:45;29619:5;29580:45;:::i;:::-;29575:3;29568:58;29485:147;;:::o;29638:114::-;29705:6;29739:5;29733:12;29723:22;;29638:114;;;:::o;29758:184::-;29857:11;29891:6;29886:3;29879:19;29931:4;29926:3;29922:14;29907:29;;29758:184;;;;:::o;29948:132::-;30015:4;30038:3;30030:11;;30068:4;30063:3;30059:14;30051:22;;29948:132;;;:::o;30086:108::-;30163:24;30181:5;30163:24;:::i;:::-;30158:3;30151:37;30086:108;;:::o;30200:179::-;30269:10;30290:46;30332:3;30324:6;30290:46;:::i;:::-;30368:4;30363:3;30359:14;30345:28;;30200:179;;;;:::o;30385:113::-;30455:4;30487;30482:3;30478:14;30470:22;;30385:113;;;:::o;30534:732::-;30653:3;30682:54;30730:5;30682:54;:::i;:::-;30752:86;30831:6;30826:3;30752:86;:::i;:::-;30745:93;;30862:56;30912:5;30862:56;:::i;:::-;30941:7;30972:1;30957:284;30982:6;30979:1;30976:13;30957:284;;;31058:6;31052:13;31085:63;31144:3;31129:13;31085:63;:::i;:::-;31078:70;;31171:60;31224:6;31171:60;:::i;:::-;31161:70;;31017:224;31004:1;31001;30997:9;30992:14;;30957:284;;;30961:14;31257:3;31250:10;;30658:608;;;30534:732;;;;:::o;31272:831::-;31535:4;31573:3;31562:9;31558:19;31550:27;;31587:71;31655:1;31644:9;31640:17;31631:6;31587:71;:::i;:::-;31668:80;31744:2;31733:9;31729:18;31720:6;31668:80;:::i;:::-;31795:9;31789:4;31785:20;31780:2;31769:9;31765:18;31758:48;31823:108;31926:4;31917:6;31823:108;:::i;:::-;31815:116;;31941:72;32009:2;31998:9;31994:18;31985:6;31941:72;:::i;:::-;32023:73;32091:3;32080:9;32076:19;32067:6;32023:73;:::i;:::-;31272:831;;;;;;;;:::o;32109:180::-;32157:77;32154:1;32147:88;32254:4;32251:1;32244:15;32278:4;32275:1;32268:15;32295:185;32335:1;32352:20;32370:1;32352:20;:::i;:::-;32347:25;;32386:20;32404:1;32386:20;:::i;:::-;32381:25;;32425:1;32415:35;;32430:18;;:::i;:::-;32415:35;32472:1;32469;32465:9;32460:14;;32295:185;;;;:::o;32486:177::-;32626:29;32622:1;32614:6;32610:14;32603:53;32486:177;:::o;32669:366::-;32811:3;32832:67;32896:2;32891:3;32832:67;:::i;:::-;32825:74;;32908:93;32997:3;32908:93;:::i;:::-;33026:2;33021:3;33017:12;33010:19;;32669:366;;;:::o;33041:419::-;33207:4;33245:2;33234:9;33230:18;33222:26;;33294:9;33288:4;33284:20;33280:1;33269:9;33265:17;33258:47;33322:131;33448:4;33322:131;:::i;:::-;33314:139;;33041:419;;;:::o;33466:220::-;33606:34;33602:1;33594:6;33590:14;33583:58;33675:3;33670:2;33662:6;33658:15;33651:28;33466:220;:::o;33692:366::-;33834:3;33855:67;33919:2;33914:3;33855:67;:::i;:::-;33848:74;;33931:93;34020:3;33931:93;:::i;:::-;34049:2;34044:3;34040:12;34033:19;;33692:366;;;:::o;34064:419::-;34230:4;34268:2;34257:9;34253:18;34245:26;;34317:9;34311:4;34307:20;34303:1;34292:9;34288:17;34281:47;34345:131;34471:4;34345:131;:::i;:::-;34337:139;;34064:419;;;:::o

Swarm Source

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