ETH Price: $3,269.96 (+0.14%)
Gas: 37 Gwei

Contract

0x4e7334Fb46a371F025354F05c2a9F3DEC704bCb5
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve199552512024-05-26 16:29:4762 days ago1716740987IN
0x4e7334Fb...EC704bCb5
0 ETH0.0006123712.97129367
Approve192476812024-02-17 12:48:47161 days ago1708174127IN
0x4e7334Fb...EC704bCb5
0 ETH0.0008707718.44468727
Approve189915312024-01-12 14:51:59197 days ago1705071119IN
0x4e7334Fb...EC704bCb5
0 ETH0.0016327934.7624602
Approve189325942024-01-04 7:51:47205 days ago1704354707IN
0x4e7334Fb...EC704bCb5
0 ETH0.0007749516.51994166
Approve187568292023-12-10 15:53:11230 days ago1702223591IN
0x4e7334Fb...EC704bCb5
0 ETH0.0012784927.11551948
Approve187218332023-12-05 18:08:59235 days ago1701799739IN
0x4e7334Fb...EC704bCb5
0 ETH0.0036861678.17948577
Approve186936562023-12-01 19:29:59239 days ago1701458999IN
0x4e7334Fb...EC704bCb5
0 ETH0.0012119844.37873124
Approve186936542023-12-01 19:29:35239 days ago1701458975IN
0x4e7334Fb...EC704bCb5
0 ETH0.002117244.84658127
Approve186883662023-12-01 1:43:59239 days ago1701395039IN
0x4e7334Fb...EC704bCb5
0 ETH0.0016384834.88359872
Approve186883632023-12-01 1:43:23239 days ago1701395003IN
0x4e7334Fb...EC704bCb5
0 ETH0.001750937.27703409
Approve186697942023-11-28 11:22:11242 days ago1701170531IN
0x4e7334Fb...EC704bCb5
0 ETH0.0011698724.94499372
Transfer186697912023-11-28 11:21:35242 days ago1701170495IN
0x4e7334Fb...EC704bCb5
0 ETH0.002063725.65166216
Approve186697662023-11-28 11:16:35242 days ago1701170195IN
0x4e7334Fb...EC704bCb5
0 ETH0.0008055527.01199357
Approve186697582023-11-28 11:14:59242 days ago1701170099IN
0x4e7334Fb...EC704bCb5
0 ETH0.0015423432.66983025
Transfer186697562023-11-28 11:14:35242 days ago1701170075IN
0x4e7334Fb...EC704bCb5
0 ETH0.0020292732.02625468
Transfer186697392023-11-28 11:11:11242 days ago1701169871IN
0x4e7334Fb...EC704bCb5
0 ETH0.0021803929.46917364
Transfer186697372023-11-28 11:10:47242 days ago1701169847IN
0x4e7334Fb...EC704bCb5
0 ETH0.0019969426.98969167
Transfer186697342023-11-28 11:10:11242 days ago1701169811IN
0x4e7334Fb...EC704bCb5
0 ETH0.0019423926.25250364
Transfer186697302023-11-28 11:09:23242 days ago1701169763IN
0x4e7334Fb...EC704bCb5
0 ETH0.0022554130.48309669
Transfer186697272023-11-28 11:08:47242 days ago1701169727IN
0x4e7334Fb...EC704bCb5
0 ETH0.0024069732.53156266
Transfer186697252023-11-28 11:08:23242 days ago1701169703IN
0x4e7334Fb...EC704bCb5
0 ETH0.0025055133.8633464
Transfer186697222023-11-28 11:07:47242 days ago1701169667IN
0x4e7334Fb...EC704bCb5
0 ETH0.0025923635.03719922
Approve186693522023-11-28 9:53:11242 days ago1701165191IN
0x4e7334Fb...EC704bCb5
0 ETH0.001192325.41693276
Transfer186692002023-11-28 9:22:11242 days ago1701163331IN
0x4e7334Fb...EC704bCb5
0 ETH0.00182624.67946197
Approve186688352023-11-28 8:08:35242 days ago1701158915IN
0x4e7334Fb...EC704bCb5
0 ETH0.001227326.16303449
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PEKAR

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-18
*/

/**
 *Submitted for verification at Etherscan.io on 2023-11-18
*/

