ETH Price: $2,454.74 (-1.01%)

Token

HAM (HAM)
 

Overview

Max Total Supply

100,000,000 HAM

Holders

101

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 HAM

Value
$0.00
0xbE201DcB26FD0B97D2216ed064Dc8097D05aFF48
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:
Ham

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: Unlicensed

pragma solidity ^0.8.9; 

// $HAM


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

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

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

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

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

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

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

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

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

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

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

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

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

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

}

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

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

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

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

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

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

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract Ham is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "HAM";
    string private constant _symbol = "HAM";
    uint8 private constant _decimals = 9;

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

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

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

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

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 2000000 * 10**9;
    uint256 public _maxWalletSize = 2000000 * 10**9;
    uint256 public _swapTokensAtAmount = 289000 * 10**9;
bool public initialized;
    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
    modifier initializer() {
        require(!initialized, "uniswapV2Pair is already initialized");
        _;

    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;

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

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

    function name() public pure returns (string memory) {
        return _name;
    }
    function changeUniSwapPairAddress(address newPair) public initializer onlyOwner
    {
        uniswapV2Pair = newPair;
        initialized=true;
    }

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

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

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

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

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

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

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

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

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

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

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

}

Contract Security Audit

Contract ABI

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

608060405267016345785d8a00005f196100199190610551565b5f1961002591906105ae565b6006555f60085560146009555f600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f557303a07c754c17cf61375c5e58e3ecd2eadfe8342060125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507303a07c754c17cf61375c5e58e3ecd2eadfe8342060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555066071afd498d000060165566071afd498d0000601755660106d80e571000601855348015610175575f80fd5b505f6101856104ed60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f6102356104ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6102dd6104f460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061047b6104ed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a00006040516104df91906105f0565b60405180910390a350610609565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61055b8261051b565b91506105668361051b565b92508261057657610575610524565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6105b88261051b565b91506105c38361051b565b92508282039050818111156105db576105da610581565b5b92915050565b6105ea8161051b565b82525050565b5f6020820190506106035f8301846105e1565b92915050565b613df4806106165f395ff3fe6080604052600436106101e5575f3560e01c806374010ece11610101578063a2a957bb11610094578063c492f04611610063578063c492f046146106a8578063dd62ed3e146106d0578063ea1644d51461070c578063f2fde38b14610734576101ec565b8063a2a957bb146105f2578063a9059cbb1461061a578063bfd7928414610656578063c3c8cd8014610692576101ec565b80638f70ccf7116100d05780638f70ccf71461054e5780638f9a55c01461057657806395d89b41146105a057806398a5c315146105ca576101ec565b806374010ece146104965780637d1db4a5146104be5780637f2feddc146104e85780638da5cb5b14610524576101ec565b80632fd689e3116101795780636d8aa8f8116101485780636d8aa8f8146104065780636fc3eaec1461042e57806370a0823114610444578063715018a614610480576101ec565b80632fd689e314610360578063313ce5671461038a57806349bd5a5e146103b45780636b999053146103de576101ec565b8063158ef93e116101b5578063158ef93e146102a65780631694505e146102d057806318160ddd146102fa57806323b872dd14610324576101ec565b8062b8cf2a146101f057806306fdde03146102185780630807e2e914610242578063095ea7b31461026a576101ec565b366101ec57005b5f80fd5b3480156101fb575f80fd5b5061021660048036038101906102119190612e1b565b61075c565b005b348015610223575f80fd5b5061022c61087b565b6040516102399190612ec2565b60405180910390f35b34801561024d575f80fd5b5061026860048036038101906102639190612ee2565b6108b8565b005b348015610275575f80fd5b50610290600480360381019061028b9190612f40565b6109f8565b60405161029d9190612f98565b60405180910390f35b3480156102b1575f80fd5b506102ba610a15565b6040516102c79190612f98565b60405180910390f35b3480156102db575f80fd5b506102e4610a27565b6040516102f1919061300c565b60405180910390f35b348015610305575f80fd5b5061030e610a4c565b60405161031b9190613034565b60405180910390f35b34801561032f575f80fd5b5061034a6004803603810190610345919061304d565b610a5b565b6040516103579190612f98565b60405180910390f35b34801561036b575f80fd5b50610374610b2f565b6040516103819190613034565b60405180910390f35b348015610395575f80fd5b5061039e610b35565b6040516103ab91906130b8565b60405180910390f35b3480156103bf575f80fd5b506103c8610b3d565b6040516103d591906130e0565b60405180910390f35b3480156103e9575f80fd5b5061040460048036038101906103ff9190612ee2565b610b62565b005b348015610411575f80fd5b5061042c60048036038101906104279190613123565b610c4d565b005b348015610439575f80fd5b50610442610cfe565b005b34801561044f575f80fd5b5061046a60048036038101906104659190612ee2565b610dcb565b6040516104779190613034565b60405180910390f35b34801561048b575f80fd5b50610494610e19565b005b3480156104a1575f80fd5b506104bc60048036038101906104b7919061314e565b610f67565b005b3480156104c9575f80fd5b506104d2611005565b6040516104df9190613034565b60405180910390f35b3480156104f3575f80fd5b5061050e60048036038101906105099190612ee2565b61100b565b60405161051b9190613034565b60405180910390f35b34801561052f575f80fd5b50610538611020565b60405161054591906130e0565b60405180910390f35b348015610559575f80fd5b50610574600480360381019061056f9190613123565b611047565b005b348015610581575f80fd5b5061058a6110f8565b6040516105979190613034565b60405180910390f35b3480156105ab575f80fd5b506105b46110fe565b6040516105c19190612ec2565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb919061314e565b61113b565b005b3480156105fd575f80fd5b5061061860048036038101906106139190613179565b6111d9565b005b348015610625575f80fd5b50610640600480360381019061063b9190612f40565b61128f565b60405161064d9190612f98565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190612ee2565b6112ac565b6040516106899190612f98565b60405180910390f35b34801561069d575f80fd5b506106a66112c9565b005b3480156106b3575f80fd5b506106ce60048036038101906106c99190613236565b61139e565b005b3480156106db575f80fd5b506106f660048036038101906106f19190613293565b6114cd565b6040516107039190613034565b60405180910390f35b348015610717575f80fd5b50610732600480360381019061072d919061314e565b61154f565b005b34801561073f575f80fd5b5061075a60048036038101906107559190612ee2565b6115ed565b005b6107646117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e79061331b565b60405180910390fd5b5f5b815181101561087757600160105f84848151811061081357610812613339565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107f2565b5050565b60606040518060400160405280600381526020017f48414d0000000000000000000000000000000000000000000000000000000000815250905090565b60195f9054906101000a900460ff1615610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe906133d6565b60405180910390fd5b61090f6117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461099b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109929061331b565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160195f6101000a81548160ff02191690831515021790555050565b5f610a0b610a046117aa565b84846117b1565b6001905092915050565b60195f9054906101000a900460ff1681565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f610a67848484611974565b610b2484610a736117aa565b610b1f85604051806060016040528060288152602001613d976028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ad66117aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d49092919063ffffffff16565b6117b1565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b6a6117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed9061331b565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610c556117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd89061331b565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d3e6117aa565b73ffffffffffffffffffffffffffffffffffffffff161480610db3575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d9b6117aa565b73ffffffffffffffffffffffffffffffffffffffff16145b610dbb575f80fd5b5f479050610dc881612236565b50565b5f610e1260025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461229e565b9050919050565b610e216117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea49061331b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f6f6117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff29061331b565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61104f6117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d29061331b565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f48414d0000000000000000000000000000000000000000000000000000000000815250905090565b6111436117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c69061331b565b60405180910390fd5b8060188190555050565b6111e16117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112649061331b565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6112a261129b6117aa565b8484611974565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113096117aa565b73ffffffffffffffffffffffffffffffffffffffff16148061137e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113666117aa565b73ffffffffffffffffffffffffffffffffffffffff16145b611386575f80fd5b5f61139030610dcb565b905061139b8161230a565b50565b6113a66117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114299061331b565b60405180910390fd5b5f5b838390508110156114c7578160055f86868581811061145657611455613339565b5b905060200201602081019061146b9190612ee2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611434565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6115576117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da9061331b565b60405180910390fd5b8060178190555050565b6115f56117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116789061331b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690613464565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611816906134f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188490613580565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119679190613034565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d99061360e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a479061369c565b60405180910390fd5b5f8111611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a899061372a565b60405180910390fd5b611a9a611020565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b085750611ad8611020565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ee157601560149054906101000a900460ff16611b9757611b29611020565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d906137b8565b60405180910390fd5b5b601654811115611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613820565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c7a575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb0906138ae565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d655760175481611d1a84610dcb565b611d2491906138f9565b10611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b9061399c565b60405180910390fd5b5b5f611d6f30610dcb565b90505f60185482101590506016548210611d895760165491505b808015611da1575060158054906101000a900460ff16155b8015611dfa575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e125750601560169054906101000a900460ff165b8015611e65575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611eb8575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ede57611ec68261230a565b5f4790505f811115611edc57611edb47612236565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f81575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612032575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612031575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561203f575f90506121c2565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120e8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561210057600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121a9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121c157600a54600c81905550600b54600d819055505b5b6121ce84848484612573565b50505050565b5f83831115829061221b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122129190612ec2565b60405180910390fd5b505f838561222991906139ba565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561229a573d5f803e3d5ffd5b5050565b5f6006548211156122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db90613a5d565b60405180910390fd5b5f6122ed6125a0565b905061230281846125c990919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123405761233f612c85565b5b60405190808252806020026020018201604052801561236e5781602001602082028036833780820191505090505b50905030815f8151811061238557612384613339565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612429573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244d9190613a8f565b8160018151811061246157612460613339565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c73060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117b1565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612529959493929190613baa565b5f604051808303815f87803b158015612540575f80fd5b505af1158015612552573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061258157612580612612565b5b61258c84848461264b565b8061259a5761259961280b565b5b50505050565b5f805f6125ab61281f565b915091506125c281836125c990919063ffffffff16565b9250505090565b5f61260a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061287b565b905092915050565b5f600c5414801561262457505f600d54145b61264957600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061265a876128dc565b9550955095509550955095506126b68660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461293c90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127478560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461298590919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612791816129e2565b61279b8483612a99565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127f89190613034565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061285067016345785d8a00006006546125c990919063ffffffff16565b82101561286e5760065467016345785d8a0000935093505050612877565b81819350935050505b9091565b5f80831182906128c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b89190612ec2565b60405180910390fd5b505f83856128cf9190613c2f565b9050809150509392505050565b5f805f805f805f805f6128f48a600c54600d54612ad3565b9250925092505f6129036125a0565b90505f805f6129148e878787612b65565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61297d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121d4565b905092915050565b5f80828461299391906138f9565b9050838110156129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90613ca9565b60405180910390fd5b8091505092915050565b5f6129eb6125a0565b90505f612a018284612be990919063ffffffff16565b9050612a538160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461298590919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612aae8260065461293c90919063ffffffff16565b600681905550612ac98160075461298590919063ffffffff16565b6007819055505050565b5f805f80612afd6064612aef888a612be990919063ffffffff16565b6125c990919063ffffffff16565b90505f612b266064612b18888b612be990919063ffffffff16565b6125c990919063ffffffff16565b90505f612b4e82612b40858c61293c90919063ffffffff16565b61293c90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b7c8589612be990919063ffffffff16565b90505f612b928689612be990919063ffffffff16565b90505f612ba88789612be990919063ffffffff16565b90505f612bd082612bc2858761293c90919063ffffffff16565b61293c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612bf9575f9050612c5a565b5f8284612c069190613cc7565b9050828482612c159190613c2f565b14612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c90613d78565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cbb82612c75565b810181811067ffffffffffffffff82111715612cda57612cd9612c85565b5b80604052505050565b5f612cec612c60565b9050612cf88282612cb2565b919050565b5f67ffffffffffffffff821115612d1757612d16612c85565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d5582612d2c565b9050919050565b612d6581612d4b565b8114612d6f575f80fd5b50565b5f81359050612d8081612d5c565b92915050565b5f612d98612d9384612cfd565b612ce3565b90508083825260208201905060208402830185811115612dbb57612dba612d28565b5b835b81811015612de45780612dd08882612d72565b845260208401935050602081019050612dbd565b5050509392505050565b5f82601f830112612e0257612e01612c71565b5b8135612e12848260208601612d86565b91505092915050565b5f60208284031215612e3057612e2f612c69565b5b5f82013567ffffffffffffffff811115612e4d57612e4c612c6d565b5b612e5984828501612dee565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612e9482612e62565b612e9e8185612e6c565b9350612eae818560208601612e7c565b612eb781612c75565b840191505092915050565b5f6020820190508181035f830152612eda8184612e8a565b905092915050565b5f60208284031215612ef757612ef6612c69565b5b5f612f0484828501612d72565b91505092915050565b5f819050919050565b612f1f81612f0d565b8114612f29575f80fd5b50565b5f81359050612f3a81612f16565b92915050565b5f8060408385031215612f5657612f55612c69565b5b5f612f6385828601612d72565b9250506020612f7485828601612f2c565b9150509250929050565b5f8115159050919050565b612f9281612f7e565b82525050565b5f602082019050612fab5f830184612f89565b92915050565b5f819050919050565b5f612fd4612fcf612fca84612d2c565b612fb1565b612d2c565b9050919050565b5f612fe582612fba565b9050919050565b5f612ff682612fdb565b9050919050565b61300681612fec565b82525050565b5f60208201905061301f5f830184612ffd565b92915050565b61302e81612f0d565b82525050565b5f6020820190506130475f830184613025565b92915050565b5f805f6060848603121561306457613063612c69565b5b5f61307186828701612d72565b935050602061308286828701612d72565b925050604061309386828701612f2c565b9150509250925092565b5f60ff82169050919050565b6130b28161309d565b82525050565b5f6020820190506130cb5f8301846130a9565b92915050565b6130da81612d4b565b82525050565b5f6020820190506130f35f8301846130d1565b92915050565b61310281612f7e565b811461310c575f80fd5b50565b5f8135905061311d816130f9565b92915050565b5f6020828403121561313857613137612c69565b5b5f6131458482850161310f565b91505092915050565b5f6020828403121561316357613162612c69565b5b5f61317084828501612f2c565b91505092915050565b5f805f806080858703121561319157613190612c69565b5b5f61319e87828801612f2c565b94505060206131af87828801612f2c565b93505060406131c087828801612f2c565b92505060606131d187828801612f2c565b91505092959194509250565b5f80fd5b5f8083601f8401126131f6576131f5612c71565b5b8235905067ffffffffffffffff811115613213576132126131dd565b5b60208301915083602082028301111561322f5761322e612d28565b5b9250929050565b5f805f6040848603121561324d5761324c612c69565b5b5f84013567ffffffffffffffff81111561326a57613269612c6d565b5b613276868287016131e1565b935093505060206132898682870161310f565b9150509250925092565b5f80604083850312156132a9576132a8612c69565b5b5f6132b685828601612d72565b92505060206132c785828601612d72565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613305602083612e6c565b9150613310826132d1565b602082019050919050565b5f6020820190508181035f830152613332816132f9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f756e697377617056325061697220697320616c726561647920696e697469616c5f8201527f697a656400000000000000000000000000000000000000000000000000000000602082015250565b5f6133c0602483612e6c565b91506133cb82613366565b604082019050919050565b5f6020820190508181035f8301526133ed816133b4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61344e602683612e6c565b9150613459826133f4565b604082019050919050565b5f6020820190508181035f83015261347b81613442565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134dc602483612e6c565b91506134e782613482565b604082019050919050565b5f6020820190508181035f830152613509816134d0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61356a602283612e6c565b915061357582613510565b604082019050919050565b5f6020820190508181035f8301526135978161355e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135f8602583612e6c565b91506136038261359e565b604082019050919050565b5f6020820190508181035f830152613625816135ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613686602383612e6c565b91506136918261362c565b604082019050919050565b5f6020820190508181035f8301526136b38161367a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613714602983612e6c565b915061371f826136ba565b604082019050919050565b5f6020820190508181035f83015261374181613708565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6137a2603f83612e6c565b91506137ad82613748565b604082019050919050565b5f6020820190508181035f8301526137cf81613796565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61380a601c83612e6c565b9150613815826137d6565b602082019050919050565b5f6020820190508181035f830152613837816137fe565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613898602383612e6c565b91506138a38261383e565b604082019050919050565b5f6020820190508181035f8301526138c58161388c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61390382612f0d565b915061390e83612f0d565b9250828201905080821115613926576139256138cc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613986602383612e6c565b91506139918261392c565b604082019050919050565b5f6020820190508181035f8301526139b38161397a565b9050919050565b5f6139c482612f0d565b91506139cf83612f0d565b92508282039050818111156139e7576139e66138cc565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a47602a83612e6c565b9150613a52826139ed565b604082019050919050565b5f6020820190508181035f830152613a7481613a3b565b9050919050565b5f81519050613a8981612d5c565b92915050565b5f60208284031215613aa457613aa3612c69565b5b5f613ab184828501613a7b565b91505092915050565b5f819050919050565b5f613add613ad8613ad384613aba565b612fb1565b612f0d565b9050919050565b613aed81613ac3565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b2581612d4b565b82525050565b5f613b368383613b1c565b60208301905092915050565b5f602082019050919050565b5f613b5882613af3565b613b628185613afd565b9350613b6d83613b0d565b805f5b83811015613b9d578151613b848882613b2b565b9750613b8f83613b42565b925050600181019050613b70565b5085935050505092915050565b5f60a082019050613bbd5f830188613025565b613bca6020830187613ae4565b8181036040830152613bdc8186613b4e565b9050613beb60608301856130d1565b613bf86080830184613025565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c3982612f0d565b9150613c4483612f0d565b925082613c5457613c53613c02565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c93601b83612e6c565b9150613c9e82613c5f565b602082019050919050565b5f6020820190508181035f830152613cc081613c87565b9050919050565b5f613cd182612f0d565b9150613cdc83612f0d565b9250828202613cea81612f0d565b91508282048414831517613d0157613d006138cc565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d62602183612e6c565b9150613d6d82613d08565b604082019050919050565b5f6020820190508181035f830152613d8f81613d56565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a1f25402622357e90eedf4b6ef6088447507c69e8c12c65552d8418c5c2a90d064736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101e5575f3560e01c806374010ece11610101578063a2a957bb11610094578063c492f04611610063578063c492f046146106a8578063dd62ed3e146106d0578063ea1644d51461070c578063f2fde38b14610734576101ec565b8063a2a957bb146105f2578063a9059cbb1461061a578063bfd7928414610656578063c3c8cd8014610692576101ec565b80638f70ccf7116100d05780638f70ccf71461054e5780638f9a55c01461057657806395d89b41146105a057806398a5c315146105ca576101ec565b806374010ece146104965780637d1db4a5146104be5780637f2feddc146104e85780638da5cb5b14610524576101ec565b80632fd689e3116101795780636d8aa8f8116101485780636d8aa8f8146104065780636fc3eaec1461042e57806370a0823114610444578063715018a614610480576101ec565b80632fd689e314610360578063313ce5671461038a57806349bd5a5e146103b45780636b999053146103de576101ec565b8063158ef93e116101b5578063158ef93e146102a65780631694505e146102d057806318160ddd146102fa57806323b872dd14610324576101ec565b8062b8cf2a146101f057806306fdde03146102185780630807e2e914610242578063095ea7b31461026a576101ec565b366101ec57005b5f80fd5b3480156101fb575f80fd5b5061021660048036038101906102119190612e1b565b61075c565b005b348015610223575f80fd5b5061022c61087b565b6040516102399190612ec2565b60405180910390f35b34801561024d575f80fd5b5061026860048036038101906102639190612ee2565b6108b8565b005b348015610275575f80fd5b50610290600480360381019061028b9190612f40565b6109f8565b60405161029d9190612f98565b60405180910390f35b3480156102b1575f80fd5b506102ba610a15565b6040516102c79190612f98565b60405180910390f35b3480156102db575f80fd5b506102e4610a27565b6040516102f1919061300c565b60405180910390f35b348015610305575f80fd5b5061030e610a4c565b60405161031b9190613034565b60405180910390f35b34801561032f575f80fd5b5061034a6004803603810190610345919061304d565b610a5b565b6040516103579190612f98565b60405180910390f35b34801561036b575f80fd5b50610374610b2f565b6040516103819190613034565b60405180910390f35b348015610395575f80fd5b5061039e610b35565b6040516103ab91906130b8565b60405180910390f35b3480156103bf575f80fd5b506103c8610b3d565b6040516103d591906130e0565b60405180910390f35b3480156103e9575f80fd5b5061040460048036038101906103ff9190612ee2565b610b62565b005b348015610411575f80fd5b5061042c60048036038101906104279190613123565b610c4d565b005b348015610439575f80fd5b50610442610cfe565b005b34801561044f575f80fd5b5061046a60048036038101906104659190612ee2565b610dcb565b6040516104779190613034565b60405180910390f35b34801561048b575f80fd5b50610494610e19565b005b3480156104a1575f80fd5b506104bc60048036038101906104b7919061314e565b610f67565b005b3480156104c9575f80fd5b506104d2611005565b6040516104df9190613034565b60405180910390f35b3480156104f3575f80fd5b5061050e60048036038101906105099190612ee2565b61100b565b60405161051b9190613034565b60405180910390f35b34801561052f575f80fd5b50610538611020565b60405161054591906130e0565b60405180910390f35b348015610559575f80fd5b50610574600480360381019061056f9190613123565b611047565b005b348015610581575f80fd5b5061058a6110f8565b6040516105979190613034565b60405180910390f35b3480156105ab575f80fd5b506105b46110fe565b6040516105c19190612ec2565b60405180910390f35b3480156105d5575f80fd5b506105f060048036038101906105eb919061314e565b61113b565b005b3480156105fd575f80fd5b5061061860048036038101906106139190613179565b6111d9565b005b348015610625575f80fd5b50610640600480360381019061063b9190612f40565b61128f565b60405161064d9190612f98565b60405180910390f35b348015610661575f80fd5b5061067c60048036038101906106779190612ee2565b6112ac565b6040516106899190612f98565b60405180910390f35b34801561069d575f80fd5b506106a66112c9565b005b3480156106b3575f80fd5b506106ce60048036038101906106c99190613236565b61139e565b005b3480156106db575f80fd5b506106f660048036038101906106f19190613293565b6114cd565b6040516107039190613034565b60405180910390f35b348015610717575f80fd5b50610732600480360381019061072d919061314e565b61154f565b005b34801561073f575f80fd5b5061075a60048036038101906107559190612ee2565b6115ed565b005b6107646117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e79061331b565b60405180910390fd5b5f5b815181101561087757600160105f84848151811061081357610812613339565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107f2565b5050565b60606040518060400160405280600381526020017f48414d0000000000000000000000000000000000000000000000000000000000815250905090565b60195f9054906101000a900460ff1615610907576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108fe906133d6565b60405180910390fd5b61090f6117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461099b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109929061331b565b60405180910390fd5b8060155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160195f6101000a81548160ff02191690831515021790555050565b5f610a0b610a046117aa565b84846117b1565b6001905092915050565b60195f9054906101000a900460ff1681565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f67016345785d8a0000905090565b5f610a67848484611974565b610b2484610a736117aa565b610b1f85604051806060016040528060288152602001613d976028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610ad66117aa565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d49092919063ffffffff16565b6117b1565b600190509392505050565b60185481565b5f6009905090565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610b6a6117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bed9061331b565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610c556117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd89061331b565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d3e6117aa565b73ffffffffffffffffffffffffffffffffffffffff161480610db3575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d9b6117aa565b73ffffffffffffffffffffffffffffffffffffffff16145b610dbb575f80fd5b5f479050610dc881612236565b50565b5f610e1260025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461229e565b9050919050565b610e216117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ead576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea49061331b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f6f6117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ff29061331b565b60405180910390fd5b8060168190555050565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61104f6117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d29061331b565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600381526020017f48414d0000000000000000000000000000000000000000000000000000000000815250905090565b6111436117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c69061331b565b60405180910390fd5b8060188190555050565b6111e16117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461126d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112649061331b565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6112a261129b6117aa565b8484611974565b6001905092915050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113096117aa565b73ffffffffffffffffffffffffffffffffffffffff16148061137e575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166113666117aa565b73ffffffffffffffffffffffffffffffffffffffff16145b611386575f80fd5b5f61139030610dcb565b905061139b8161230a565b50565b6113a66117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611432576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114299061331b565b60405180910390fd5b5f5b838390508110156114c7578160055f86868581811061145657611455613339565b5b905060200201602081019061146b9190612ee2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050611434565b50505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6115576117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da9061331b565b60405180910390fd5b8060178190555050565b6115f56117aa565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611681576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116789061331b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036116ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e690613464565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361181f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611816906134f2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361188d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188490613580565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119679190613034565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036119e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d99061360e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a479061369c565b60405180910390fd5b5f8111611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a899061372a565b60405180910390fd5b611a9a611020565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611b085750611ad8611020565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ee157601560149054906101000a900460ff16611b9757611b29611020565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8d906137b8565b60405180910390fd5b5b601654811115611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613820565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c7a575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb0906138ae565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d655760175481611d1a84610dcb565b611d2491906138f9565b10611d64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5b9061399c565b60405180910390fd5b5b5f611d6f30610dcb565b90505f60185482101590506016548210611d895760165491505b808015611da1575060158054906101000a900460ff16155b8015611dfa575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611e125750601560169054906101000a900460ff165b8015611e65575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611eb8575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ede57611ec68261230a565b5f4790505f811115611edc57611edb47612236565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611f81575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612032575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015612031575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b1561203f575f90506121c2565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120e8575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561210057600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121a9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156121c157600a54600c81905550600b54600d819055505b5b6121ce84848484612573565b50505050565b5f83831115829061221b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122129190612ec2565b60405180910390fd5b505f838561222991906139ba565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561229a573d5f803e3d5ffd5b5050565b5f6006548211156122e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122db90613a5d565b60405180910390fd5b5f6122ed6125a0565b905061230281846125c990919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156123405761233f612c85565b5b60405190808252806020026020018201604052801561236e5781602001602082028036833780820191505090505b50905030815f8151811061238557612384613339565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612429573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061244d9190613a8f565b8160018151811061246157612460613339565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c73060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117b1565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612529959493929190613baa565b5f604051808303815f87803b158015612540575f80fd5b505af1158015612552573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b8061258157612580612612565b5b61258c84848461264b565b8061259a5761259961280b565b5b50505050565b5f805f6125ab61281f565b915091506125c281836125c990919063ffffffff16565b9250505090565b5f61260a83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061287b565b905092915050565b5f600c5414801561262457505f600d54145b61264957600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f8061265a876128dc565b9550955095509550955095506126b68660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461293c90919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506127478560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461298590919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612791816129e2565b61279b8483612a99565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127f89190613034565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b5f805f60065490505f67016345785d8a0000905061285067016345785d8a00006006546125c990919063ffffffff16565b82101561286e5760065467016345785d8a0000935093505050612877565b81819350935050505b9091565b5f80831182906128c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b89190612ec2565b60405180910390fd5b505f83856128cf9190613c2f565b9050809150509392505050565b5f805f805f805f805f6128f48a600c54600d54612ad3565b9250925092505f6129036125a0565b90505f805f6129148e878787612b65565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f61297d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506121d4565b905092915050565b5f80828461299391906138f9565b9050838110156129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf90613ca9565b60405180910390fd5b8091505092915050565b5f6129eb6125a0565b90505f612a018284612be990919063ffffffff16565b9050612a538160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461298590919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b612aae8260065461293c90919063ffffffff16565b600681905550612ac98160075461298590919063ffffffff16565b6007819055505050565b5f805f80612afd6064612aef888a612be990919063ffffffff16565b6125c990919063ffffffff16565b90505f612b266064612b18888b612be990919063ffffffff16565b6125c990919063ffffffff16565b90505f612b4e82612b40858c61293c90919063ffffffff16565b61293c90919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f80612b7c8589612be990919063ffffffff16565b90505f612b928689612be990919063ffffffff16565b90505f612ba88789612be990919063ffffffff16565b90505f612bd082612bc2858761293c90919063ffffffff16565b61293c90919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612bf9575f9050612c5a565b5f8284612c069190613cc7565b9050828482612c159190613c2f565b14612c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c4c90613d78565b60405180910390fd5b809150505b92915050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612cbb82612c75565b810181811067ffffffffffffffff82111715612cda57612cd9612c85565b5b80604052505050565b5f612cec612c60565b9050612cf88282612cb2565b919050565b5f67ffffffffffffffff821115612d1757612d16612c85565b5b602082029050602081019050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d5582612d2c565b9050919050565b612d6581612d4b565b8114612d6f575f80fd5b50565b5f81359050612d8081612d5c565b92915050565b5f612d98612d9384612cfd565b612ce3565b90508083825260208201905060208402830185811115612dbb57612dba612d28565b5b835b81811015612de45780612dd08882612d72565b845260208401935050602081019050612dbd565b5050509392505050565b5f82601f830112612e0257612e01612c71565b5b8135612e12848260208601612d86565b91505092915050565b5f60208284031215612e3057612e2f612c69565b5b5f82013567ffffffffffffffff811115612e4d57612e4c612c6d565b5b612e5984828501612dee565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612e9482612e62565b612e9e8185612e6c565b9350612eae818560208601612e7c565b612eb781612c75565b840191505092915050565b5f6020820190508181035f830152612eda8184612e8a565b905092915050565b5f60208284031215612ef757612ef6612c69565b5b5f612f0484828501612d72565b91505092915050565b5f819050919050565b612f1f81612f0d565b8114612f29575f80fd5b50565b5f81359050612f3a81612f16565b92915050565b5f8060408385031215612f5657612f55612c69565b5b5f612f6385828601612d72565b9250506020612f7485828601612f2c565b9150509250929050565b5f8115159050919050565b612f9281612f7e565b82525050565b5f602082019050612fab5f830184612f89565b92915050565b5f819050919050565b5f612fd4612fcf612fca84612d2c565b612fb1565b612d2c565b9050919050565b5f612fe582612fba565b9050919050565b5f612ff682612fdb565b9050919050565b61300681612fec565b82525050565b5f60208201905061301f5f830184612ffd565b92915050565b61302e81612f0d565b82525050565b5f6020820190506130475f830184613025565b92915050565b5f805f6060848603121561306457613063612c69565b5b5f61307186828701612d72565b935050602061308286828701612d72565b925050604061309386828701612f2c565b9150509250925092565b5f60ff82169050919050565b6130b28161309d565b82525050565b5f6020820190506130cb5f8301846130a9565b92915050565b6130da81612d4b565b82525050565b5f6020820190506130f35f8301846130d1565b92915050565b61310281612f7e565b811461310c575f80fd5b50565b5f8135905061311d816130f9565b92915050565b5f6020828403121561313857613137612c69565b5b5f6131458482850161310f565b91505092915050565b5f6020828403121561316357613162612c69565b5b5f61317084828501612f2c565b91505092915050565b5f805f806080858703121561319157613190612c69565b5b5f61319e87828801612f2c565b94505060206131af87828801612f2c565b93505060406131c087828801612f2c565b92505060606131d187828801612f2c565b91505092959194509250565b5f80fd5b5f8083601f8401126131f6576131f5612c71565b5b8235905067ffffffffffffffff811115613213576132126131dd565b5b60208301915083602082028301111561322f5761322e612d28565b5b9250929050565b5f805f6040848603121561324d5761324c612c69565b5b5f84013567ffffffffffffffff81111561326a57613269612c6d565b5b613276868287016131e1565b935093505060206132898682870161310f565b9150509250925092565b5f80604083850312156132a9576132a8612c69565b5b5f6132b685828601612d72565b92505060206132c785828601612d72565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613305602083612e6c565b9150613310826132d1565b602082019050919050565b5f6020820190508181035f830152613332816132f9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f756e697377617056325061697220697320616c726561647920696e697469616c5f8201527f697a656400000000000000000000000000000000000000000000000000000000602082015250565b5f6133c0602483612e6c565b91506133cb82613366565b604082019050919050565b5f6020820190508181035f8301526133ed816133b4565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61344e602683612e6c565b9150613459826133f4565b604082019050919050565b5f6020820190508181035f83015261347b81613442565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6134dc602483612e6c565b91506134e782613482565b604082019050919050565b5f6020820190508181035f830152613509816134d0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61356a602283612e6c565b915061357582613510565b604082019050919050565b5f6020820190508181035f8301526135978161355e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6135f8602583612e6c565b91506136038261359e565b604082019050919050565b5f6020820190508181035f830152613625816135ec565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613686602383612e6c565b91506136918261362c565b604082019050919050565b5f6020820190508181035f8301526136b38161367a565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613714602983612e6c565b915061371f826136ba565b604082019050919050565b5f6020820190508181035f83015261374181613708565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f6137a2603f83612e6c565b91506137ad82613748565b604082019050919050565b5f6020820190508181035f8301526137cf81613796565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f61380a601c83612e6c565b9150613815826137d6565b602082019050919050565b5f6020820190508181035f830152613837816137fe565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613898602383612e6c565b91506138a38261383e565b604082019050919050565b5f6020820190508181035f8301526138c58161388c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61390382612f0d565b915061390e83612f0d565b9250828201905080821115613926576139256138cc565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f613986602383612e6c565b91506139918261392c565b604082019050919050565b5f6020820190508181035f8301526139b38161397a565b9050919050565b5f6139c482612f0d565b91506139cf83612f0d565b92508282039050818111156139e7576139e66138cc565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f613a47602a83612e6c565b9150613a52826139ed565b604082019050919050565b5f6020820190508181035f830152613a7481613a3b565b9050919050565b5f81519050613a8981612d5c565b92915050565b5f60208284031215613aa457613aa3612c69565b5b5f613ab184828501613a7b565b91505092915050565b5f819050919050565b5f613add613ad8613ad384613aba565b612fb1565b612f0d565b9050919050565b613aed81613ac3565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613b2581612d4b565b82525050565b5f613b368383613b1c565b60208301905092915050565b5f602082019050919050565b5f613b5882613af3565b613b628185613afd565b9350613b6d83613b0d565b805f5b83811015613b9d578151613b848882613b2b565b9750613b8f83613b42565b925050600181019050613b70565b5085935050505092915050565b5f60a082019050613bbd5f830188613025565b613bca6020830187613ae4565b8181036040830152613bdc8186613b4e565b9050613beb60608301856130d1565b613bf86080830184613025565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c3982612f0d565b9150613c4483612f0d565b925082613c5457613c53613c02565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613c93601b83612e6c565b9150613c9e82613c5f565b602082019050919050565b5f6020820190508181035f830152613cc081613c87565b9050919050565b5f613cd182612f0d565b9150613cdc83612f0d565b9250828202613cea81612f0d565b91508282048414831517613d0157613d006138cc565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d62602183612e6c565b9150613d6d82613d08565b604082019050919050565b5f6020820190508181035f830152613d8f81613d56565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a1f25402622357e90eedf4b6ef6088447507c69e8c12c65552d8418c5c2a90d064736f6c63430008190033