/**
 * A new era of meme and a safer one
 * Self-doubt is not always our fault. Sometime society brings it within us. 
 * When dealing with self-dout, none of your achievements will ever be enought
 * because we will still feel like an ousider despite the praises.
 * That's the story of the iconic comic character HARVEY PEKAR. 
 * PEKAR died by an accidental overdose of antidepressants back in 2010.
 * Despite the self-doubt, PEKAR was still hopeful and hopped that 
 * one day he will make it and stop feeling like an outsider.
 * ARE WE ALL GOING TO MAKE IT? WILL IT BE TODAY ? TOMORROW ? OR NEVER ?
*/
//https://harveypekar.top/
//https://twitter.com/Pekarcoin
//https://t.me/GLOBALPEKARCOIN

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.16;

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 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 PEKAR is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "HARVEY PEKAR";
    string private constant _symbol = "PEKAR";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 699_999_999_999 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 2;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 3;

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

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

    mapping (address => uint256) private _buyMap;
    address private marketingAddress = 0xC824f55F79DC80d84b4552023D919D4444444444;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private inSwap = true;
    bool private swapEnabled = true;

    uint256 public _swapTokensAtAmount = 9_999_999_999 * 10**_decimals;

    struct Distribution {
        uint256 marketing;
    }

    Distribution public distribution;

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

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

        distribution = Distribution(100);

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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


            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 lockTheSwap {
        uint256 distributionEth = amount;
        uint256 marketingShare = distributionEth.mul(distribution.marketing).div(100);
        payable(marketingAddress).transfer(marketingShare);
    }


    function Manualswapandsend() external onlyOwner {
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    } 
 
    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 withdrawToken(address _tokenContract, uint256 _amount) external onlyOwner {
        IERC20 tokenContract = IERC20(_tokenContract);
        tokenContract.transfer(msg.sender, _amount);
    }

        function setSwapTokensAtAmount(uint256 _amount) external onlyOwner {
        require (_amount >= _tTotal / 1000000, "shouldn't be less than 0,0001%");
        _swapTokensAtAmount = _amount;
    }

    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 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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Manualswapandsend","outputs":[],"stateMutability":"nonpayable","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"distribution","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","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":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenContract","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620007f7565b64a2fb4057ff62000026919062000848565b600019620000359190620008c2565b600019620000449190620008fa565b600655600060085560026009556000600a556003600b55600a54600c55600b54600d55600c54600e55600d54600f5573c824f55f79dc80d84b4552023d919d4444444444601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff0219169083151502179055506001601360156101000a81548160ff0219169083151502179055506012600a6200010e9190620007f7565b6402540be3ff62000120919062000848565b6014553480156200013057600080fd5b506000620001436200062c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460026000620001f86200062c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030291906200099f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200036a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200039091906200099f565b6040518363ffffffff1660e01b8152600401620003af929190620009e2565b6020604051808303816000875af1158015620003cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f591906200099f565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200044b6200063460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550604051806020016040528060648152506015600082015181600001559050506200059d6200062c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620005fc9190620007f7565b64a2fb4057ff6200060e919062000848565b6040516200061d919062000a20565b60405180910390a35062000a3d565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006eb57808604811115620006c357620006c26200065d565b5b6001851615620006d35780820291505b8081029050620006e3856200068c565b9450620006a3565b94509492505050565b600082620007065760019050620007d9565b81620007165760009050620007d9565b81600181146200072f57600281146200073a5762000770565b6001915050620007d9565b60ff8411156200074f576200074e6200065d565b5b8360020a9150848211156200076957620007686200065d565b5b50620007d9565b5060208310610133831016604e8410600b8410161715620007aa5782820a905083811115620007a457620007a36200065d565b5b620007d9565b620007b9848484600162000699565b92509050818404811115620007d357620007d26200065d565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200080482620007e0565b91506200081183620007ea565b9250620008407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006f4565b905092915050565b60006200085582620007e0565b91506200086283620007e0565b92508282026200087281620007e0565b915082820484148315176200088c576200088b6200065d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008cf82620007e0565b9150620008dc83620007e0565b925082620008ef57620008ee62000893565b5b828206905092915050565b60006200090782620007e0565b91506200091483620007e0565b92508282039050818111156200092f576200092e6200065d565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000967826200093a565b9050919050565b62000979816200095a565b81146200098557600080fd5b50565b60008151905062000999816200096e565b92915050565b600060208284031215620009b857620009b762000935565b5b6000620009c88482850162000988565b91505092915050565b620009dc816200095a565b82525050565b6000604082019050620009f96000830185620009d1565b62000a086020830184620009d1565b9392505050565b62000a1a81620007e0565b82525050565b600060208201905062000a37600083018462000a0f565b92915050565b6131348062000a4d6000396000f3fe6080604052600436106101185760003560e01c806370a08231116100a0578063a9059cbb11610064578063a9059cbb1461039e578063afa4f3b2146103db578063c492f04614610404578063dd62ed3e1461042d578063f2fde38b1461046a5761011f565b806370a08231146102cb5780638da5cb5b1461030857806395d89b41146103335780639e281a981461035e578063a1f6247c146103875761011f565b806323b872dd116100e757806323b872dd146101e25780632fd689e31461021f578063313ce5671461024a57806349bd5a5e146102755780635ee58efc146102a05761011f565b806306fdde0314610124578063095ea7b31461014f5780631694505e1461018c57806318160ddd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610493565b604051610146919061218c565b60405180910390f35b34801561015b57600080fd5b506101766004803603810190610171919061224c565b6104d0565b60405161018391906122a7565b60405180910390f35b34801561019857600080fd5b506101a16104ee565b6040516101ae9190612321565b60405180910390f35b3480156101c357600080fd5b506101cc610514565b6040516101d9919061234b565b60405180910390f35b3480156101ee57600080fd5b5061020960048036038101906102049190612366565b610539565b60405161021691906122a7565b60405180910390f35b34801561022b57600080fd5b50610234610612565b604051610241919061234b565b60405180910390f35b34801561025657600080fd5b5061025f610618565b60405161026c91906123d5565b60405180910390f35b34801561028157600080fd5b5061028a610621565b60405161029791906123ff565b60405180910390f35b3480156102ac57600080fd5b506102b5610647565b6040516102c2919061234b565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed919061241a565b610653565b6040516102ff919061234b565b60405180910390f35b34801561031457600080fd5b5061031d6106a4565b60405161032a91906123ff565b60405180910390f35b34801561033f57600080fd5b506103486106cd565b604051610355919061218c565b60405180910390f35b34801561036a57600080fd5b506103856004803603810190610380919061224c565b61070a565b005b34801561039357600080fd5b5061039c610828565b005b3480156103aa57600080fd5b506103c560048036038101906103c0919061224c565b6108e5565b6040516103d291906122a7565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612447565b610903565b005b34801561041057600080fd5b5061042b60048036038101906104269190612505565b610a10565b005b34801561043957600080fd5b50610454600480360381019061044f9190612565565b610b4a565b604051610461919061234b565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c919061241a565b610bd1565b005b60606040518060400160405280600c81526020017f4841525645592050454b41520000000000000000000000000000000000000000815250905090565b60006104e46104dd610d92565b8484610d9a565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6105249190612707565b64a2fb4057ff6105349190612752565b905090565b6000610546848484610f63565b61060784610552610d92565b610602856040518060600160405280602881526020016130d760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105b8610d92565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157a9092919063ffffffff16565b610d9a565b600190509392505050565b60145481565b60006012905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158060000154905081565b600061069d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115de565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f50454b4152000000000000000000000000000000000000000000000000000000815250905090565b610712610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906127e0565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016107df929190612800565b6020604051808303816000875af11580156107fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610822919061283e565b50505050565b610830610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906127e0565b60405180910390fd5b60006108c830610653565b90506108d38161164c565b60004790506108e1816118c5565b5050565b60006108f96108f2610d92565b8484610f63565b6001905092915050565b61090b610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f906127e0565b60405180910390fd5b620f42406012600a6109aa9190612707565b64a2fb4057ff6109ba9190612752565b6109c4919061289a565b811015610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd90612917565b60405180910390fd5b8060148190555050565b610a18610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c906127e0565b60405180910390fd5b60005b83839050811015610b44578160056000868685818110610acb57610aca612937565b5b9050602002016020810190610ae0919061241a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b3c90612966565b915050610aa8565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bd9610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d906127e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90612a20565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090612ab2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612b44565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f56919061234b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990612bd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890612c68565b60405180910390fd5b60008111611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b90612cfa565b60405180910390fd5b61108c6106a4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156110fa57506110ca6106a4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561127957600061110a30610653565b9050600060145482101590508080156111305750601360149054906101000a900460ff16155b801561118a5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156111a25750601360159054906101000a900460ff165b80156111f85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561124e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112765761125c8261164c565b6000479050600081111561127457611273476118c5565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113205750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113d35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113d25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156113e15760009050611568565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561148c5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114a457600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561154f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561156757600a54600c81905550600b54600d819055505b5b6115748484848461199d565b50505050565b60008383111582906115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b9919061218c565b60405180910390fd5b50600083856115d19190612d1a565b9050809150509392505050565b6000600654821115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90612dc0565b60405180910390fd5b600061162f6119ca565b905061164481846119f590919063ffffffff16565b915050919050565b6000601360146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561168457611683612de0565b5b6040519080825280602002602001820160405280156116b25781602001602082028036833780820191505090505b50905030816000815181106116ca576116c9612937565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117959190612e24565b816001815181106117a9576117a8612937565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061181030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d9a565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611874959493929190612f4a565b600060405180830381600087803b15801561188e57600080fd5b505af11580156118a2573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b6000601360146101000a81548160ff02191690831515021790555060008190506000611912606461190460156000015485611a3f90919063ffffffff16565b6119f590919063ffffffff16565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561197c573d6000803e3d6000fd5b5050506000601360146101000a81548160ff02191690831515021790555050565b806119ab576119aa611ab9565b5b6119b6848484611af6565b806119c4576119c3611cc1565b5b50505050565b60008060006119d7611cd5565b915091506119ee81836119f590919063ffffffff16565b9250505090565b6000611a3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d73565b905092915050565b6000808303611a515760009050611ab3565b60008284611a5f9190612752565b9050828482611a6e919061289a565b14611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa590613016565b60405180910390fd5b809150505b92915050565b6000600c54148015611acd57506000600d54145b611af457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611b0887611dd6565b955095509550955095509550611b6686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e3e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bfb85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c4781611ee6565b611c518483611fa3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611cae919061234b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006012600a611cef9190612707565b64a2fb4057ff611cff9190612752565b9050611d336012600a611d129190612707565b64a2fb4057ff611d229190612752565b6006546119f590919063ffffffff16565b821015611d66576006546012600a611d4b9190612707565b64a2fb4057ff611d5b9190612752565b935093505050611d6f565b81819350935050505b9091565b60008083118290611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db1919061218c565b60405180910390fd5b5060008385611dc9919061289a565b9050809150509392505050565b6000806000806000806000806000611df38a600c54600d54611fdd565b9250925092506000611e036119ca565b90506000806000611e168e878787612073565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611e8083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061157a565b905092915050565b6000808284611e979190613036565b905083811015611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed3906130b6565b60405180910390fd5b8091505092915050565b6000611ef06119ca565b90506000611f078284611a3f90919063ffffffff16565b9050611f5b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b611fb882600654611e3e90919063ffffffff16565b600681905550611fd381600754611e8890919063ffffffff16565b6007819055505050565b6000806000806120096064611ffb888a611a3f90919063ffffffff16565b6119f590919063ffffffff16565b905060006120336064612025888b611a3f90919063ffffffff16565b6119f590919063ffffffff16565b9050600061205c8261204e858c611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061208c8589611a3f90919063ffffffff16565b905060006120a38689611a3f90919063ffffffff16565b905060006120ba8789611a3f90919063ffffffff16565b905060006120e3826120d58587611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561213657808201518184015260208101905061211b565b60008484015250505050565b6000601f19601f8301169050919050565b600061215e826120fc565b6121688185612107565b9350612178818560208601612118565b61218181612142565b840191505092915050565b600060208201905081810360008301526121a68184612153565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121e3826121b8565b9050919050565b6121f3816121d8565b81146121fe57600080fd5b50565b600081359050612210816121ea565b92915050565b6000819050919050565b61222981612216565b811461223457600080fd5b50565b60008135905061224681612220565b92915050565b60008060408385031215612263576122626121ae565b5b600061227185828601612201565b925050602061228285828601612237565b9150509250929050565b60008115159050919050565b6122a18161228c565b82525050565b60006020820190506122bc6000830184612298565b92915050565b6000819050919050565b60006122e76122e26122dd846121b8565b6122c2565b6121b8565b9050919050565b60006122f9826122cc565b9050919050565b600061230b826122ee565b9050919050565b61231b81612300565b82525050565b60006020820190506123366000830184612312565b92915050565b61234581612216565b82525050565b6000602082019050612360600083018461233c565b92915050565b60008060006060848603121561237f5761237e6121ae565b5b600061238d86828701612201565b935050602061239e86828701612201565b92505060406123af86828701612237565b9150509250925092565b600060ff82169050919050565b6123cf816123b9565b82525050565b60006020820190506123ea60008301846123c6565b92915050565b6123f9816121d8565b82525050565b600060208201905061241460008301846123f0565b92915050565b6000602082840312156124305761242f6121ae565b5b600061243e84828501612201565b91505092915050565b60006020828403121561245d5761245c6121ae565b5b600061246b84828501612237565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261249957612498612474565b5b8235905067ffffffffffffffff8111156124b6576124b5612479565b5b6020830191508360208202830111156124d2576124d161247e565b5b9250929050565b6124e28161228c565b81146124ed57600080fd5b50565b6000813590506124ff816124d9565b92915050565b60008060006040848603121561251e5761251d6121ae565b5b600084013567ffffffffffffffff81111561253c5761253b6121b3565b5b61254886828701612483565b9350935050602061255b868287016124f0565b9150509250925092565b6000806040838503121561257c5761257b6121ae565b5b600061258a85828601612201565b925050602061259b85828601612201565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561262b57808604811115612607576126066125a5565b5b60018516156126165780820291505b8081029050612624856125d4565b94506125eb565b94509492505050565b6000826126445760019050612700565b816126525760009050612700565b81600181146126685760028114612672576126a1565b6001915050612700565b60ff841115612684576126836125a5565b5b8360020a91508482111561269b5761269a6125a5565b5b50612700565b5060208310610133831016604e8410600b84101617156126d65782820a9050838111156126d1576126d06125a5565b5b612700565b6126e384848460016125e1565b925090508184048111156126fa576126f96125a5565b5b81810290505b9392505050565b600061271282612216565b915061271d836123b9565b925061274a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612634565b905092915050565b600061275d82612216565b915061276883612216565b925082820261277681612216565b9150828204841483151761278d5761278c6125a5565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127ca602083612107565b91506127d582612794565b602082019050919050565b600060208201905081810360008301526127f9816127bd565b9050919050565b600060408201905061281560008301856123f0565b612822602083018461233c565b9392505050565b600081519050612838816124d9565b92915050565b600060208284031215612854576128536121ae565b5b600061286284828501612829565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006128a582612216565b91506128b083612216565b9250826128c0576128bf61286b565b5b828204905092915050565b7f73686f756c646e2774206265206c657373207468616e20302c30303031250000600082015250565b6000612901601e83612107565b915061290c826128cb565b602082019050919050565b60006020820190508181036000830152612930816128f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061297182612216565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a3576129a26125a5565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a0a602683612107565b9150612a15826129ae565b604082019050919050565b60006020820190508181036000830152612a39816129fd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a9c602483612107565b9150612aa782612a40565b604082019050919050565b60006020820190508181036000830152612acb81612a8f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b2e602283612107565b9150612b3982612ad2565b604082019050919050565b60006020820190508181036000830152612b5d81612b21565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612bc0602583612107565b9150612bcb82612b64565b604082019050919050565b60006020820190508181036000830152612bef81612bb3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c52602383612107565b9150612c5d82612bf6565b604082019050919050565b60006020820190508181036000830152612c8181612c45565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612ce4602983612107565b9150612cef82612c88565b604082019050919050565b60006020820190508181036000830152612d1381612cd7565b9050919050565b6000612d2582612216565b9150612d3083612216565b9250828203905081811115612d4857612d476125a5565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612daa602a83612107565b9150612db582612d4e565b604082019050919050565b60006020820190508181036000830152612dd981612d9d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050612e1e816121ea565b92915050565b600060208284031215612e3a57612e396121ae565b5b6000612e4884828501612e0f565b91505092915050565b6000819050919050565b6000612e76612e71612e6c84612e51565b6122c2565b612216565b9050919050565b612e8681612e5b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ec1816121d8565b82525050565b6000612ed38383612eb8565b60208301905092915050565b6000602082019050919050565b6000612ef782612e8c565b612f018185612e97565b9350612f0c83612ea8565b8060005b83811015612f3d578151612f248882612ec7565b9750612f2f83612edf565b925050600181019050612f10565b5085935050505092915050565b600060a082019050612f5f600083018861233c565b612f6c6020830187612e7d565b8181036040830152612f7e8186612eec565b9050612f8d60608301856123f0565b612f9a608083018461233c565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613000602183612107565b915061300b82612fa4565b604082019050919050565b6000602082019050818103600083015261302f81612ff3565b9050919050565b600061304182612216565b915061304c83612216565b9250828201905080821115613064576130636125a5565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006130a0601b83612107565b91506130ab8261306a565b602082019050919050565b600060208201905081810360008301526130cf81613093565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209d763afe1dae3754395764f9bb9586601d0ca69ea35337833e5532c0981ac72f64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101185760003560e01c806370a08231116100a0578063a9059cbb11610064578063a9059cbb1461039e578063afa4f3b2146103db578063c492f04614610404578063dd62ed3e1461042d578063f2fde38b1461046a5761011f565b806370a08231146102cb5780638da5cb5b1461030857806395d89b41146103335780639e281a981461035e578063a1f6247c146103875761011f565b806323b872dd116100e757806323b872dd146101e25780632fd689e31461021f578063313ce5671461024a57806349bd5a5e146102755780635ee58efc146102a05761011f565b806306fdde0314610124578063095ea7b31461014f5780631694505e1461018c57806318160ddd146101b75761011f565b3661011f57005b600080fd5b34801561013057600080fd5b50610139610493565b604051610146919061218c565b60405180910390f35b34801561015b57600080fd5b506101766004803603810190610171919061224c565b6104d0565b60405161018391906122a7565b60405180910390f35b34801561019857600080fd5b506101a16104ee565b6040516101ae9190612321565b60405180910390f35b3480156101c357600080fd5b506101cc610514565b6040516101d9919061234b565b60405180910390f35b3480156101ee57600080fd5b5061020960048036038101906102049190612366565b610539565b60405161021691906122a7565b60405180910390f35b34801561022b57600080fd5b50610234610612565b604051610241919061234b565b60405180910390f35b34801561025657600080fd5b5061025f610618565b60405161026c91906123d5565b60405180910390f35b34801561028157600080fd5b5061028a610621565b60405161029791906123ff565b60405180910390f35b3480156102ac57600080fd5b506102b5610647565b6040516102c2919061234b565b60405180910390f35b3480156102d757600080fd5b506102f260048036038101906102ed919061241a565b610653565b6040516102ff919061234b565b60405180910390f35b34801561031457600080fd5b5061031d6106a4565b60405161032a91906123ff565b60405180910390f35b34801561033f57600080fd5b506103486106cd565b604051610355919061218c565b60405180910390f35b34801561036a57600080fd5b506103856004803603810190610380919061224c565b61070a565b005b34801561039357600080fd5b5061039c610828565b005b3480156103aa57600080fd5b506103c560048036038101906103c0919061224c565b6108e5565b6040516103d291906122a7565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612447565b610903565b005b34801561041057600080fd5b5061042b60048036038101906104269190612505565b610a10565b005b34801561043957600080fd5b50610454600480360381019061044f9190612565565b610b4a565b604051610461919061234b565b60405180910390f35b34801561047657600080fd5b50610491600480360381019061048c919061241a565b610bd1565b005b60606040518060400160405280600c81526020017f4841525645592050454b41520000000000000000000000000000000000000000815250905090565b60006104e46104dd610d92565b8484610d9a565b6001905092915050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012600a6105249190612707565b64a2fb4057ff6105349190612752565b905090565b6000610546848484610f63565b61060784610552610d92565b610602856040518060600160405280602881526020016130d760289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105b8610d92565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461157a9092919063ffffffff16565b610d9a565b600190509392505050565b60145481565b60006012905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60158060000154905081565b600061069d600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546115de565b9050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f50454b4152000000000000000000000000000000000000000000000000000000815250905090565b610712610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610796906127e0565b60405180910390fd5b60008290508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016107df929190612800565b6020604051808303816000875af11580156107fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610822919061283e565b50505050565b610830610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b4906127e0565b60405180910390fd5b60006108c830610653565b90506108d38161164c565b60004790506108e1816118c5565b5050565b60006108f96108f2610d92565b8484610f63565b6001905092915050565b61090b610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f906127e0565b60405180910390fd5b620f42406012600a6109aa9190612707565b64a2fb4057ff6109ba9190612752565b6109c4919061289a565b811015610a06576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109fd90612917565b60405180910390fd5b8060148190555050565b610a18610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9c906127e0565b60405180910390fd5b60005b83839050811015610b44578160056000868685818110610acb57610aca612937565b5b9050602002016020810190610ae0919061241a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610b3c90612966565b915050610aa8565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610bd9610d92565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5d906127e0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccc90612a20565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0090612ab2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f90612b44565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f56919061234b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610fd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc990612bd6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103890612c68565b60405180910390fd5b60008111611084576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107b90612cfa565b60405180910390fd5b61108c6106a4565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156110fa57506110ca6106a4565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561127957600061110a30610653565b9050600060145482101590508080156111305750601360149054906101000a900460ff16155b801561118a5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156111a25750601360159054906101000a900460ff165b80156111f85750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561124e5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156112765761125c8261164c565b6000479050600081111561127457611273476118c5565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806113205750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806113d35750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156113d25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156113e15760009050611568565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561148c5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114a457600854600c81905550600954600d819055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561154f5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561156757600a54600c81905550600b54600d819055505b5b6115748484848461199d565b50505050565b60008383111582906115c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b9919061218c565b60405180910390fd5b50600083856115d19190612d1a565b9050809150509392505050565b6000600654821115611625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161c90612dc0565b60405180910390fd5b600061162f6119ca565b905061164481846119f590919063ffffffff16565b915050919050565b6000601360146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561168457611683612de0565b5b6040519080825280602002602001820160405280156116b25781602001602082028036833780820191505090505b50905030816000815181106116ca576116c9612937565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611771573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117959190612e24565b816001815181106117a9576117a8612937565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061181030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610d9a565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611874959493929190612f4a565b600060405180830381600087803b15801561188e57600080fd5b505af11580156118a2573d6000803e3d6000fd5b50505050506000601360146101000a81548160ff02191690831515021790555050565b6000601360146101000a81548160ff02191690831515021790555060008190506000611912606461190460156000015485611a3f90919063ffffffff16565b6119f590919063ffffffff16565b9050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561197c573d6000803e3d6000fd5b5050506000601360146101000a81548160ff02191690831515021790555050565b806119ab576119aa611ab9565b5b6119b6848484611af6565b806119c4576119c3611cc1565b5b50505050565b60008060006119d7611cd5565b915091506119ee81836119f590919063ffffffff16565b9250505090565b6000611a3783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d73565b905092915050565b6000808303611a515760009050611ab3565b60008284611a5f9190612752565b9050828482611a6e919061289a565b14611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa590613016565b60405180910390fd5b809150505b92915050565b6000600c54148015611acd57506000600d54145b611af457600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080611b0887611dd6565b955095509550955095509550611b6686600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e3e90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611bfb85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8890919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c4781611ee6565b611c518483611fa3565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611cae919061234b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b6000806000600654905060006012600a611cef9190612707565b64a2fb4057ff611cff9190612752565b9050611d336012600a611d129190612707565b64a2fb4057ff611d229190612752565b6006546119f590919063ffffffff16565b821015611d66576006546012600a611d4b9190612707565b64a2fb4057ff611d5b9190612752565b935093505050611d6f565b81819350935050505b9091565b60008083118290611dba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db1919061218c565b60405180910390fd5b5060008385611dc9919061289a565b9050809150509392505050565b6000806000806000806000806000611df38a600c54600d54611fdd565b9250925092506000611e036119ca565b90506000806000611e168e878787612073565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000611e8083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061157a565b905092915050565b6000808284611e979190613036565b905083811015611edc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed3906130b6565b60405180910390fd5b8091505092915050565b6000611ef06119ca565b90506000611f078284611a3f90919063ffffffff16565b9050611f5b81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e8890919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b611fb882600654611e3e90919063ffffffff16565b600681905550611fd381600754611e8890919063ffffffff16565b6007819055505050565b6000806000806120096064611ffb888a611a3f90919063ffffffff16565b6119f590919063ffffffff16565b905060006120336064612025888b611a3f90919063ffffffff16565b6119f590919063ffffffff16565b9050600061205c8261204e858c611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b905080838395509550955050505093509350939050565b60008060008061208c8589611a3f90919063ffffffff16565b905060006120a38689611a3f90919063ffffffff16565b905060006120ba8789611a3f90919063ffffffff16565b905060006120e3826120d58587611e3e90919063ffffffff16565b611e3e90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561213657808201518184015260208101905061211b565b60008484015250505050565b6000601f19601f8301169050919050565b600061215e826120fc565b6121688185612107565b9350612178818560208601612118565b61218181612142565b840191505092915050565b600060208201905081810360008301526121a68184612153565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121e3826121b8565b9050919050565b6121f3816121d8565b81146121fe57600080fd5b50565b600081359050612210816121ea565b92915050565b6000819050919050565b61222981612216565b811461223457600080fd5b50565b60008135905061224681612220565b92915050565b60008060408385031215612263576122626121ae565b5b600061227185828601612201565b925050602061228285828601612237565b9150509250929050565b60008115159050919050565b6122a18161228c565b82525050565b60006020820190506122bc6000830184612298565b92915050565b6000819050919050565b60006122e76122e26122dd846121b8565b6122c2565b6121b8565b9050919050565b60006122f9826122cc565b9050919050565b600061230b826122ee565b9050919050565b61231b81612300565b82525050565b60006020820190506123366000830184612312565b92915050565b61234581612216565b82525050565b6000602082019050612360600083018461233c565b92915050565b60008060006060848603121561237f5761237e6121ae565b5b600061238d86828701612201565b935050602061239e86828701612201565b92505060406123af86828701612237565b9150509250925092565b600060ff82169050919050565b6123cf816123b9565b82525050565b60006020820190506123ea60008301846123c6565b92915050565b6123f9816121d8565b82525050565b600060208201905061241460008301846123f0565b92915050565b6000602082840312156124305761242f6121ae565b5b600061243e84828501612201565b91505092915050565b60006020828403121561245d5761245c6121ae565b5b600061246b84828501612237565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261249957612498612474565b5b8235905067ffffffffffffffff8111156124b6576124b5612479565b5b6020830191508360208202830111156124d2576124d161247e565b5b9250929050565b6124e28161228c565b81146124ed57600080fd5b50565b6000813590506124ff816124d9565b92915050565b60008060006040848603121561251e5761251d6121ae565b5b600084013567ffffffffffffffff81111561253c5761253b6121b3565b5b61254886828701612483565b9350935050602061255b868287016124f0565b9150509250925092565b6000806040838503121561257c5761257b6121ae565b5b600061258a85828601612201565b925050602061259b85828601612201565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561262b57808604811115612607576126066125a5565b5b60018516156126165780820291505b8081029050612624856125d4565b94506125eb565b94509492505050565b6000826126445760019050612700565b816126525760009050612700565b81600181146126685760028114612672576126a1565b6001915050612700565b60ff841115612684576126836125a5565b5b8360020a91508482111561269b5761269a6125a5565b5b50612700565b5060208310610133831016604e8410600b84101617156126d65782820a9050838111156126d1576126d06125a5565b5b612700565b6126e384848460016125e1565b925090508184048111156126fa576126f96125a5565b5b81810290505b9392505050565b600061271282612216565b915061271d836123b9565b925061274a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612634565b905092915050565b600061275d82612216565b915061276883612216565b925082820261277681612216565b9150828204841483151761278d5761278c6125a5565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006127ca602083612107565b91506127d582612794565b602082019050919050565b600060208201905081810360008301526127f9816127bd565b9050919050565b600060408201905061281560008301856123f0565b612822602083018461233c565b9392505050565b600081519050612838816124d9565b92915050565b600060208284031215612854576128536121ae565b5b600061286284828501612829565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006128a582612216565b91506128b083612216565b9250826128c0576128bf61286b565b5b828204905092915050565b7f73686f756c646e2774206265206c657373207468616e20302c30303031250000600082015250565b6000612901601e83612107565b915061290c826128cb565b602082019050919050565b60006020820190508181036000830152612930816128f4565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061297182612216565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129a3576129a26125a5565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a0a602683612107565b9150612a15826129ae565b604082019050919050565b60006020820190508181036000830152612a39816129fd565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a9c602483612107565b9150612aa782612a40565b604082019050919050565b60006020820190508181036000830152612acb81612a8f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b2e602283612107565b9150612b3982612ad2565b604082019050919050565b60006020820190508181036000830152612b5d81612b21565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612bc0602583612107565b9150612bcb82612b64565b604082019050919050565b60006020820190508181036000830152612bef81612bb3565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c52602383612107565b9150612c5d82612bf6565b604082019050919050565b60006020820190508181036000830152612c8181612c45565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612ce4602983612107565b9150612cef82612c88565b604082019050919050565b60006020820190508181036000830152612d1381612cd7565b9050919050565b6000612d2582612216565b9150612d3083612216565b9250828203905081811115612d4857612d476125a5565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000612daa602a83612107565b9150612db582612d4e565b604082019050919050565b60006020820190508181036000830152612dd981612d9d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050612e1e816121ea565b92915050565b600060208284031215612e3a57612e396121ae565b5b6000612e4884828501612e0f565b91505092915050565b6000819050919050565b6000612e76612e71612e6c84612e51565b6122c2565b612216565b9050919050565b612e8681612e5b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612ec1816121d8565b82525050565b6000612ed38383612eb8565b60208301905092915050565b6000602082019050919050565b6000612ef782612e8c565b612f018185612e97565b9350612f0c83612ea8565b8060005b83811015612f3d578151612f248882612ec7565b9750612f2f83612edf565b925050600181019050612f10565b5085935050505092915050565b600060a082019050612f5f600083018861233c565b612f6c6020830187612e7d565b8181036040830152612f7e8186612eec565b9050612f8d60608301856123f0565b612f9a608083018461233c565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613000602183612107565b915061300b82612fa4565b604082019050919050565b6000602082019050818103600083015261302f81612ff3565b9050919050565b600061304182612216565b915061304c83612216565b9250828201905080821115613064576130636125a5565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006130a0601b83612107565b91506130ab8261306a565b602082019050919050565b600060208201905081810360008301526130cf81613093565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212209d763afe1dae3754395764f9bb9586601d0ca69ea35337833e5532c0981ac72f64736f6c63430008130033