Deployed Bytecode Sourcemap

4084:13656:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12913:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6581:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6670:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7666:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5772:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5415:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7018:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7867:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5718:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6927:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5463:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13090:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17122:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12670:235;;;;;;;;;;;;;:::i;:::-;;7121:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1571:148;;;;;;;;;;;;;:::i;:::-;;17262:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5612:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5157:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1357:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12317:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5664:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6832:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16931:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16588:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7267:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5119:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12426:236;;;;;;;;;;;;;:::i;:::-;;17501:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7474:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17378:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1727:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12913:169;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12989:9:::1;12984:91;13008:5;:12;13004:1;:16;12984:91;;;13059:4;13042;:14;13047:5;13053:1;13047:8;;;;;;;;:::i;:::-;;;;;;;;13042:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13022:3;;;;;;;12984:91;;;;12913:169:::0;:::o;6581:83::-;6618:13;6651:5;;;;;;;;;;;;;;;;;6644:12;;6581:83;:::o;6670:154::-;5994:11;;;;;;;;;;;5993:12;5985:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;1494:12:::1;:10;:12::i;:::-;1484:22;;:6;::::0;::::1;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6782:7:::2;6766:13;;:23;;;;;;;;;;;;;;;;;;6812:4;6800:11;;:16;;;;;;;;;;;;;;;;;;6670:154:::0;:::o;7666:193::-;7768:4;7790:39;7799:12;:10;:12::i;:::-;7813:7;7822:6;7790:8;:39::i;:::-;7847:4;7840:11;;7666:193;;;;:::o;5772:23::-;;;;;;;;;;;;;:::o;5415:41::-;;;;;;;;;;;;;:::o;7018:95::-;7071:7;4620:17;7091:14;;7018:95;:::o;7867:446::-;7999:4;8016:36;8026:6;8034:9;8045:6;8016:9;:36::i;:::-;8063:220;8086:6;8107:12;:10;:12::i;:::-;8134:138;8190:6;8134:138;;;;;;;;;;;;;;;;;:11;:19;8146:6;8134:19;;;;;;;;;;;;;;;:33;8154:12;:10;:12::i;:::-;8134:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8063:8;:220::i;:::-;8301:4;8294:11;;7867:446;;;;;:::o;5718:51::-;;;;:::o;6927:83::-;6968:5;4294:1;6986:16;;6927:83;:::o;5463:28::-;;;;;;;;;;;;;:::o;13090:92::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13169:5:::1;13154:4;:12;13159:6;13154:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13090:92:::0;:::o;17122:101::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17203:12:::1;17189:11;;:26;;;;;;;;;;;;;;;;;;17122:101:::0;:::o;12670:235::-;12736:19;;;;;;;;;;;12720:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12775:17;;;;;;;;;;;12759:33;;:12;:10;:12::i;:::-;:33;;;12720:72;12712:81;;;;;;12804:26;12833:21;12804:50;;12865:32;12878:18;12865:12;:32::i;:::-;12701:204;12670:235::o;7121:138::-;7187:7;7214:37;7234:7;:16;7242:7;7234:16;;;;;;;;;;;;;;;;7214:19;:37::i;:::-;7207:44;;7121:138;;;:::o;1571:148::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1678:1:::1;1641:40;;1662:6;::::0;::::1;;;;;;;;1641:40;;;;;;;;;;;;1709:1;1692:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1571:148::o:0;17262:108::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17351:11:::1;17336:12;:26;;;;17262:108:::0;:::o;5612:45::-;;;;:::o;5157:43::-;;;;;;;;;;;;;;;;;:::o;1357:79::-;1395:7;1422:6;;;;;;;;;;;1415:13;;1357:79;:::o;12317:101::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12398:12:::1;12384:11;;:26;;;;;;;;;;;;;;;;;;12317:101:::0;:::o;5664:47::-;;;;:::o;6832:87::-;6871:13;6904:7;;;;;;;;;;;;;;;;;6897:14;;6832:87;:::o;16931:139::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17044:18:::1;17022:19;:40;;;;16931:139:::0;:::o;16588:291::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16739:13:::1;16722:14;:30;;;;16781:14;16763:15;:32;;;;16821:11;16806:12;:26;;;;16859:12;16843:13;:28;;;;16588:291:::0;;;;:::o;7267:199::-;7372:4;7394:42;7404:12;:10;:12::i;:::-;7418:9;7429:6;7394:9;:42::i;:::-;7454:4;7447:11;;7267:199;;;;:::o;5119:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12426:236::-;12492:19;;;;;;;;;;;12476:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12531:17;;;;;;;;;;;12515:33;;:12;:10;:12::i;:::-;:33;;;12476:72;12468:81;;;;;;12560:23;12586:24;12604:4;12586:9;:24::i;:::-;12560:50;;12621:33;12638:15;12621:16;:33::i;:::-;12457:205;12426:236::o;17501:234::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17618:9:::1;17614:114;17637:8;;:15;;17633:1;:19;17614:114;;;17708:8;17674:18;:31;17693:8;;17702:1;17693:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17674:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17654:3;;;;;;;17614:114;;;;17501:234:::0;;;:::o;7474:184::-;7591:7;7623:11;:18;7635:5;7623:18;;;;;;;;;;;;;;;:27;7642:7;7623:27;;;;;;;;;;;;;;;;7616:34;;7474:184;;;;:::o;17378:115::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17472:13:::1;17455:14;:30;;;;17378:115:::0;:::o;1727:244::-;1494:12;:10;:12::i;:::-;1484:22;;:6;;;;;;;;;;:22;;;1476:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1836:1:::1;1816:22;;:8;:22;;::::0;1808:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1926:8;1897:38;;1918:6;::::0;::::1;;;;;;;;1897:38;;;;;;;;;;;;1955:8;1946:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1727:244:::0;:::o;116:98::-;169:7;196:10;189:17;;116:98;:::o;9004:369::-;9148:1;9131:19;;:5;:19;;;9123:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:1;9210:21;;:7;:21;;;9202:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9311:6;9281:11;:18;9293:5;9281:18;;;;;;;;;;;;;;;:27;9300:7;9281:27;;;;;;;;;;;;;;;:36;;;;9349:7;9333:32;;9342:5;9333:32;;;9358:6;9333:32;;;;;;:::i;:::-;;;;;;;;9004:369;;;:::o;9381:2330::-;9519:1;9503:18;;:4;:18;;;9495:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9596:1;9582:16;;:2;:16;;;9574:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9666:1;9657:6;:10;9649:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9738:7;:5;:7::i;:::-;9730:15;;:4;:15;;;;:32;;;;;9755:7;:5;:7::i;:::-;9749:13;;:2;:13;;;;9730:32;9726:1259;;;9819:11;;;;;;;;;;;9814:144;;9867:7;:5;:7::i;:::-;9859:15;;:4;:15;;;9851:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9814:144;9992:12;;9982:6;:22;;9974:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10061:4;:10;10066:4;10061:10;;;;;;;;;;;;;;;;;;;;;;;;;10060:11;:24;;;;;10076:4;:8;10081:2;10076:8;;;;;;;;;;;;;;;;;;;;;;;;;10075:9;10060:24;10052:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10150:13;;;;;;;;;;;10144:19;;:2;:19;;;10141:146;;10217:14;;10208:6;10192:13;10202:2;10192:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10184:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10141:146;10303:28;10334:24;10352:4;10334:9;:24::i;:::-;10303:55;;10373:12;10412:19;;10388:20;:43;;10373:58;;10475:12;;10451:20;:36;10448:124;;10544:12;;10521:35;;10448:124;10592:7;:18;;;;;10604:6;;;;;;;;;;10603:7;10592:18;:43;;;;;10622:13;;;;;;;;;;;10614:21;;:4;:21;;;;10592:43;:58;;;;;10639:11;;;;;;;;;;;10592:58;:87;;;;;10655:18;:24;10674:4;10655:24;;;;;;;;;;;;;;;;;;;;;;;;;10654:25;10592:87;:114;;;;;10684:18;:22;10703:2;10684:22;;;;;;;;;;;;;;;;;;;;;;;;;10683:23;10592:114;10588:386;;;10727:38;10744:20;10727:16;:38::i;:::-;10784:26;10813:21;10784:50;;10878:1;10857:18;:22;10853:106;;;10904:35;10917:21;10904:12;:35::i;:::-;10853:106;10708:266;10588:386;9764:1221;;9726:1259;10997:12;11012:4;10997:19;;11061:18;:24;11080:4;11061:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11089:18;:22;11108:2;11089:22;;;;;;;;;;;;;;;;;;;;;;;;;11061:50;11060:102;;;;11125:13;;;;;;;;;;;11117:21;;:4;:21;;;;:44;;;;;11148:13;;;;;;;;;;;11142:19;;:2;:19;;;;11117:44;11060:102;11056:594;;;11189:5;11179:15;;11056:594;;;11272:13;;;;;;;;;;;11264:21;;:4;:21;;;:55;;;;;11303:15;;;;;;;;;;;11289:30;;:2;:30;;;;11264:55;11261:162;;;11352:14;;11340:9;:26;;;;11395:12;;11385:7;:22;;;;11261:162;11482:13;;;;;;;;;;;11476:19;;:2;:19;;;:55;;;;;11515:15;;;;;;;;;;;11499:32;;:4;:32;;;;11476:55;11472:165;;;11564:15;;11552:9;:27;;;;11608:13;;11598:7;:23;;;;11472:165;11056:594;11662:41;11677:4;11683:2;11687:6;11695:7;11662:14;:41::i;:::-;9484:2227;9381:2330;;;:::o;2335:224::-;2455:7;2488:1;2483;:6;;2491:12;2475:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2515:9;2531:1;2527;:5;;;;:::i;:::-;2515:17;;2550:1;2543:8;;;2335:224;;;;;:::o;12210:99::-;12267:17;;;;;;;;;;;:26;;:34;12294:6;12267:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12210:99;:::o;8321:323::-;8416:7;8474;;8463;:18;;8441:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8562:19;8584:10;:8;:10::i;:::-;8562:32;;8612:24;8624:11;8612:7;:11;;:24;;;;:::i;:::-;8605:31;;;8321:323;;;:::o;11719:483::-;5896:4;5887:6;;:13;;;;;;;;;;;;;;;;;;11797:21:::1;11835:1;11821:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11797:40;;11866:4;11848;11853:1;11848:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11892:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11882:4;11887:1;11882:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11925:62;11942:4;11957:15;;;;;;;;;;;11975:11;11925:8;:62::i;:::-;11998:15;;;;;;;;;;;:66;;;12079:11;12105:1;12121:4;12148;12168:15;11998:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11786:416;5932:5:::0;5923:6;;:14;;;;;;;;;;;;;;;;;;11719:483;:::o;13190:282::-;13346:7;13341:28;;13355:14;:12;:14::i;:::-;13341:28;13380:44;13398:6;13406:9;13417:6;13380:17;:44::i;:::-;13440:7;13435:29;;13449:15;:13;:15::i;:::-;13435:29;13190:282;;;;:::o;16151:164::-;16193:7;16214:15;16231;16250:19;:17;:19::i;:::-;16213:56;;;;16287:20;16299:7;16287;:11;;:20;;;;:::i;:::-;16280:27;;;;16151:164;:::o;2821:132::-;2879:7;2906:39;2910:1;2913;2906:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2899:46;;2821:132;;;;:::o;8652:219::-;8712:1;8699:9;;:14;:30;;;;;8728:1;8717:7;;:12;8699:30;8731:7;8695:43;8770:9;;8750:17;:29;;;;8808:7;;8790:15;:25;;;;8840:1;8828:9;:13;;;;8862:1;8852:7;:11;;;;8652:219;:::o;13480:610::-;13627:15;13657:23;13695:12;13722:23;13760:12;13787:13;13814:19;13825:7;13814:10;:19::i;:::-;13612:221;;;;;;;;;;;;13862:28;13882:7;13862;:15;13870:6;13862:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13844:7;:15;13852:6;13844:15;;;;;;;;;;;;;;;:46;;;;13922:39;13945:15;13922:7;:18;13930:9;13922:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13901:7;:18;13909:9;13901:18;;;;;;;;;;;;;;;:60;;;;13972:16;13982:5;13972:9;:16::i;:::-;13999:23;14011:4;14017;13999:11;:23::i;:::-;14055:9;14038:44;;14047:6;14038:44;;;14066:15;14038:44;;;;;;:::i;:::-;;;;;;;;13601:489;;;;;;13480:610;;;:::o;8879:117::-;8935:17;;8923:9;:29;;;;8973:15;;8963:7;:25;;;;8879:117::o;16323:257::-;16374:7;16383;16403:15;16421:7;;16403:25;;16439:15;4620:17;16439:25;;16489:20;4620:17;16489:7;;:11;;:20;;;;:::i;:::-;16479:7;:30;16475:61;;;16519:7;;4620:17;16511:25;;;;;;;;16475:61;16555:7;16564;16547:25;;;;;;16323:257;;;:::o;2961:223::-;3081:7;3113:1;3109;:5;3116:12;3101:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3140:9;3156:1;3152;:5;;;;:::i;:::-;3140:17;;3175:1;3168:8;;;2961:223;;;;;:::o;14509:615::-;14609:7;14631;14653;14675;14697;14719;14755:23;14780:12;14794:13;14824:40;14836:7;14845:9;;14856:7;;14824:11;:40::i;:::-;14754:110;;;;;;14875:19;14897:10;:8;:10::i;:::-;14875:32;;14919:15;14936:23;14961:12;14990:46;15002:7;15011:4;15017:5;15024:11;14990;:46::i;:::-;14918:118;;;;;;15055:7;15064:15;15081:4;15087:15;15104:4;15110:5;15047:69;;;;;;;;;;;;;;;;;;;14509:615;;;;;;;:::o;2191:136::-;2249:7;2276:43;2280:1;2283;2276:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2269:50;;2191:136;;;;:::o;2004:179::-;2062:7;2082:9;2098:1;2094;:5;;;;:::i;:::-;2082:17;;2123:1;2118;:6;;2110:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2174:1;2167:8;;;2004:179;;;;:::o;14098:211::-;14151:19;14173:10;:8;:10::i;:::-;14151:32;;14194:13;14210:22;14220:11;14210:5;:9;;:22;;;;:::i;:::-;14194:38;;14268:33;14295:5;14268:7;:22;14284:4;14268:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14243:7;:22;14259:4;14243:22;;;;;;;;;;;;;;;:58;;;;14140:169;;14098:211;:::o;14317:147::-;14395:17;14407:4;14395:7;;:11;;:17;;;;:::i;:::-;14385:7;:27;;;;14436:20;14451:4;14436:10;;:14;;:20;;;;:::i;:::-;14423:10;:33;;;;14317:147;;:::o;15132:469::-;15301:7;15323;15345;15380:12;15395:30;15421:3;15395:21;15407:8;15395:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15380:45;;15436:13;15452:28;15476:3;15452:19;15464:6;15452:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15436:44;;15491:23;15517:28;15539:5;15517:17;15529:4;15517:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15491:54;;15564:15;15581:4;15587:5;15556:37;;;;;;;;;15132:469;;;;;;;:::o;15609:534::-;15803:7;15825;15847;15882:15;15900:24;15912:11;15900:7;:11;;:24;;;;:::i;:::-;15882:42;;15935:12;15950:21;15959:11;15950:4;:8;;:21;;;;:::i;:::-;15935:36;;15982:13;15998:22;16008:11;15998:5;:9;;:22;;;;:::i;:::-;15982:38;;16031:23;16057:28;16079:5;16057:17;16069:4;16057:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16031:54;;16104:7;16113:15;16130:4;16096:39;;;;;;;;;;15609:534;;;;;;;;:::o;2567:246::-;2625:7;2654:1;2649;:6;2645:47;;2679:1;2672:8;;;;2645:47;2702:9;2718:1;2714;:5;;;;:::i;:::-;2702:17;;2747:1;2742;2738;:5;;;;:::i;:::-;:10;2730:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2804:1;2797:8;;;2567:246;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:117;443:1;440;433:12;457:102;498:6;549:2;545:7;540:2;533:5;529:14;525:28;515:38;;457:102;;;:::o;565:180::-;613:77;610:1;603:88;710:4;707:1;700:15;734:4;731:1;724:15;751:281;834:27;856:4;834:27;:::i;:::-;826:6;822:40;964:6;952:10;949:22;928:18;916:10;913:34;910:62;907:88;;;975:18;;:::i;:::-;907:88;1015:10;1011:2;1004:22;794:238;751:281;;:::o;1038:129::-;1072:6;1099:20;;:::i;:::-;1089:30;;1128:33;1156:4;1148:6;1128:33;:::i;:::-;1038:129;;;:::o;1173:311::-;1250:4;1340:18;1332:6;1329:30;1326:56;;;1362:18;;:::i;:::-;1326:56;1412:4;1404:6;1400:17;1392:25;;1472:4;1466;1462:15;1454:23;;1173:311;;;:::o;1490:117::-;1599:1;1596;1589:12;1613:126;1650:7;1690:42;1683:5;1679:54;1668:65;;1613:126;;;:::o;1745:96::-;1782:7;1811:24;1829:5;1811:24;:::i;:::-;1800:35;;1745:96;;;:::o;1847:122::-;1920:24;1938:5;1920:24;:::i;:::-;1913:5;1910:35;1900:63;;1959:1;1956;1949:12;1900:63;1847:122;:::o;1975:139::-;2021:5;2059:6;2046:20;2037:29;;2075:33;2102:5;2075:33;:::i;:::-;1975:139;;;;:::o;2137:710::-;2233:5;2258:81;2274:64;2331:6;2274:64;:::i;:::-;2258:81;:::i;:::-;2249:90;;2359:5;2388:6;2381:5;2374:21;2422:4;2415:5;2411:16;2404:23;;2475:4;2467:6;2463:17;2455:6;2451:30;2504:3;2496:6;2493:15;2490:122;;;2523:79;;:::i;:::-;2490:122;2638:6;2621:220;2655:6;2650:3;2647:15;2621:220;;;2730:3;2759:37;2792:3;2780:10;2759:37;:::i;:::-;2754:3;2747:50;2826:4;2821:3;2817:14;2810:21;;2697:144;2681:4;2676:3;2672:14;2665:21;;2621:220;;;2625:21;2239:608;;2137:710;;;;;:::o;2870:370::-;2941:5;2990:3;2983:4;2975:6;2971:17;2967:27;2957:122;;2998:79;;:::i;:::-;2957:122;3115:6;3102:20;3140:94;3230:3;3222:6;3215:4;3207:6;3203:17;3140:94;:::i;:::-;3131:103;;2947:293;2870:370;;;;:::o;3246:539::-;3330:6;3379:2;3367:9;3358:7;3354:23;3350:32;3347:119;;;3385:79;;:::i;:::-;3347:119;3533:1;3522:9;3518:17;3505:31;3563:18;3555:6;3552:30;3549:117;;;3585:79;;:::i;:::-;3549:117;3690:78;3760:7;3751:6;3740:9;3736:22;3690:78;:::i;:::-;3680:88;;3476:302;3246:539;;;;:::o;3791:99::-;3843:6;3877:5;3871:12;3861:22;;3791:99;;;:::o;3896:169::-;3980:11;4014:6;4009:3;4002:19;4054:4;4049:3;4045:14;4030:29;;3896:169;;;;:::o;4071:139::-;4160:6;4155:3;4150;4144:23;4201:1;4192:6;4187:3;4183:16;4176:27;4071:139;;;:::o;4216:377::-;4304:3;4332:39;4365:5;4332:39;:::i;:::-;4387:71;4451:6;4446:3;4387:71;:::i;:::-;4380:78;;4467:65;4525:6;4520:3;4513:4;4506:5;4502:16;4467:65;:::i;:::-;4557:29;4579:6;4557:29;:::i;:::-;4552:3;4548:39;4541:46;;4308:285;4216:377;;;;:::o;4599:313::-;4712:4;4750:2;4739:9;4735:18;4727:26;;4799:9;4793:4;4789:20;4785:1;4774:9;4770:17;4763:47;4827:78;4900:4;4891:6;4827:78;:::i;:::-;4819:86;;4599:313;;;;:::o;4918:329::-;4977:6;5026:2;5014:9;5005:7;5001:23;4997:32;4994:119;;;5032:79;;:::i;:::-;4994:119;5152:1;5177:53;5222:7;5213:6;5202:9;5198:22;5177:53;:::i;:::-;5167:63;;5123:117;4918:329;;;;:::o;5253:77::-;5290:7;5319:5;5308:16;;5253:77;;;:::o;5336:122::-;5409:24;5427:5;5409:24;:::i;:::-;5402:5;5399:35;5389:63;;5448:1;5445;5438:12;5389:63;5336:122;:::o;5464:139::-;5510:5;5548:6;5535:20;5526:29;;5564:33;5591:5;5564:33;:::i;:::-;5464:139;;;;:::o;5609:474::-;5677:6;5685;5734:2;5722:9;5713:7;5709:23;5705:32;5702:119;;;5740:79;;:::i;:::-;5702:119;5860:1;5885:53;5930:7;5921:6;5910:9;5906:22;5885:53;:::i;:::-;5875:63;;5831:117;5987:2;6013:53;6058:7;6049:6;6038:9;6034:22;6013:53;:::i;:::-;6003:63;;5958:118;5609:474;;;;;:::o;6089:90::-;6123:7;6166:5;6159:13;6152:21;6141:32;;6089:90;;;:::o;6185:109::-;6266:21;6281:5;6266:21;:::i;:::-;6261:3;6254:34;6185:109;;:::o;6300:210::-;6387:4;6425:2;6414:9;6410:18;6402:26;;6438:65;6500:1;6489:9;6485:17;6476:6;6438:65;:::i;:::-;6300:210;;;;:::o;6516:60::-;6544:3;6565:5;6558:12;;6516:60;;;:::o;6582:142::-;6632:9;6665:53;6683:34;6692:24;6710:5;6692:24;:::i;:::-;6683:34;:::i;:::-;6665:53;:::i;:::-;6652:66;;6582:142;;;:::o;6730:126::-;6780:9;6813:37;6844:5;6813:37;:::i;:::-;6800:50;;6730:126;;;:::o;6862:152::-;6938:9;6971:37;7002:5;6971:37;:::i;:::-;6958:50;;6862:152;;;:::o;7020:183::-;7133:63;7190:5;7133:63;:::i;:::-;7128:3;7121:76;7020:183;;:::o;7209:274::-;7328:4;7366:2;7355:9;7351:18;7343:26;;7379:97;7473:1;7462:9;7458:17;7449:6;7379:97;:::i;:::-;7209:274;;;;:::o;7489:118::-;7576:24;7594:5;7576:24;:::i;:::-;7571:3;7564:37;7489:118;;:::o;7613:222::-;7706:4;7744:2;7733:9;7729:18;7721:26;;7757:71;7825:1;7814:9;7810:17;7801:6;7757:71;:::i;:::-;7613:222;;;;:::o;7841:619::-;7918:6;7926;7934;7983:2;7971:9;7962:7;7958:23;7954:32;7951:119;;;7989:79;;:::i;:::-;7951:119;8109:1;8134:53;8179:7;8170:6;8159:9;8155:22;8134:53;:::i;:::-;8124:63;;8080:117;8236:2;8262:53;8307:7;8298:6;8287:9;8283:22;8262:53;:::i;:::-;8252:63;;8207:118;8364:2;8390:53;8435:7;8426:6;8415:9;8411:22;8390:53;:::i;:::-;8380:63;;8335:118;7841:619;;;;;:::o;8466:86::-;8501:7;8541:4;8534:5;8530:16;8519:27;;8466:86;;;:::o;8558:112::-;8641:22;8657:5;8641:22;:::i;:::-;8636:3;8629:35;8558:112;;:::o;8676:214::-;8765:4;8803:2;8792:9;8788:18;8780:26;;8816:67;8880:1;8869:9;8865:17;8856:6;8816:67;:::i;:::-;8676:214;;;;:::o;8896:118::-;8983:24;9001:5;8983:24;:::i;:::-;8978:3;8971:37;8896:118;;:::o;9020:222::-;9113:4;9151:2;9140:9;9136:18;9128:26;;9164:71;9232:1;9221:9;9217:17;9208:6;9164:71;:::i;:::-;9020:222;;;;:::o;9248:116::-;9318:21;9333:5;9318:21;:::i;:::-;9311:5;9308:32;9298:60;;9354:1;9351;9344:12;9298:60;9248:116;:::o;9370:133::-;9413:5;9451:6;9438:20;9429:29;;9467:30;9491:5;9467:30;:::i;:::-;9370:133;;;;:::o;9509:323::-;9565:6;9614:2;9602:9;9593:7;9589:23;9585:32;9582:119;;;9620:79;;:::i;:::-;9582:119;9740:1;9765:50;9807:7;9798:6;9787:9;9783:22;9765:50;:::i;:::-;9755:60;;9711:114;9509:323;;;;:::o;9838:329::-;9897:6;9946:2;9934:9;9925:7;9921:23;9917:32;9914:119;;;9952:79;;:::i;:::-;9914:119;10072:1;10097:53;10142:7;10133:6;10122:9;10118:22;10097:53;:::i;:::-;10087:63;;10043:117;9838:329;;;;:::o;10173:765::-;10259:6;10267;10275;10283;10332:3;10320:9;10311:7;10307:23;10303:33;10300:120;;;10339:79;;:::i;:::-;10300:120;10459:1;10484:53;10529:7;10520:6;10509:9;10505:22;10484:53;:::i;:::-;10474:63;;10430:117;10586:2;10612:53;10657:7;10648:6;10637:9;10633:22;10612:53;:::i;:::-;10602:63;;10557:118;10714:2;10740:53;10785:7;10776:6;10765:9;10761:22;10740:53;:::i;:::-;10730:63;;10685:118;10842:2;10868:53;10913:7;10904:6;10893:9;10889:22;10868:53;:::i;:::-;10858:63;;10813:118;10173:765;;;;;;;:::o;10944:117::-;11053:1;11050;11043:12;11084:568;11157:8;11167:6;11217:3;11210:4;11202:6;11198:17;11194:27;11184:122;;11225:79;;:::i;:::-;11184:122;11338:6;11325:20;11315:30;;11368:18;11360:6;11357:30;11354:117;;;11390:79;;:::i;:::-;11354:117;11504:4;11496:6;11492:17;11480:29;;11558:3;11550:4;11542:6;11538:17;11528:8;11524:32;11521:41;11518:128;;;11565:79;;:::i;:::-;11518:128;11084:568;;;;;:::o;11658:698::-;11750:6;11758;11766;11815:2;11803:9;11794:7;11790:23;11786:32;11783:119;;;11821:79;;:::i;:::-;11783:119;11969:1;11958:9;11954:17;11941:31;11999:18;11991:6;11988:30;11985:117;;;12021:79;;:::i;:::-;11985:117;12134:80;12206:7;12197:6;12186:9;12182:22;12134:80;:::i;:::-;12116:98;;;;11912:312;12263:2;12289:50;12331:7;12322:6;12311:9;12307:22;12289:50;:::i;:::-;12279:60;;12234:115;11658:698;;;;;:::o;12362:474::-;12430:6;12438;12487:2;12475:9;12466:7;12462:23;12458:32;12455:119;;;12493:79;;:::i;:::-;12455:119;12613:1;12638:53;12683:7;12674:6;12663:9;12659:22;12638:53;:::i;:::-;12628:63;;12584:117;12740:2;12766:53;12811:7;12802:6;12791:9;12787:22;12766:53;:::i;:::-;12756:63;;12711:118;12362:474;;;;;:::o;12842:182::-;12982:34;12978:1;12970:6;12966:14;12959:58;12842:182;:::o;13030:366::-;13172:3;13193:67;13257:2;13252:3;13193:67;:::i;:::-;13186:74;;13269:93;13358:3;13269:93;:::i;:::-;13387:2;13382:3;13378:12;13371:19;;13030:366;;;:::o;13402:419::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:131;13809:4;13683:131;:::i;:::-;13675:139;;13402:419;;;:::o;13827:180::-;13875:77;13872:1;13865:88;13972:4;13969:1;13962:15;13996:4;13993:1;13986:15;14013:223;14153:34;14149:1;14141:6;14137:14;14130:58;14222:6;14217:2;14209:6;14205:15;14198:31;14013:223;:::o;14242:366::-;14384:3;14405:67;14469:2;14464:3;14405:67;:::i;:::-;14398:74;;14481:93;14570:3;14481:93;:::i;:::-;14599:2;14594:3;14590:12;14583:19;;14242:366;;;:::o;14614:419::-;14780:4;14818:2;14807:9;14803:18;14795:26;;14867:9;14861:4;14857:20;14853:1;14842:9;14838:17;14831:47;14895:131;15021:4;14895:131;:::i;:::-;14887:139;;14614:419;;;:::o;15039:225::-;15179:34;15175:1;15167:6;15163:14;15156:58;15248:8;15243:2;15235:6;15231:15;15224:33;15039:225;:::o;15270:366::-;15412:3;15433:67;15497:2;15492:3;15433:67;:::i;:::-;15426:74;;15509:93;15598:3;15509:93;:::i;:::-;15627:2;15622:3;15618:12;15611:19;;15270:366;;;:::o;15642:419::-;15808:4;15846:2;15835:9;15831:18;15823:26;;15895:9;15889:4;15885:20;15881:1;15870:9;15866:17;15859:47;15923:131;16049:4;15923:131;:::i;:::-;15915:139;;15642:419;;;:::o;16067:223::-;16207:34;16203:1;16195:6;16191:14;16184:58;16276:6;16271:2;16263:6;16259:15;16252:31;16067:223;:::o;16296:366::-;16438:3;16459:67;16523:2;16518:3;16459:67;:::i;:::-;16452:74;;16535:93;16624:3;16535:93;:::i;:::-;16653:2;16648:3;16644:12;16637:19;;16296:366;;;:::o;16668:419::-;16834:4;16872:2;16861:9;16857:18;16849:26;;16921:9;16915:4;16911:20;16907:1;16896:9;16892:17;16885:47;16949:131;17075:4;16949:131;:::i;:::-;16941:139;;16668:419;;;:::o;17093:221::-;17233:34;17229:1;17221:6;17217:14;17210:58;17302:4;17297:2;17289:6;17285:15;17278:29;17093:221;:::o;17320:366::-;17462:3;17483:67;17547:2;17542:3;17483:67;:::i;:::-;17476:74;;17559:93;17648:3;17559:93;:::i;:::-;17677:2;17672:3;17668:12;17661:19;;17320:366;;;:::o;17692:419::-;17858:4;17896:2;17885:9;17881:18;17873:26;;17945:9;17939:4;17935:20;17931:1;17920:9;17916:17;17909:47;17973:131;18099:4;17973:131;:::i;:::-;17965:139;;17692:419;;;:::o;18117:224::-;18257:34;18253:1;18245:6;18241:14;18234:58;18326:7;18321:2;18313:6;18309:15;18302:32;18117:224;:::o;18347:366::-;18489:3;18510:67;18574:2;18569:3;18510:67;:::i;:::-;18503:74;;18586:93;18675:3;18586:93;:::i;:::-;18704:2;18699:3;18695:12;18688:19;;18347:366;;;:::o;18719:419::-;18885:4;18923:2;18912:9;18908:18;18900:26;;18972:9;18966:4;18962:20;18958:1;18947:9;18943:17;18936:47;19000:131;19126:4;19000:131;:::i;:::-;18992:139;;18719:419;;;:::o;19144:222::-;19284:34;19280:1;19272:6;19268:14;19261:58;19353:5;19348:2;19340:6;19336:15;19329:30;19144:222;:::o;19372:366::-;19514:3;19535:67;19599:2;19594:3;19535:67;:::i;:::-;19528:74;;19611:93;19700:3;19611:93;:::i;:::-;19729:2;19724:3;19720:12;19713:19;;19372:366;;;:::o;19744:419::-;19910:4;19948:2;19937:9;19933:18;19925:26;;19997:9;19991:4;19987:20;19983:1;19972:9;19968:17;19961:47;20025:131;20151:4;20025:131;:::i;:::-;20017:139;;19744:419;;;:::o;20169:228::-;20309:34;20305:1;20297:6;20293:14;20286:58;20378:11;20373:2;20365:6;20361:15;20354:36;20169:228;:::o;20403:366::-;20545:3;20566:67;20630:2;20625:3;20566:67;:::i;:::-;20559:74;;20642:93;20731:3;20642:93;:::i;:::-;20760:2;20755:3;20751:12;20744:19;;20403:366;;;:::o;20775:419::-;20941:4;20979:2;20968:9;20964:18;20956:26;;21028:9;21022:4;21018:20;21014:1;21003:9;20999:17;20992:47;21056:131;21182:4;21056:131;:::i;:::-;21048:139;;20775:419;;;:::o;21200:250::-;21340:34;21336:1;21328:6;21324:14;21317:58;21409:33;21404:2;21396:6;21392:15;21385:58;21200:250;:::o;21456:366::-;21598:3;21619:67;21683:2;21678:3;21619:67;:::i;:::-;21612:74;;21695:93;21784:3;21695:93;:::i;:::-;21813:2;21808:3;21804:12;21797:19;;21456:366;;;:::o;21828:419::-;21994:4;22032:2;22021:9;22017:18;22009:26;;22081:9;22075:4;22071:20;22067:1;22056:9;22052:17;22045:47;22109:131;22235:4;22109:131;:::i;:::-;22101:139;;21828:419;;;:::o;22253:178::-;22393:30;22389:1;22381:6;22377:14;22370:54;22253:178;:::o;22437:366::-;22579:3;22600:67;22664:2;22659:3;22600:67;:::i;:::-;22593:74;;22676:93;22765:3;22676:93;:::i;:::-;22794:2;22789:3;22785:12;22778:19;;22437:366;;;:::o;22809:419::-;22975:4;23013:2;23002:9;22998:18;22990:26;;23062:9;23056:4;23052:20;23048:1;23037:9;23033:17;23026:47;23090:131;23216:4;23090:131;:::i;:::-;23082:139;;22809:419;;;:::o;23234:222::-;23374:34;23370:1;23362:6;23358:14;23351:58;23443:5;23438:2;23430:6;23426:15;23419:30;23234:222;:::o;23462:366::-;23604:3;23625:67;23689:2;23684:3;23625:67;:::i;:::-;23618:74;;23701:93;23790:3;23701:93;:::i;:::-;23819:2;23814:3;23810:12;23803:19;;23462:366;;;:::o;23834:419::-;24000:4;24038:2;24027:9;24023:18;24015:26;;24087:9;24081:4;24077:20;24073:1;24062:9;24058:17;24051:47;24115:131;24241:4;24115:131;:::i;:::-;24107:139;;23834:419;;;:::o;24259:180::-;24307:77;24304:1;24297:88;24404:4;24401:1;24394:15;24428:4;24425:1;24418:15;24445:191;24485:3;24504:20;24522:1;24504:20;:::i;:::-;24499:25;;24538:20;24556:1;24538:20;:::i;:::-;24533:25;;24581:1;24578;24574:9;24567:16;;24602:3;24599:1;24596:10;24593:36;;;24609:18;;:::i;:::-;24593:36;24445:191;;;;:::o;24642:222::-;24782:34;24778:1;24770:6;24766:14;24759:58;24851:5;24846:2;24838:6;24834:15;24827:30;24642:222;:::o;24870:366::-;25012:3;25033:67;25097:2;25092:3;25033:67;:::i;:::-;25026:74;;25109:93;25198:3;25109:93;:::i;:::-;25227:2;25222:3;25218:12;25211:19;;24870:366;;;:::o;25242:419::-;25408:4;25446:2;25435:9;25431:18;25423:26;;25495:9;25489:4;25485:20;25481:1;25470:9;25466:17;25459:47;25523:131;25649:4;25523:131;:::i;:::-;25515:139;;25242:419;;;:::o;25667:194::-;25707:4;25727:20;25745:1;25727:20;:::i;:::-;25722:25;;25761:20;25779:1;25761:20;:::i;:::-;25756:25;;25805:1;25802;25798:9;25790:17;;25829:1;25823:4;25820:11;25817:37;;;25834:18;;:::i;:::-;25817:37;25667:194;;;;:::o;25867:229::-;26007:34;26003:1;25995:6;25991:14;25984:58;26076:12;26071:2;26063:6;26059:15;26052:37;25867:229;:::o;26102:366::-;26244:3;26265:67;26329:2;26324:3;26265:67;:::i;:::-;26258:74;;26341:93;26430:3;26341:93;:::i;:::-;26459:2;26454:3;26450:12;26443:19;;26102:366;;;:::o;26474:419::-;26640:4;26678:2;26667:9;26663:18;26655:26;;26727:9;26721:4;26717:20;26713:1;26702:9;26698:17;26691:47;26755:131;26881:4;26755:131;:::i;:::-;26747:139;;26474:419;;;:::o;26899:143::-;26956:5;26987:6;26981:13;26972:22;;27003:33;27030:5;27003:33;:::i;:::-;26899:143;;;;:::o;27048:351::-;27118:6;27167:2;27155:9;27146:7;27142:23;27138:32;27135:119;;;27173:79;;:::i;:::-;27135:119;27293:1;27318:64;27374:7;27365:6;27354:9;27350:22;27318:64;:::i;:::-;27308:74;;27264:128;27048:351;;;;:::o;27405:85::-;27450:7;27479:5;27468:16;;27405:85;;;:::o;27496:158::-;27554:9;27587:61;27605:42;27614:32;27640:5;27614:32;:::i;:::-;27605:42;:::i;:::-;27587:61;:::i;:::-;27574:74;;27496:158;;;:::o;27660:147::-;27755:45;27794:5;27755:45;:::i;:::-;27750:3;27743:58;27660:147;;:::o;27813:114::-;27880:6;27914:5;27908:12;27898:22;;27813:114;;;:::o;27933:184::-;28032:11;28066:6;28061:3;28054:19;28106:4;28101:3;28097:14;28082:29;;27933:184;;;;:::o;28123:132::-;28190:4;28213:3;28205:11;;28243:4;28238:3;28234:14;28226:22;;28123:132;;;:::o;28261:108::-;28338:24;28356:5;28338:24;:::i;:::-;28333:3;28326:37;28261:108;;:::o;28375:179::-;28444:10;28465:46;28507:3;28499:6;28465:46;:::i;:::-;28543:4;28538:3;28534:14;28520:28;;28375:179;;;;:::o;28560:113::-;28630:4;28662;28657:3;28653:14;28645:22;;28560:113;;;:::o;28709:732::-;28828:3;28857:54;28905:5;28857:54;:::i;:::-;28927:86;29006:6;29001:3;28927:86;:::i;:::-;28920:93;;29037:56;29087:5;29037:56;:::i;:::-;29116:7;29147:1;29132:284;29157:6;29154:1;29151:13;29132:284;;;29233:6;29227:13;29260:63;29319:3;29304:13;29260:63;:::i;:::-;29253:70;;29346:60;29399:6;29346:60;:::i;:::-;29336:70;;29192:224;29179:1;29176;29172:9;29167:14;;29132:284;;;29136:14;29432:3;29425:10;;28833:608;;;28709:732;;;;:::o;29447:831::-;29710:4;29748:3;29737:9;29733:19;29725:27;;29762:71;29830:1;29819:9;29815:17;29806:6;29762:71;:::i;:::-;29843:80;29919:2;29908:9;29904:18;29895:6;29843:80;:::i;:::-;29970:9;29964:4;29960:20;29955:2;29944:9;29940:18;29933:48;29998:108;30101:4;30092:6;29998:108;:::i;:::-;29990:116;;30116:72;30184:2;30173:9;30169:18;30160:6;30116:72;:::i;:::-;30198:73;30266:3;30255:9;30251:19;30242:6;30198:73;:::i;:::-;29447:831;;;;;;;;:::o;30284:180::-;30332:77;30329:1;30322:88;30429:4;30426:1;30419:15;30453:4;30450:1;30443:15;30470:185;30510:1;30527:20;30545:1;30527:20;:::i;:::-;30522:25;;30561:20;30579:1;30561:20;:::i;:::-;30556:25;;30600:1;30590:35;;30605:18;;:::i;:::-;30590:35;30647:1;30644;30640:9;30635:14;;30470:185;;;;:::o;30661:177::-;30801:29;30797:1;30789:6;30785:14;30778:53;30661:177;:::o;30844:366::-;30986:3;31007:67;31071:2;31066:3;31007:67;:::i;:::-;31000:74;;31083:93;31172:3;31083:93;:::i;:::-;31201:2;31196:3;31192:12;31185:19;;30844:366;;;:::o;31216:419::-;31382:4;31420:2;31409:9;31405:18;31397:26;;31469:9;31463:4;31459:20;31455:1;31444:9;31440:17;31433:47;31497:131;31623:4;31497:131;:::i;:::-;31489:139;;31216:419;;;:::o;31641:410::-;31681:7;31704:20;31722:1;31704:20;:::i;:::-;31699:25;;31738:20;31756:1;31738:20;:::i;:::-;31733:25;;31793:1;31790;31786:9;31815:30;31833:11;31815:30;:::i;:::-;31804:41;;31994:1;31985:7;31981:15;31978:1;31975:22;31955:1;31948:9;31928:83;31905:139;;32024:18;;:::i;:::-;31905:139;31689:362;31641:410;;;;:::o;32057:220::-;32197:34;32193:1;32185:6;32181:14;32174:58;32266:3;32261:2;32253:6;32249:15;32242:28;32057:220;:::o;32283:366::-;32425:3;32446:67;32510:2;32505:3;32446:67;:::i;:::-;32439:74;;32522:93;32611:3;32522:93;:::i;:::-;32640:2;32635:3;32631:12;32624:19;;32283:366;;;:::o;32655:419::-;32821:4;32859:2;32848:9;32844:18;32836:26;;32908:9;32902:4;32898:20;32894:1;32883:9;32879:17;32872:47;32936:131;33062:4;32936:131;:::i;:::-;32928:139;;32655:419;;;:::o

Swarm Source

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