Deployed Bytecode Sourcemap

4694:11683:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6957:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7882:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5892:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7234:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8083:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6050:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7143:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5940:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6189:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7337:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2123:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7048:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13442:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12034:265;;;;;;;;;;;;;:::i;:::-;;7483:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13655:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16138:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7690:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2337:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6957:83;6994:13;7027:5;;;;;;;;;;;;;;;;;7020:12;;6957:83;:::o;7882:193::-;7984:4;8006:39;8015:12;:10;:12::i;:::-;8029:7;8038:6;8006:8;:39::i;:::-;8063:4;8056:11;;7882:193;;;;:::o;5892:41::-;;;;;;;;;;;;;:::o;7234:95::-;7287:7;4917:2;5262;:13;;;;:::i;:::-;5244:15;:31;;;;:::i;:::-;7307:14;;7234:95;:::o;8083:446::-;8215:4;8232:36;8242:6;8250:9;8261:6;8232:9;:36::i;:::-;8279:220;8302:6;8323:12;:10;:12::i;:::-;8350:138;8406:6;8350:138;;;;;;;;;;;;;;;;;:11;:19;8362:6;8350:19;;;;;;;;;;;;;;;:33;8370:12;:10;:12::i;:::-;8350:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8279:8;:220::i;:::-;8517:4;8510:11;;8083:446;;;;;:::o;6050:66::-;;;;:::o;7143:83::-;7184:5;4917:2;7202:16;;7143:83;:::o;5940:28::-;;;;;;;;;;;;;:::o;6189:32::-;;;;;;;;;:::o;7337:138::-;7403:7;7430:37;7450:7;:16;7458:7;7450:16;;;;;;;;;;;;;;;;7430:19;:37::i;:::-;7423:44;;7337:138;;;:::o;2123:79::-;2161:7;2188:6;;;;;;;;;;;2181:13;;2123:79;:::o;7048:87::-;7087:13;7120:7;;;;;;;;;;;;;;;;;7113:14;;7048:87;:::o;13442:201::-;2260:12;:10;:12::i;:::-;2250:22;;:6;;;;;;;;;;:22;;;2242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13536:20:::1;13566:14;13536:45;;13592:13;:22;;;13615:10;13627:7;13592:43;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13525:118;13442:201:::0;;:::o;12034:265::-;2260:12;:10;:12::i;:::-;2250:22;;:6;;;;;;;;;;:22;;;2242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12093:23:::1;12119:24;12137:4;12119:9;:24::i;:::-;12093:50;;12154:33;12171:15;12154:16;:33::i;:::-;12198:26;12227:21;12198:50;;12259:32;12272:18;12259:12;:32::i;:::-;12082:217;;12034:265::o:0;7483:199::-;7588:4;7610:42;7620:12;:10;:12::i;:::-;7634:9;7645:6;7610:9;:42::i;:::-;7670:4;7663:11;;7483:199;;;;:::o;13655:198::-;2260:12;:10;:12::i;:::-;2250:22;;:6;;;;;;;;;;:22;;;2242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13763:7:::1;4917:2;5262;:13;;;;:::i;:::-;5244:15;:31;;;;:::i;:::-;13753:17;;;;:::i;:::-;13742:7;:28;;13733:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13838:7;13816:19;:29;;;;13655:198:::0;:::o;16138:234::-;2260:12;:10;:12::i;:::-;2250:22;;:6;;;;;;;;;;:22;;;2242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16255:9:::1;16251:114;16274:8;;:15;;16270:1;:19;16251:114;;;16345:8;16311:18;:31;16330:8;;16339:1;16330:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16311:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;16291:3;;;;;:::i;:::-;;;;16251:114;;;;16138:234:::0;;;:::o;7690:184::-;7807:7;7839:11;:18;7851:5;7839:18;;;;;;;;;;;;;;;:27;7858:7;7839:27;;;;;;;;;;;;;;;;7832:34;;7690:184;;;;:::o;2337:244::-;2260:12;:10;:12::i;:::-;2250:22;;:6;;;;;;;;;;:22;;;2242:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2446:1:::1;2426:22;;:8;:22;;::::0;2418:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2536:8;2507:38;;2528:6;::::0;::::1;;;;;;;;2507:38;;;;;;;;;;;;2565:8;2556:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2337:244:::0;:::o;882:98::-;935:7;962:10;955:17;;882:98;:::o;9220:369::-;9364:1;9347:19;;:5;:19;;;9339:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9445:1;9426:21;;:7;:21;;;9418:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9527:6;9497:11;:18;9509:5;9497:18;;;;;;;;;;;;;;;:27;9516:7;9497:27;;;;;;;;;;;;;;;:36;;;;9565:7;9549:32;;9558:5;9549:32;;;9574:6;9549:32;;;;;;:::i;:::-;;;;;;;;9220:369;;;:::o;9597:1670::-;9735:1;9719:18;;:4;:18;;;9711:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9812:1;9798:16;;:2;:16;;;9790:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9882:1;9873:6;:10;9865:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9954:7;:5;:7::i;:::-;9946:15;;:4;:15;;;;:32;;;;;9971:7;:5;:7::i;:::-;9965:13;;:2;:13;;;;9946:32;9942:599;;;9997:28;10028:24;10046:4;10028:9;:24::i;:::-;9997:55;;10067:12;10106:19;;10082:20;:43;;10067:58;;10148:7;:18;;;;;10160:6;;;;;;;;;;;10159:7;10148:18;:43;;;;;10178:13;;;;;;;;;;;10170:21;;:4;:21;;;;10148:43;:58;;;;;10195:11;;;;;;;;;;;10148:58;:87;;;;;10211:18;:24;10230:4;10211:24;;;;;;;;;;;;;;;;;;;;;;;;;10210:25;10148:87;:114;;;;;10240:18;:22;10259:2;10240:22;;;;;;;;;;;;;;;;;;;;;;;;;10239:23;10148:114;10144:386;;;10283:38;10300:20;10283:16;:38::i;:::-;10340:26;10369:21;10340:50;;10434:1;10413:18;:22;10409:106;;;10460:35;10473:21;10460:12;:35::i;:::-;10409:106;10264:266;10144:386;9980:561;;9942:599;10553:12;10568:4;10553:19;;10617:18;:24;10636:4;10617:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10645:18;:22;10664:2;10645:22;;;;;;;;;;;;;;;;;;;;;;;;;10617:50;10616:102;;;;10681:13;;;;;;;;;;;10673:21;;:4;:21;;;;:44;;;;;10704:13;;;;;;;;;;;10698:19;;:2;:19;;;;10673:44;10616:102;10612:594;;;10745:5;10735:15;;10612:594;;;10828:13;;;;;;;;;;;10820:21;;:4;:21;;;:55;;;;;10859:15;;;;;;;;;;;10845:30;;:2;:30;;;;10820:55;10817:162;;;10908:14;;10896:9;:26;;;;10951:12;;10941:7;:22;;;;10817:162;11038:13;;;;;;;;;;;11032:19;;:2;:19;;;:55;;;;;11071:15;;;;;;;;;;;11055:32;;:4;:32;;;;11032:55;11028:165;;;11120:15;;11108:9;:27;;;;11164:13;;11154:7;:23;;;;11028:165;10612:594;11218:41;11233:4;11239:2;11243:6;11251:7;11218:14;:41::i;:::-;9700:1567;9597:1670;;;:::o;2945:224::-;3065:7;3098:1;3093;:6;;3101:12;3085:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3125:9;3141:1;3137;:5;;;;:::i;:::-;3125:17;;3160:1;3153:8;;;2945:224;;;;;:::o;8537:323::-;8632:7;8690;;8679;:18;;8657:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8778:19;8800:10;:8;:10::i;:::-;8778:32;;8828:24;8840:11;8828:7;:11;;:24;;;;:::i;:::-;8821:31;;;8537:323;;;:::o;11275:483::-;6271:5;6262:6;;:14;;;;;;;;;;;;;;;;;;11353:21:::1;11391:1;11377:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11353:40;;11422:4;11404;11409:1;11404:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11448:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11438:4;11443:1;11438:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11481:62;11498:4;11513:15;;;;;;;;;;;11531:11;11481:8;:62::i;:::-;11554:15;;;;;;;;;;;:66;;;11635:11;11661:1;11677:4;11704;11724:15;11554:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11342:416;6308:5:::0;6299:6;;:14;;;;;;;;;;;;;;;;;;11275:483;:::o;11766:258::-;6271:5;6262:6;;:14;;;;;;;;;;;;;;;;;;11835:23:::1;11861:6;11835:32;;11878:22;11903:52;11951:3;11903:43;11923:12;:22;;;11903:15;:19;;:43;;;;:::i;:::-;:47;;:52;;;;:::i;:::-;11878:77;;11974:16;;;;;;;;;;;11966:34;;:50;12001:14;11966:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11824:200;;6308:5:::0;6299:6;;:14;;;;;;;;;;;;;;;;;;11766:258;:::o;12309:282::-;12465:7;12460:28;;12474:14;:12;:14::i;:::-;12460:28;12499:44;12517:6;12525:9;12536:6;12499:17;:44::i;:::-;12559:7;12554:29;;12568:15;:13;:15::i;:::-;12554:29;12309:282;;;;:::o;15701:164::-;15743:7;15764:15;15781;15800:19;:17;:19::i;:::-;15763:56;;;;15837:20;15849:7;15837;:11;;:20;;;;:::i;:::-;15830:27;;;;15701:164;:::o;3431:132::-;3489:7;3516:39;3520:1;3523;3516:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3509:46;;3431:132;;;;:::o;3177:246::-;3235:7;3264:1;3259;:6;3255:47;;3289:1;3282:8;;;;3255:47;3312:9;3328:1;3324;:5;;;;:::i;:::-;3312:17;;3357:1;3352;3348;:5;;;;:::i;:::-;:10;3340:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3414:1;3407:8;;;3177:246;;;;;:::o;8868:219::-;8928:1;8915:9;;:14;:30;;;;;8944:1;8933:7;;:12;8915:30;8947:7;8911:43;8986:9;;8966:17;:29;;;;9024:7;;9006:15;:25;;;;9056:1;9044:9;:13;;;;9078:1;9068:7;:11;;;;8868:219;:::o;12599:610::-;12746:15;12776:23;12814:12;12841:23;12879:12;12906:13;12933:19;12944:7;12933:10;:19::i;:::-;12731:221;;;;;;;;;;;;12981:28;13001:7;12981;:15;12989:6;12981:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;12963:7;:15;12971:6;12963:15;;;;;;;;;;;;;;;:46;;;;13041:39;13064:15;13041:7;:18;13049:9;13041:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13020:7;:18;13028:9;13020:18;;;;;;;;;;;;;;;:60;;;;13091:16;13101:5;13091:9;:16::i;:::-;13118:23;13130:4;13136;13118:11;:23::i;:::-;13174:9;13157:44;;13166:6;13157:44;;;13185:15;13157:44;;;;;;:::i;:::-;;;;;;;;12720:489;;;;;;12599:610;;;:::o;9095:117::-;9151:17;;9139:9;:29;;;;9189:15;;9179:7;:25;;;;9095:117::o;15873:257::-;15924:7;15933;15953:15;15971:7;;15953:25;;15989:15;4917:2;5262;:13;;;;:::i;:::-;5244:15;:31;;;;:::i;:::-;15989:25;;16039:20;4917:2;5262;:13;;;;:::i;:::-;5244:15;:31;;;;:::i;:::-;16039:7;;:11;;:20;;;;:::i;:::-;16029:7;:30;16025:61;;;16069:7;;4917:2;5262;:13;;;;:::i;:::-;5244:15;:31;;;;:::i;:::-;16061:25;;;;;;;;16025:61;16105:7;16114;16097:25;;;;;;15873:257;;;:::o;3571:223::-;3691:7;3723:1;3719;:5;3726:12;3711:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3750:9;3766:1;3762;:5;;;;:::i;:::-;3750:17;;3785:1;3778:8;;;3571:223;;;;;:::o;14059:615::-;14159:7;14181;14203;14225;14247;14269;14305:23;14330:12;14344:13;14374:40;14386:7;14395:9;;14406:7;;14374:11;:40::i;:::-;14304:110;;;;;;14425:19;14447:10;:8;:10::i;:::-;14425:32;;14469:15;14486:23;14511:12;14540:46;14552:7;14561:4;14567:5;14574:11;14540;:46::i;:::-;14468:118;;;;;;14605:7;14614:15;14631:4;14637:15;14654:4;14660:5;14597:69;;;;;;;;;;;;;;;;;;;14059:615;;;;;;;:::o;2801:136::-;2859:7;2886:43;2890:1;2893;2886:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2879:50;;2801:136;;;;:::o;2614:179::-;2672:7;2692:9;2708:1;2704;:5;;;;:::i;:::-;2692:17;;2733:1;2728;:6;;2720:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2784:1;2777:8;;;2614:179;;;;:::o;13217:211::-;13270:19;13292:10;:8;:10::i;:::-;13270:32;;13313:13;13329:22;13339:11;13329:5;:9;;:22;;;;:::i;:::-;13313:38;;13387:33;13414:5;13387:7;:22;13403:4;13387:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;13362:7;:22;13378:4;13362:22;;;;;;;;;;;;;;;:58;;;;13259:169;;13217:211;:::o;13861:147::-;13939:17;13951:4;13939:7;;:11;;:17;;;;:::i;:::-;13929:7;:27;;;;13980:20;13995:4;13980:10;;:14;;:20;;;;:::i;:::-;13967:10;:33;;;;13861:147;;:::o;14682:469::-;14851:7;14873;14895;14930:12;14945:30;14971:3;14945:21;14957:8;14945:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;14930:45;;14986:13;15002:28;15026:3;15002:19;15014:6;15002:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;14986:44;;15041:23;15067:28;15089:5;15067:17;15079:4;15067:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15041:54;;15114:15;15131:4;15137:5;15106:37;;;;;;;;;14682:469;;;;;;;:::o;15159:534::-;15353:7;15375;15397;15432:15;15450:24;15462:11;15450:7;:11;;:24;;;;:::i;:::-;15432:42;;15485:12;15500:21;15509:11;15500:4;:8;;:21;;;;:::i;:::-;15485:36;;15532:13;15548:22;15558:11;15548:5;:9;;:22;;;;:::i;:::-;15532:38;;15581:23;15607:28;15629:5;15607:17;15619:4;15607:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15581:54;;15654:7;15663:15;15680:4;15646:39;;;;;;;;;;15159:534;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:60::-;3474:3;3495:5;3488:12;;3446:60;;;:::o;3512:142::-;3562:9;3595:53;3613:34;3622:24;3640:5;3622:24;:::i;:::-;3613:34;:::i;:::-;3595:53;:::i;:::-;3582:66;;3512:142;;;:::o;3660:126::-;3710:9;3743:37;3774:5;3743:37;:::i;:::-;3730:50;;3660:126;;;:::o;3792:152::-;3868:9;3901:37;3932:5;3901:37;:::i;:::-;3888:50;;3792:152;;;:::o;3950:183::-;4063:63;4120:5;4063:63;:::i;:::-;4058:3;4051:76;3950:183;;:::o;4139:274::-;4258:4;4296:2;4285:9;4281:18;4273:26;;4309:97;4403:1;4392:9;4388:17;4379:6;4309:97;:::i;:::-;4139:274;;;;:::o;4419:118::-;4506:24;4524:5;4506:24;:::i;:::-;4501:3;4494:37;4419:118;;:::o;4543:222::-;4636:4;4674:2;4663:9;4659:18;4651:26;;4687:71;4755:1;4744:9;4740:17;4731:6;4687:71;:::i;:::-;4543:222;;;;:::o;4771:619::-;4848:6;4856;4864;4913:2;4901:9;4892:7;4888:23;4884:32;4881:119;;;4919:79;;:::i;:::-;4881:119;5039:1;5064:53;5109:7;5100:6;5089:9;5085:22;5064:53;:::i;:::-;5054:63;;5010:117;5166:2;5192:53;5237:7;5228:6;5217:9;5213:22;5192:53;:::i;:::-;5182:63;;5137:118;5294:2;5320:53;5365:7;5356:6;5345:9;5341:22;5320:53;:::i;:::-;5310:63;;5265:118;4771:619;;;;;:::o;5396:86::-;5431:7;5471:4;5464:5;5460:16;5449:27;;5396:86;;;:::o;5488:112::-;5571:22;5587:5;5571:22;:::i;:::-;5566:3;5559:35;5488:112;;:::o;5606:214::-;5695:4;5733:2;5722:9;5718:18;5710:26;;5746:67;5810:1;5799:9;5795:17;5786:6;5746:67;:::i;:::-;5606:214;;;;:::o;5826:118::-;5913:24;5931:5;5913:24;:::i;:::-;5908:3;5901:37;5826:118;;:::o;5950:222::-;6043:4;6081:2;6070:9;6066:18;6058:26;;6094:71;6162:1;6151:9;6147:17;6138:6;6094:71;:::i;:::-;5950:222;;;;:::o;6178:329::-;6237:6;6286:2;6274:9;6265:7;6261:23;6257:32;6254:119;;;6292:79;;:::i;:::-;6254:119;6412:1;6437:53;6482:7;6473:6;6462:9;6458:22;6437:53;:::i;:::-;6427:63;;6383:117;6178:329;;;;:::o;6513:::-;6572:6;6621:2;6609:9;6600:7;6596:23;6592:32;6589:119;;;6627:79;;:::i;:::-;6589:119;6747:1;6772:53;6817:7;6808:6;6797:9;6793:22;6772:53;:::i;:::-;6762:63;;6718:117;6513:329;;;;:::o;6848:117::-;6957:1;6954;6947:12;6971:117;7080:1;7077;7070:12;7094:117;7203:1;7200;7193:12;7234:568;7307:8;7317:6;7367:3;7360:4;7352:6;7348:17;7344:27;7334:122;;7375:79;;:::i;:::-;7334:122;7488:6;7475:20;7465:30;;7518:18;7510:6;7507:30;7504:117;;;7540:79;;:::i;:::-;7504:117;7654:4;7646:6;7642:17;7630:29;;7708:3;7700:4;7692:6;7688:17;7678:8;7674:32;7671:41;7668:128;;;7715:79;;:::i;:::-;7668:128;7234:568;;;;;:::o;7808:116::-;7878:21;7893:5;7878:21;:::i;:::-;7871:5;7868:32;7858:60;;7914:1;7911;7904:12;7858:60;7808:116;:::o;7930:133::-;7973:5;8011:6;7998:20;7989:29;;8027:30;8051:5;8027:30;:::i;:::-;7930:133;;;;:::o;8069:698::-;8161:6;8169;8177;8226:2;8214:9;8205:7;8201:23;8197:32;8194:119;;;8232:79;;:::i;:::-;8194:119;8380:1;8369:9;8365:17;8352:31;8410:18;8402:6;8399:30;8396:117;;;8432:79;;:::i;:::-;8396:117;8545:80;8617:7;8608:6;8597:9;8593:22;8545:80;:::i;:::-;8527:98;;;;8323:312;8674:2;8700:50;8742:7;8733:6;8722:9;8718:22;8700:50;:::i;:::-;8690:60;;8645:115;8069:698;;;;;:::o;8773:474::-;8841:6;8849;8898:2;8886:9;8877:7;8873:23;8869:32;8866:119;;;8904:79;;:::i;:::-;8866:119;9024:1;9049:53;9094:7;9085:6;9074:9;9070:22;9049:53;:::i;:::-;9039:63;;8995:117;9151:2;9177:53;9222:7;9213:6;9202:9;9198:22;9177:53;:::i;:::-;9167:63;;9122:118;8773:474;;;;;:::o;9253:180::-;9301:77;9298:1;9291:88;9398:4;9395:1;9388:15;9422:4;9419:1;9412:15;9439:102;9481:8;9528:5;9525:1;9521:13;9500:34;;9439:102;;;:::o;9547:848::-;9608:5;9615:4;9639:6;9630:15;;9663:5;9654:14;;9677:712;9698:1;9688:8;9685:15;9677:712;;;9793:4;9788:3;9784:14;9778:4;9775:24;9772:50;;;9802:18;;:::i;:::-;9772:50;9852:1;9842:8;9838:16;9835:451;;;10267:4;10260:5;10256:16;10247:25;;9835:451;10317:4;10311;10307:15;10299:23;;10347:32;10370:8;10347:32;:::i;:::-;10335:44;;9677:712;;;9547:848;;;;;;;:::o;10401:1073::-;10455:5;10646:8;10636:40;;10667:1;10658:10;;10669:5;;10636:40;10695:4;10685:36;;10712:1;10703:10;;10714:5;;10685:36;10781:4;10829:1;10824:27;;;;10865:1;10860:191;;;;10774:277;;10824:27;10842:1;10833:10;;10844:5;;;10860:191;10905:3;10895:8;10892:17;10889:43;;;10912:18;;:::i;:::-;10889:43;10961:8;10958:1;10954:16;10945:25;;10996:3;10989:5;10986:14;10983:40;;;11003:18;;:::i;:::-;10983:40;11036:5;;;10774:277;;11160:2;11150:8;11147:16;11141:3;11135:4;11132:13;11128:36;11110:2;11100:8;11097:16;11092:2;11086:4;11083:12;11079:35;11063:111;11060:246;;;11216:8;11210:4;11206:19;11197:28;;11251:3;11244:5;11241:14;11238:40;;;11258:18;;:::i;:::-;11238:40;11291:5;;11060:246;11331:42;11369:3;11359:8;11353:4;11350:1;11331:42;:::i;:::-;11316:57;;;;11405:4;11400:3;11396:14;11389:5;11386:25;11383:51;;;11414:18;;:::i;:::-;11383:51;11463:4;11456:5;11452:16;11443:25;;10401:1073;;;;;;:::o;11480:281::-;11538:5;11562:23;11580:4;11562:23;:::i;:::-;11554:31;;11606:25;11622:8;11606:25;:::i;:::-;11594:37;;11650:104;11687:66;11677:8;11671:4;11650:104;:::i;:::-;11641:113;;11480:281;;;;:::o;11767:410::-;11807:7;11830:20;11848:1;11830:20;:::i;:::-;11825:25;;11864:20;11882:1;11864:20;:::i;:::-;11859:25;;11919:1;11916;11912:9;11941:30;11959:11;11941:30;:::i;:::-;11930:41;;12120:1;12111:7;12107:15;12104:1;12101:22;12081:1;12074:9;12054:83;12031:139;;12150:18;;:::i;:::-;12031:139;11815:362;11767:410;;;;:::o;12183:182::-;12323:34;12319:1;12311:6;12307:14;12300:58;12183:182;:::o;12371:366::-;12513:3;12534:67;12598:2;12593:3;12534:67;:::i;:::-;12527:74;;12610:93;12699:3;12610:93;:::i;:::-;12728:2;12723:3;12719:12;12712:19;;12371:366;;;:::o;12743:419::-;12909:4;12947:2;12936:9;12932:18;12924:26;;12996:9;12990:4;12986:20;12982:1;12971:9;12967:17;12960:47;13024:131;13150:4;13024:131;:::i;:::-;13016:139;;12743:419;;;:::o;13168:332::-;13289:4;13327:2;13316:9;13312:18;13304:26;;13340:71;13408:1;13397:9;13393:17;13384:6;13340:71;:::i;:::-;13421:72;13489:2;13478:9;13474:18;13465:6;13421:72;:::i;:::-;13168:332;;;;;:::o;13506:137::-;13560:5;13591:6;13585:13;13576:22;;13607:30;13631:5;13607:30;:::i;:::-;13506:137;;;;:::o;13649:345::-;13716:6;13765:2;13753:9;13744:7;13740:23;13736:32;13733:119;;;13771:79;;:::i;:::-;13733:119;13891:1;13916:61;13969:7;13960:6;13949:9;13945:22;13916:61;:::i;:::-;13906:71;;13862:125;13649:345;;;;:::o;14000:180::-;14048:77;14045:1;14038:88;14145:4;14142:1;14135:15;14169:4;14166:1;14159:15;14186:185;14226:1;14243:20;14261:1;14243:20;:::i;:::-;14238:25;;14277:20;14295:1;14277:20;:::i;:::-;14272:25;;14316:1;14306:35;;14321:18;;:::i;:::-;14306:35;14363:1;14360;14356:9;14351:14;;14186:185;;;;:::o;14377:180::-;14517:32;14513:1;14505:6;14501:14;14494:56;14377:180;:::o;14563:366::-;14705:3;14726:67;14790:2;14785:3;14726:67;:::i;:::-;14719:74;;14802:93;14891:3;14802:93;:::i;:::-;14920:2;14915:3;14911:12;14904:19;;14563:366;;;:::o;14935:419::-;15101:4;15139:2;15128:9;15124:18;15116:26;;15188:9;15182:4;15178:20;15174:1;15163:9;15159:17;15152:47;15216:131;15342:4;15216:131;:::i;:::-;15208:139;;14935:419;;;:::o;15360:180::-;15408:77;15405:1;15398:88;15505:4;15502:1;15495:15;15529:4;15526:1;15519:15;15546:233;15585:3;15608:24;15626:5;15608:24;:::i;:::-;15599:33;;15654:66;15647:5;15644:77;15641:103;;15724:18;;:::i;:::-;15641:103;15771:1;15764:5;15760:13;15753:20;;15546:233;;;:::o;15785:225::-;15925:34;15921:1;15913:6;15909:14;15902:58;15994:8;15989:2;15981:6;15977:15;15970:33;15785:225;:::o;16016:366::-;16158:3;16179:67;16243:2;16238:3;16179:67;:::i;:::-;16172:74;;16255:93;16344:3;16255:93;:::i;:::-;16373:2;16368:3;16364:12;16357:19;;16016:366;;;:::o;16388:419::-;16554:4;16592:2;16581:9;16577:18;16569:26;;16641:9;16635:4;16631:20;16627:1;16616:9;16612:17;16605:47;16669:131;16795:4;16669:131;:::i;:::-;16661:139;;16388:419;;;:::o;16813:223::-;16953:34;16949:1;16941:6;16937:14;16930:58;17022:6;17017:2;17009:6;17005:15;16998:31;16813:223;:::o;17042:366::-;17184:3;17205:67;17269:2;17264:3;17205:67;:::i;:::-;17198:74;;17281:93;17370:3;17281:93;:::i;:::-;17399:2;17394:3;17390:12;17383:19;;17042:366;;;:::o;17414:419::-;17580:4;17618:2;17607:9;17603:18;17595:26;;17667:9;17661:4;17657:20;17653:1;17642:9;17638:17;17631:47;17695:131;17821:4;17695:131;:::i;:::-;17687:139;;17414:419;;;:::o;17839:221::-;17979:34;17975:1;17967:6;17963:14;17956:58;18048:4;18043:2;18035:6;18031:15;18024:29;17839:221;:::o;18066:366::-;18208:3;18229:67;18293:2;18288:3;18229:67;:::i;:::-;18222:74;;18305:93;18394:3;18305:93;:::i;:::-;18423:2;18418:3;18414:12;18407:19;;18066:366;;;:::o;18438:419::-;18604:4;18642:2;18631:9;18627:18;18619:26;;18691:9;18685:4;18681:20;18677:1;18666:9;18662:17;18655:47;18719:131;18845:4;18719:131;:::i;:::-;18711:139;;18438:419;;;:::o;18863:224::-;19003:34;18999:1;18991:6;18987:14;18980:58;19072:7;19067:2;19059:6;19055:15;19048:32;18863:224;:::o;19093:366::-;19235:3;19256:67;19320:2;19315:3;19256:67;:::i;:::-;19249:74;;19332:93;19421:3;19332:93;:::i;:::-;19450:2;19445:3;19441:12;19434:19;;19093:366;;;:::o;19465:419::-;19631:4;19669:2;19658:9;19654:18;19646:26;;19718:9;19712:4;19708:20;19704:1;19693:9;19689:17;19682:47;19746:131;19872:4;19746:131;:::i;:::-;19738:139;;19465:419;;;:::o;19890:222::-;20030:34;20026:1;20018:6;20014:14;20007:58;20099:5;20094:2;20086:6;20082:15;20075:30;19890:222;:::o;20118:366::-;20260:3;20281:67;20345:2;20340:3;20281:67;:::i;:::-;20274:74;;20357:93;20446:3;20357:93;:::i;:::-;20475:2;20470:3;20466:12;20459:19;;20118:366;;;:::o;20490:419::-;20656:4;20694:2;20683:9;20679:18;20671:26;;20743:9;20737:4;20733:20;20729:1;20718:9;20714:17;20707:47;20771:131;20897:4;20771:131;:::i;:::-;20763:139;;20490:419;;;:::o;20915:228::-;21055:34;21051:1;21043:6;21039:14;21032:58;21124:11;21119:2;21111:6;21107:15;21100:36;20915:228;:::o;21149:366::-;21291:3;21312:67;21376:2;21371:3;21312:67;:::i;:::-;21305:74;;21388:93;21477:3;21388:93;:::i;:::-;21506:2;21501:3;21497:12;21490:19;;21149:366;;;:::o;21521:419::-;21687:4;21725:2;21714:9;21710:18;21702:26;;21774:9;21768:4;21764:20;21760:1;21749:9;21745:17;21738:47;21802:131;21928:4;21802:131;:::i;:::-;21794:139;;21521:419;;;:::o;21946:194::-;21986:4;22006:20;22024:1;22006:20;:::i;:::-;22001:25;;22040:20;22058:1;22040:20;:::i;:::-;22035:25;;22084:1;22081;22077:9;22069:17;;22108:1;22102:4;22099:11;22096:37;;;22113:18;;:::i;:::-;22096:37;21946:194;;;;:::o;22146:229::-;22286:34;22282:1;22274:6;22270:14;22263:58;22355:12;22350:2;22342:6;22338:15;22331:37;22146:229;:::o;22381:366::-;22523:3;22544:67;22608:2;22603:3;22544:67;:::i;:::-;22537:74;;22620:93;22709:3;22620:93;:::i;:::-;22738:2;22733:3;22729:12;22722:19;;22381:366;;;:::o;22753:419::-;22919:4;22957:2;22946:9;22942:18;22934:26;;23006:9;23000:4;22996:20;22992:1;22981:9;22977:17;22970:47;23034:131;23160:4;23034:131;:::i;:::-;23026:139;;22753:419;;;:::o;23178:180::-;23226:77;23223:1;23216:88;23323:4;23320:1;23313:15;23347:4;23344:1;23337:15;23364:143;23421:5;23452:6;23446:13;23437:22;;23468:33;23495:5;23468:33;:::i;:::-;23364:143;;;;:::o;23513:351::-;23583:6;23632:2;23620:9;23611:7;23607:23;23603:32;23600:119;;;23638:79;;:::i;:::-;23600:119;23758:1;23783:64;23839:7;23830:6;23819:9;23815:22;23783:64;:::i;:::-;23773:74;;23729:128;23513:351;;;;:::o;23870:85::-;23915:7;23944:5;23933:16;;23870:85;;;:::o;23961:158::-;24019:9;24052:61;24070:42;24079:32;24105:5;24079:32;:::i;:::-;24070:42;:::i;:::-;24052:61;:::i;:::-;24039:74;;23961:158;;;:::o;24125:147::-;24220:45;24259:5;24220:45;:::i;:::-;24215:3;24208:58;24125:147;;:::o;24278:114::-;24345:6;24379:5;24373:12;24363:22;;24278:114;;;:::o;24398:184::-;24497:11;24531:6;24526:3;24519:19;24571:4;24566:3;24562:14;24547:29;;24398:184;;;;:::o;24588:132::-;24655:4;24678:3;24670:11;;24708:4;24703:3;24699:14;24691:22;;24588:132;;;:::o;24726:108::-;24803:24;24821:5;24803:24;:::i;:::-;24798:3;24791:37;24726:108;;:::o;24840:179::-;24909:10;24930:46;24972:3;24964:6;24930:46;:::i;:::-;25008:4;25003:3;24999:14;24985:28;;24840:179;;;;:::o;25025:113::-;25095:4;25127;25122:3;25118:14;25110:22;;25025:113;;;:::o;25174:732::-;25293:3;25322:54;25370:5;25322:54;:::i;:::-;25392:86;25471:6;25466:3;25392:86;:::i;:::-;25385:93;;25502:56;25552:5;25502:56;:::i;:::-;25581:7;25612:1;25597:284;25622:6;25619:1;25616:13;25597:284;;;25698:6;25692:13;25725:63;25784:3;25769:13;25725:63;:::i;:::-;25718:70;;25811:60;25864:6;25811:60;:::i;:::-;25801:70;;25657:224;25644:1;25641;25637:9;25632:14;;25597:284;;;25601:14;25897:3;25890:10;;25298:608;;;25174:732;;;;:::o;25912:831::-;26175:4;26213:3;26202:9;26198:19;26190:27;;26227:71;26295:1;26284:9;26280:17;26271:6;26227:71;:::i;:::-;26308:80;26384:2;26373:9;26369:18;26360:6;26308:80;:::i;:::-;26435:9;26429:4;26425:20;26420:2;26409:9;26405:18;26398:48;26463:108;26566:4;26557:6;26463:108;:::i;:::-;26455:116;;26581:72;26649:2;26638:9;26634:18;26625:6;26581:72;:::i;:::-;26663:73;26731:3;26720:9;26716:19;26707:6;26663:73;:::i;:::-;25912:831;;;;;;;;:::o;26749:220::-;26889:34;26885:1;26877:6;26873:14;26866:58;26958:3;26953:2;26945:6;26941:15;26934:28;26749:220;:::o;26975:366::-;27117:3;27138:67;27202:2;27197:3;27138:67;:::i;:::-;27131:74;;27214:93;27303:3;27214:93;:::i;:::-;27332:2;27327:3;27323:12;27316:19;;26975:366;;;:::o;27347:419::-;27513:4;27551:2;27540:9;27536:18;27528:26;;27600:9;27594:4;27590:20;27586:1;27575:9;27571:17;27564:47;27628:131;27754:4;27628:131;:::i;:::-;27620:139;;27347:419;;;:::o;27772:191::-;27812:3;27831:20;27849:1;27831:20;:::i;:::-;27826:25;;27865:20;27883:1;27865:20;:::i;:::-;27860:25;;27908:1;27905;27901:9;27894:16;;27929:3;27926:1;27923:10;27920:36;;;27936:18;;:::i;:::-;27920:36;27772:191;;;;:::o;27969:177::-;28109:29;28105:1;28097:6;28093:14;28086:53;27969:177;:::o;28152:366::-;28294:3;28315:67;28379:2;28374:3;28315:67;:::i;:::-;28308:74;;28391:93;28480:3;28391:93;:::i;:::-;28509:2;28504:3;28500:12;28493:19;;28152:366;;;:::o;28524:419::-;28690:4;28728:2;28717:9;28713:18;28705:26;;28777:9;28771:4;28767:20;28763:1;28752:9;28748:17;28741:47;28805:131;28931:4;28805:131;:::i;:::-;28797:139;;28524:419;;;:::o

Swarm Source

ipfs://9d763afe1dae3754395764f9bb9586601d0ca69ea35337833e5532c0981ac72f

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.